| |
ADO.NET / DatenbankenHILFE ! ListBox auswahl ändern und die eigenschaften des atributs anzeigen | | | Autor: anne92 | Datum: 11.10.11 20:57 |
| hallo
hab leider ein großes (für euch wahrscheinlich kleines problem)
programmiere gerade eine vb anwendung mit access anschluss
ich lade die Vornamen und Namen von kunden in eine Listbox (alpahbetisch geordnet, jeder buchstabe ein rider)
sieht so aus :
cmd.CommandText = "select Name, Vorname from Kunde where LEFT(Name,1) = 'z'"
Try
reader = cmd.ExecuteReader()
Do While reader.Read()
ListBoxXYZ.Items.Add(reader("Name") & reader("Vorname"))
Loop
reader.Close()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
jetzt möchte ich ganz gerne dass wenn ich in dieser listbox einen kunden auswähle die eigenschaften
also vorname, name, geburtsdatum, etc in textboxen angezeigt bekommen
normalerweise funktioniert das ja so
cmd.CommandText = "select * from Kunde where Name =" & Name
Try
reader = cmd.ExecuteReader()
Do While reader.Read()
txt_vorname_1.Text = (reader("Vorname"))
txt_Name_1.Text = (reader("Name"))
txt_Adresse_1.Text = (reader("Adresse"))
txt_Telefonnummer_1.Text = (reader("Telefonnummer"))
txt_geburtsdatum_1.Text = (reader("Geburtsdatum"))
'txt_Geschlecht_1.Text = (reader("Hausnummer"))
'txt_Ort_1.Text = (reader("Kontonummer"))
Loop
reader.Close()
Catch ex As Exception
MessageBox.Show(ex.Message)
reader.Close()
End Try
aber es geht nicht ... liegt denke ich mal daran dass ich oben beim command nur name stehen hab oder?? kann mir bitte bitte jemand helfen ??
vielen dank im voraus | |
Re: HILFE ! ListBox auswahl ändern und die eigenschaften des atributs anzeigen | | | Autor: FZelle (Moderator) | Datum: 12.10.11 00:09 |
| Das ist VB6 herangehensweise.
Mit dem DataBinding von VB.NET ist das alles viel einfacher als du es hier machst.
1. OleDbDataAdapter benutzen um die Datensätze mit Filter per adapter.Fill in eine DataTable zu lesen.
Und bitte nicht in den SqlString frickeln sondern die ParameterCollection benutzen.
2. In der DataTable eine ExpressionColumn erstellen die die beiden Felder zusammenfast.
3. DataTable an eine Bindingsource Binden.
4. Bindingsource an die ListBox binden und DisplayMember setzen
5. Jedes TextFeld an die selbe BindingSource binden.
Fertig.
Insgesamt 14 Zeilen Sourcecode. | |
Re: HILFE ! ListBox auswahl ändern und die eigenschaften des atributs anzeigen | | | Autor: Franki | Datum: 12.10.11 02:20 |
| Hallo,
Zitat: | | Das ist VB6 herangehensweise.
| |
Ja, oder VBA Herangehensweise oder was auch immer.
Das würde so aber weder mit VB6 noch VBA funktionieren.
Ich habe den Code jetzt nicht genau analysiert, was mir aber auf den ersten Blick aufgefallen ist, ist dass da Name im SQL Statement steht für ein abzufragendes Feld der DB Tabelle.
ich verwende keine reservierten Schlüsselwörter für Felder, kann also auch nicht sagen, ob ADO.NET da inzwischen toleranter ist als ADO(Classic) oder DAO. (Glaube es aber eher weniger, schon grade dann nicht wenn es sich um eine Access DB handelt)
Somit wären wir wieder bei Grundlagen...
Gruß,
Frank | |
Re: HILFE ! ListBox auswahl ändern und die eigenschaften des atributs anzeigen | | | Autor: Franki | Datum: 12.10.11 02:33 |
| Hallo,
dein Problem kann in der Tat daran liegen, dass du "Name" verwendest.
Das ist ein reserviertes Schlüsselwort welches man nicht für Felder innerhalb einer DB-Tabelle verwenden sollte. (Besser wäre Nachname oder NName z.B.)
Aber zum eigentlichen Problem:
Du liest ja die (Nach)namen der Kunden ein, soweit so gut. Dann möchtest du eine weitere SQL Abfrage machen für die Details. Das solltest du aber nicht über den Namen machen da es ja mehrere mit gleichem Namen geben kann (Müller, Maier, Schmitz...)
Du solltest beim ersten Einlesen zu jedem Datensatz die ID des Datensatzes mit einlesen und dann genau diese verwenden für weitere SQL Abfragen.
Dann brauchst du auch keine Schleife mehr da du ja nur auf einen einzigen eindeutigen Datensatz die Abfrage machst.
Ich habe deinen Code jetzt nicht genau analysiert, aber erster Vorschlag wäre den Namen des DB-Feldes zu ändern.
Funktioniert es dann?
Aber BTW, was bedeutet "geht nicht"?
Wenn man helfen können soll, dann sind detaillierte Fehlermeldungen sehr wichtig. Bekommst du eine, oder passiert einfach gar nichts, oder bekommst du andere Datensätze als erwartet? Solche Angaben sind zur Fehleranalye äusserst wichtig.
Gruß,
Frank | |
Re: HILFE ! ListBox auswahl ändern und die eigenschaften des atributs anzeigen | | | Autor: FZelle (Moderator) | Datum: 12.10.11 20:30 |
| Schlüsselwörter sind für SQL wichtig, das hat recht wenig mit ADO oder ADO.NET zu tun.
Aber Sql Injection und massige Convertier und Maskierorgien entstehen wenn man die ParameterCollection nicht benutzt, | |
Re: HILFE ! ListBox auswahl ändern und die eigenschaften des atributs anzeigen | | | Autor: Franki | Datum: 13.10.11 03:37 |
| Hallo FZelle
Zitat: | | Schlüsselwörter sind für SQL wichtig, das hat recht wenig mit
ADO oder ADO.NET zu tun.
| |
Eben, die Schlüsselwörter sind wichtig für die Feldnamen der DB. Aber wenn man solche Feldnamen hat, dann klappt das weder mit ADO oder ADO.NET.
Zitat: | |
Aber Sql Injection und massige Convertier und Maskierorgien
entstehen wenn man die ParameterCollection nicht
benutzt
| |
Ja richtig, aber nicht zwangsweise. Parameter gab es schon unter ADO(Classic) Aber auch ohne Parameter konnte man immer schon Injection usw. vermeiden. Maskierungen sind bei Abfragen sowieso Quatsch wenn die Datentypen stimmen in der DB und der Abfrage.
Das braucht(e) man höchstens zur Anzeige nach der Abfrage.
Gruß,
Frank | |
Re: HILFE ! ListBox auswahl ändern und die eigenschaften des atributs anzeigen | | | Autor: Preisser | Datum: 13.10.11 07:17 |
| Hallo,
Franki schrieb:
Zitat: | |
Eben, die Schlüsselwörter sind wichtig für die Feldnamen der
DB. Aber wenn man solche Feldnamen hat, dann klappt das weder
mit ADO oder ADO.NET.
| |
Ja eben, deswegen hat es ja nichts mit der Toleranz von ADO oder ADO.Net zu tun.
Zitat: | |
Ja richtig, aber nicht zwangsweise. Parameter gab es schon
unter ADO(Classic) Aber auch ohne Parameter konnte man immer
schon Injection usw. vermeiden. Maskierungen sind bei
Abfragen sowieso Quatsch wenn die Datentypen stimmen in der
DB und der Abfrage. | |
Aber welchen Grund sollte es geben, bei Abfragen, die Werte aus externen Quellen (z.B. User-Eingabe) verwenden, keine Parameter zu verwenden? Beispielsweise wenn man bei SQL-Server einen String abfrägt und man verwendet kein "N" vor dem String-Literal (wie N'Text'), konvertiert dieser den String nach ANSI, statt einen Unicode-Vergleich durczuführen. Bzw. unterscheiden sich die zu verwendenden Escape-Zeichen je nach DB (SQL-Server: '', Oracle: \' usw.) und man kann nicht sicher sein, dass es nicht noch andere Zeichen gibt, die man escapen müsste (es könnte z.b. sein dass bei einem \0-Zeichen der Parser den SQL-String nicht als gültig interpretiert). Oder bei Double-Zahlen, die man in Strings konvertiert, können Genauigkeitsverluste auftreten - in Gegensatz zu Parametern, so die direkten Bytewerte übergeben werden. | |
Re: HILFE ! ListBox auswahl ändern und die eigenschaften des atributs anzeigen | | | Autor: Franki | Datum: 14.10.11 03:09 |
| Hallo,
Aber welchen Grund sollte es geben, bei Abfragen, die Werte
aus externen Quellen (z.B. User-Eingabe) verwenden, keine
Parameter zu verwenden?
Gar keinen, ich wollte auch nichts gegen Parameter sagen. Ganz im Gegenteil, dadurch lassen sich viele Probleme vermeiden. Allerdings sind sie auch kein Allheilmittel, denn man kann nicht sagen: "Verwende Parameter, dann funktioniert alles."
Viele Fragen bzw. Probleme sind völlig unabhängig davon. Ich finde es nur nicht richtig, das so pauschal ab zu tuen wenn es ein Problem gibt zu raten Parameter verwenden zu sollen.
Gruß,
Frank | |
Re: HILFE ! ListBox auswahl ändern und die eigenschaften des atributs anzeigen | | | Autor: FZelle (Moderator) | Datum: 14.10.11 11:11 |
| Natürlich kann man auch das eine oder andere SqlCommand Ohne Parameter absetzen, aber sobald Daten an die Datenbank übergeben werden sollen sind Sie Pflicht, keine Diskussion.
Statt ständig das Frickeln zu verteidigen solltest Du lernen und Akzeptieren wie es richtig geht. | |
Re: HILFE ! ListBox auswahl ändern und die eigenschaften des atributs anzeigen | | | Autor: Franki | Datum: 15.10.11 02:05 |
| Hallo,
mir mußt du das nicht sagen, ich verwende Parameter seit es sie gibt, schon lange bevor es .NET bzw. ADO.NET gab. Ich finde sie gut, richtig und wichtig und habe sie schon lange aktzeptiert.
Ich wollte auch keineswegs "Frickelei" verteitigen, ganz im Gegenteil.
Gruß,
Frank | |
Re: HILFE ! ListBox auswahl ändern und die eigenschaften des atributs anzeigen | | | Autor: FZelle (Moderator) | Datum: 15.10.11 19:07 |
| Dann solltest Du dringend nochmal die hälfte deiner Postings durchsehen. | |
Re: HILFE ! ListBox auswahl ändern und die eigenschaften des atributs anzeigen | | | Autor: Franki | Datum: 16.10.11 03:47 |
| Hallo,
nein das meinte damit ich nicht, und Pauschalisieren wollte ich schon gar nicht ("wir schlagen vor")
Aber es wird hier langsam wirklich OT, lass und doch einfach diese Diskussion hier im Thread beenden, mit der eigentlichen Fragestellung hat das inzwischen gar nichts mehr zu tun.
Grundsatzfragen usw. gehören ja eigentlich ins Allgemeinforum, oder halt von mir aus auch per PM.
Gruß,
Frank | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevZIP40 Pro DLL
Zippen und Unzippen wie die Profis!
Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|