Compilierfehler beim Quelltext
-
Hallo Zusammen,
ich bin ziemlicher Einsteiger in Windows-Forms Anwendungen.
Da ich mit einem Buch arbeite, ist es auch kein Geheimnis, dass
ich die Projekte teilweise abtippe, um daraus zu lernen und damit herumzuspielen.
Nun habe ich einen Quelltext, bei dem ein erstaunlicher Fehler ist:
bei der Funktioncmd.ExecuteReader();
in Z 70 wird ExecuteReader als nicht vorhanden in den eingebundenen Bibliotheken bezeichnet...
Ich kann den Fehler selbst nicht finden - wahrscheinlich, ein ärgerlicher Anfängerfehler. Ich bitte, mich verständisvoll darauf aufmerksam zu machen, da ich ja noch Schüler bin ;), und ich diese Fehler in Zukunft ja auch vermeiden möchte.
Also hier der Quelltext:using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Collections; using System.Data.OleDb; namespace Adressbuch { public partial class Form1 : Form { public Form1() { InitializeComponent(); } OleDbConnection con = new OleDbConnection(); OleDbCommand cmd = new OleDbCommand(); OleDbDataReader reader; ArrayList pnummer = new ArrayList(); private void Form1_Load(object sender, EventArgs e) { con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=D:\\Dokumente\\Access-Datein\\firma.mdb"; cmd.Connection = con; } private void cmdAllesehen_Click(object sender, EventArgs e) { AlleSehen(); } private void AlleSehen() { try { con.Open(); cmd.CommandText = "select * from personen"; Ausgabe(); } catch (Exception ex) { MessageBox.Show(ex.Message); } con.Close(); txtName.Text = " "; txtVorname.Text = " "; txtPersonalnummer.Text = " "; txtGehalt.Text = " "; txtGeburtstag.Text = " "; } private void Ausgabe() { DateTime geburtstag; reader = cmd.ExcecuteReader(); lstTab.Items.Clear(); pnummer.Clear(); while (reader.Read()) { geburtstag = Convert.ToDateTime( reader["geburtstag"]); lstTab.Items.Add(reader["name"] + " # " + reader["vorname"] + " # " + reader["personalnummer"] + " # " + reader["gehalt"] + " # " + geburtstag.ToShortDateString()); pnummer.Add(reader["personalnummer"]); } reader.Close(); } } }
lg,
Zweistein97
-
Hi,
im Quellcode steht
reader = cmd.ExcecuteReader();
Vergleich das nochmal mit dem was du oben geschrieben hast.
-
Danke dir- ich wusste doch, dass dies ein ziemlich dummer Fehler sein muss...
Aber manchmal findet man sie halt wesentlich mit Hilfe anderer!Hier habe ich noch einen - für mich- unerklärlichen Fehler (diesmal Stimmt die Rechtschreibung):
pnummer[lstTab.SelectedIndex];
in Z 136, wird die gleiche Fehlermeldung ausgegeben, wie bei meinem ersten Problem....
Hier der weitere Quelltext:
private void lstTab_SelectedIndexChanged(object sender, EventArgs e) { DateTime geburtstag; try { con.Open(); cmd.CommandText = "select * from personen" + " where personalnummer = " + pnummer[lstTab.SelectedIndex]; reader = cmd.ExecuteReader(); reader.Read(); txtName.Text = " " + reader["name"]; txtVorname.Text = " " + reader["vorname"]; txtPersonalnummer.Text = " " + reader["personalnummer"]; txtGehalt.Text = " " + reader["gehalt"]; geburtstag = Convert.ToDateTime( reader["geburtstag"]); txtGeburtstag.Text = geburtstag.ToShortDateString(); reader.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
-
Hilfreich wäre eventuell die genaue Fehlermeldung?
-
inflames2k schrieb:
Hilfreich wäre eventuell die genaue Fehlermeldung?
"System.Windows.Forms.ListView" enthält keine Definition für "SelectedIndex", und es konnte keine Erweiterungsmethode "SelectedIndex" gefunden werden, die ein erstes Argument vom Typ "System.Windows.Forms.ListView" akzeptiert. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)
-
Wo der Compiler recht hat hat er recht. Ein SelectedIndex gibst es schlichtweg nicht.
Siehe: http://msdn.microsoft.com/de-de/library/system.windows.forms.listview.aspx
-
David W schrieb:
Wo der Compiler recht hat hat er recht. Ein SelectedIndex gibst es schlichtweg nicht.
Siehe: http://msdn.microsoft.com/de-de/library/system.windows.forms.listview.aspxDieses Argument sehe ich ein, wenn es im Buch jedoch möglich ist, gehe ich mal davon aus, dass trotzdem ein Fehler vorhanden ist.....
-
Kann es sein, daß in dem Buch eine "ListBox" anstatt einer "ListView" verwendet wird (dort gibt es dann "SelectedIndex")?
-
[quote=\\"Th69\\"]Kann es sein, daß in dem Buch eine \\"ListBox\\" anstatt einer \\"ListView\\" verwendet wird (dort gibt es dann \\"SelectedIndex\\")?[/quote] Ich habe ListView verwendet. Danke dir - mit ListBox klappt es !
-
private void lstTab_SelectedIndexChanged(object sender, EventArgs e) { DateTime geburtstag; try { con.Open(); cmd.CommandText = "select * from personen" + " where personalnummer = " + pnummer[lstTab.SelectedIndex]; reader = cmd.ExecuteReader(); reader.Read(); txtName.Text = "" + reader["name"]; txtVorname.Text = "" + reader["vorname"]; txtPersonalnummer.Text = "" + reader["personalnummer"]; txtGehalt.Text = "" + reader["gehalt"]; geburtstag = Convert.ToDateTime( reader["geburtstag"]); txtGeburtstag.Text = geburtstag.ToShortDateString(); reader.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message); } con.Close(); }
der Quelltext ist kompilierbar, macht aber nicht, was er soll. Wenn ich einen Datensatz auswähle, soll dieser in den Datenfeldern angezeigt werden.
Wenn ich dies aber mache, wird lediglich der Eintrag makiert, die Textfelder
jedoch werden nicht mit den jeweiligen Inhalten gefüllt.
-
Die Listbox wird nicht von alleine wissen dass sie beim Event "SelectedIndexChanged" dein "lstTab_SelectedIndexChanged" aufrufen soll.
http://itnotes.net/wp-content/uploads/2011/03/Capture_Enter.jpg
- Klick deine Listbox an
- Im Properties-Fensterchen (im bild da rechts) auf den Blitz klicken, dort werden die Events angezeigt die die Listbox feuern kann
- Schaue dort nach SelectedIndexChanged und wähle da deine Funktion ausAlternativ: Klicke doppelt auf die Listbox, dann erzeugt er automatisch eine leere Funktion wo du das was du bisher in lstTab_SelectedIndexChanged stehen hast rein kopieren kannst