Laden...

Daten aus Dataset in Listbox ausgeben

Erstellt von Fitzel69 vor 7 Jahren Letzter Beitrag vor 7 Jahren 7.949 Views
F
Fitzel69 Themenstarter:in
45 Beiträge seit 2015
vor 7 Jahren
Daten aus Dataset in Listbox ausgeben

SQL Server 2008 R2 Std

Hallo zusammen,

anbei folgendes Problem.
Ich möchte zum Üben Daten aus einer SQL Datenbank auslesen, und die
Daten dann aus dem Dataset in einer Listbox ausgeben
Buch ( Visual C# 2012 mit Visual Express Studio 2012 Express) vom Rheinwerkverlag

private void CMD_Read_Click(object sender, EventArgs e)
        {
// Verbindung erstellen und Datenbank anbinden
SqlConnection con_dataset = new SqlConnection("Datasource = local ; Database = AdventureworksDW2008R2  ; Trusted_Connction = true    " );

// Container für SQL Befehl erstellen und mit Daten füllen
SqlCommand con_cmd = new SqlCommand("select * from dbo.DimCurrency");

// SQL Dataadapter erstellen und mit Werten füllen
SqlDataAdapter da = new SqlDataAdapter();

                       
// Dataset mit dem Namen " Alles erstellen
DataSet ds = new DataSet();

da.Fill(ds, "artikel");

DataTable tbl = ds.Tables["Artikel"];

  for (int i = 0; i < tbl.Rows.Count; i++)
{
LB_Dataset.Items.Add(tbl.Rows[i]["CurrencyKey"], tbl.Rows[i]["CurrencyAlternateKey"], tbl.Rows[i]["CurrencyName"]);
}

Fehlermeldung :

Fehlermeldung:
Keine Überladung für die ADD- Methode nimmt 3 Argumente an

Für die Hilfe bedanke ich mich schon mal

Hinweis von Coffeebean vor 7 Jahren

Bitte benutze die richtigen Code-Tags [Hinweis] Wie poste ich richtig?

2.207 Beiträge seit 2011
vor 7 Jahren

Hallo Fitzel69,

die Fehlermeldung ist recht eindeutig. Du übergibst an die Add-Methode 3 Parameter. Die Add-Methode will aber keine 3 Parameter, sondern was anderes. Daher knallt es da.

Gruss

Coffeebean

F
Fitzel69 Themenstarter:in
45 Beiträge seit 2015
vor 7 Jahren

Servus Coffebean..........

erst mal Danke für deine Antwort

ein paar "Rechtschreibfehler habe ich schon gefunden. Allerdings :

Es steht genau so im Buch........

4.938 Beiträge seit 2008
vor 7 Jahren

Hallo,

dann ist das Buch fehlerhaft. Die ListBox.Items.Add-Methode erwartet genau einen Parameter, der dann als Text (mittels der ToString()-Methode) angezeigt wird.

Beispiele s.a. Gewusst wie: Hinzufügen und Entfernen von Elementen in bzw. aus ComboBox-, ListBox- oder CheckedListBox-Steuerelementen in Windows Forms.

Also entweder die einzelnen Tabellenspalten per + (und Trennzeichen) verbinden oder alternativ evtl. eine ListView mit verschiedenen Spalten erstellen: C# ListView Control (with Details View).

PS: Das Buch Visual C# 2012 behandelt doch gar nicht mehr WinForms, sondern nur WPF (und die Steuerelement sind nicht kompatibel zueinander).

PPS: Vllt. bin ich auch nur verwirrt, und du verwendest doch schon WPF? Mit WPF ist es jedoch üblich, keinen CodeBehind mehr zu haben, sondern mittels MVVM zu arbeiten, d.h. keine explizite OnClick-Methode, sondern per Command - aber das vermittelt das Buch leider nicht.

Zu WPF kann ich dir die Seite WPF Tutorial empfehlen, d.h. konkret ListBox Control.

F
Fitzel69 Themenstarter:in
45 Beiträge seit 2015
vor 7 Jahren

Danke Th69

ich bin totaler Anfänger .....mit extremer Begeisterung

Das Buch hat bisher gut funktioniert. Ich kann dir aber nicht sagen, ob es für einen Anfänger wie mich geeignet ist oder nicht. Ich habe auf einen Ratschlag geachtet.

Ich erstelle mit der Windows Forms eine "Oberfläche" und Editiere anschließend
den Code manuell / händisch........ich versuche halt zu verstehen, was ich
mache

Für eure / deine Tips bin ich dankbar..............

Die Fehler im Buch....................erkenne ich nicht

2.207 Beiträge seit 2011
vor 7 Jahren

Hallo Fitzel69,

Ich erstelle mit der Windows Forms eine "Oberfläche" und Editiere anschließend
den Code manuell / händisch........ich versuche halt zu verstehen, was ich
mache

Bitte versuche deine Genken- und oder Sprechpausen nicht mit Punkten darzustellen. Das macht es nur schwerer zu lesen.

Den Code händisch zu editieren ist auch okay, nur nicht den Designer-Code. Der wird immer neu generiert.

Sonst musst du Code meist schon manuell schreiben.

Die Fehler im Buch [...] erkenne ich nicht

Dann hast du es doch falsch abgeschrieben. 😃

Gruss

Coffeebean

4.938 Beiträge seit 2008
vor 7 Jahren

Hallo Fitzel69,

auf welches Kapitel im Buch beziehst du dich denn mit der Add-Methode?

F
Fitzel69 Themenstarter:in
45 Beiträge seit 2015
vor 7 Jahren

Kapitel 34.2.4 ( Beispiel)

Ich habe eine Anfrage zu dem Thema beim VErlag gestellt
Die bestätigen das die Info korrekt ist

4.938 Beiträge seit 2008
vor 7 Jahren

Also wenn du 34.2.4 Der Zugriff auf die Ergebnisliste meinst, dort werden aber mittels der Konsole die Daten ausgegeben und die WriteLine-Methode funktioniert nun mal anders als die ListBox.Items.Add.

Du kannst aber mittels String.Format das gleiche erreichen:


LB_Dataset.Items.Add(String.Format("{0}, {1}, {2}", tbl.Rows[i]["CurrencyKey"], tbl.Rows[i]["CurrencyAlternateKey"], tbl.Rows[i]["CurrencyName"])):

Wichtig beim Programmieren ist es, die genauen Parameter einer Methode zu kennen (und zu benutzen) - notfalls in der Doku nachlesen.

F
Fitzel69 Themenstarter:in
45 Beiträge seit 2015
vor 7 Jahren

Danke Th69..............

Leider nicht drauf geachtet. Kein Witz. Werde ich gleich testen

Allerdings kriege ich die Writeline Methode nicht ausgegeben. Da fehlt mir noch
das Wissen ob ich einen Zusätzlichen Namensspace aufrufen muß.
Wenn ich Writeline eingebe, dann erscheint nichts ( auch keine Fehler) auf dem Display

2.207 Beiträge seit 2011
vor 7 Jahren

Hallo Fitzel69,

gib uns den Code, der nicht funktioniert, statt ihn zu beschrieben. Hilf uns dir zu helfen 😃

Gruss

Coffeebean

F
Fitzel69 Themenstarter:in
45 Beiträge seit 2015
vor 7 Jahren

Anbei der Text

Ich habe die Ausgabe komplett reduziert, auf die Zahl _

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;


namespace Dataset
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void CMD_Close_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void CMD_Read_Click(object sender, EventArgs e)
        {
            
            
            
// Verbindung erstellen und Datenbank anbinden
SqlConnection con_dataset = new SqlConnection("Data Source = local ; Database = AdventureworksDW2008R2  ; Trusted_Connection = true    " );

// Container für SQL Befehl erstellen und mit Daten füllen
SqlCommand con_cmd = new SqlCommand("select CurrencyName from dbo.DimCurrency");
string str_sql = "Select CurrencyName from dbo.DimCurrency where ";
// SQL Dataadapter erstellen und mit Werten füllen
 SqlDataAdapter da = new SqlDataAdapter();

                       
 // Dataset mit dem Namen " Alles erstellen
 DataSet ds = new DataSet();

 da.Fill(ds);

 DataTable tbl = ds.Tables["BSP"];

            for (int i = 0; i < tbl.Rows.Count; i++)
            {
                LB_Dataset.Items.Add(tbl.Rows[i]);


            }

        }
    }
}
D
985 Beiträge seit 2014
vor 7 Jahren

