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
Bitte benutze die richtigen Code-Tags [Hinweis] Wie poste ich richtig?
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
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
Servus Coffebean..........
erst mal Danke für deine Antwort
ein paar "Rechtschreibfehler habe ich schon gefunden. Allerdings :
Es steht genau so im Buch........
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.
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
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
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
Hallo Fitzel69,
auf welches Kapitel im Buch beziehst du dich denn mit der Add-Methode?
Kapitel 34.2.4 ( Beispiel)
Ich habe eine Anfrage zu dem Thema beim VErlag gestellt
Die bestätigen das die Info korrekt ist
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.
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
Hallo Fitzel69,
gib uns den Code, der nicht funktioniert, statt ihn zu beschrieben. Hilf uns dir zu helfen 😃
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
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]);
}
}
}
}
Leseschwäche?
Moderationshinweis von Coffeebean (17.03.2017 13:50):
Bitte benutze die richtigen Code-Tags
>
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 |
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
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 |
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
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
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
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?
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
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
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
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 |
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