Leseschwäche?

Moderationshinweis von Coffeebean (17.03.2017 13:50):

Bitte benutze die richtigen Code-Tags
>

2.298 Beiträge seit 2010
vor 7 Jahren

Nö, hast du nicht. Einziges was du getan hast, ist dass du jetzt deine "DataRow" als Item anhängst.

Was spricht für dich denn gegen den folgenden Ansatz?


LB_Dataset.DataSource = ds.Tables["BSP"];
LB_Dataset.DisplayMember = "CurrencyName";

Wenn du mehrere Daten ausgeben willst, nimm das DataGridView oder passe dein SQL-Statement entsprechend an. Beim DataGridView reicht im ersten Moment dann auch einfach folgendes:


DataGridView.DataSource = ds.Tables["BSP"];

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

F
Fitzel69 Themenstarter:in
45 Beiträge seit 2015
vor 7 Jahren

Sorry,

falsch interpretiert..........

Ich will aus einer Windows Form Anwendung per Consolen Anwendung
die Infos ausgeben. Das klappt aber nicht. Besser gesagt, ich weiß nicht wie

2.298 Beiträge seit 2010
vor 7 Jahren

Warum willst du Infos aus einer Forms-Anwendung in der Konsole ausgeben? Setzen wir mal an der Stelle an.

Wozu benötigst du denn die Form, wenn die Ausgaben sowieso in der Konsole erfolgen sollen? Dann erstelle doch gleich eine Konsolenanwendung.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

2.207 Beiträge seit 2011
vor 7 Jahren

Hallo Fitzel96,

Bitte halte dich an die Regeln: Benutze Code-Tags [Hinweis] Wie poste ich richtig? und bitte versuche deine Genken- und oder Sprechpausen nicht mit Punkten darzustellen. Das macht es nur schwerer zu lesen!

Gruss

Coffeebean

F
Fitzel69 Themenstarter:in
45 Beiträge seit 2015
vor 7 Jahren

Sorry,

falsch interpretiert..........

Ich will aus einer Windows Form Anwendung per Consolen Anwendung
die Infos ausgeben. Das klappt aber nicht. Besser gesagt, ich weiß nicht wie

Sorry

4.938 Beiträge seit 2008
vor 7 Jahren

Hast du denn mal meine "String.Format"-Methode probiert?

Warum denn jetzt auf einmal Konsole? Willst du zusätzlich zur Windows Forms-Anwendung ein Konsolenfenster öffnen?
Oder aus der Konsole heraus das Windows Forms-Programm starten und dabei dann die Ausgaben in der Konsole (zusätzlich) sehen?

F
Fitzel69 Themenstarter:in
45 Beiträge seit 2015
vor 7 Jahren

Servus,

ich habe versucht mich an die Übung im Buch zu halten. Und da wird die Konsole
als Ausgabe Medium angesteuert

Am String Format arbeite ich gerade, ist aber für einen Anfänger wie mich ein
bischen schwerer. Zumal ich einen Überschneidungsfehler im String Bereich bekomme,den ich erst mal analysieren muss.

Merci

2.207 Beiträge seit 2011
vor 7 Jahren

Hallo Fitzel69,

Am String Format arbeite ich gerade, ist aber für einen Anfänger wie mich ein
bischen schwerer. Zumal ich einen Überschneidungsfehler im String Bereich bekomme,den ich erst mal analysieren muss.

das ist kein Problem. Schau doch einfach mal in Beispielen, wie mit Strings umgegangen wird. Das ist einer der ersten Schritte wenn man anfängt.

[FAQ] Wie finde ich den Einstieg in C#?
[Hinweis] Bitte schau in die SDK-/MSDN-Doku

Ich bin mir sicher spätestens da wirst du über Strings und Infos mit deren Umgang fündig.

Gruss

Coffeebean

2.298 Beiträge seit 2010
vor 7 Jahren

ich habe versucht mich an die Übung im Buch zu halten. Und da wird die Konsole
als Ausgabe Medium angesteuert

Dann wird die Anwendung sicher eine reine Konsolenanwendung sein. - Mein Vorschlag: Erstelle ein neues Projekt als Konsolenanwendung und übernimm deine Funktionalität in diese.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

F
Fitzel69 Themenstarter:in
45 Beiträge seit 2015
vor 7 Jahren

Servus,

es funktioniert mit dir String.Format Methode. Daher vielen Dank an alle
hier.
Ist nicht immer leicht, zwischen einem Buch und euren wirklich guten Tips zu unterscheiden, geschweige denn, die Vorschläge direkt zu verstehen.

Merci noch mal