vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

ADO.NET / Datenbanken
HILFE ! 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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: HILFE ! ListBox auswahl ändern und die eigenschaften des atributs anzeigen 
Autor: ModeratorFZelle (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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: HILFE ! ListBox auswahl ändern und die eigenschaften des atributs anzeigen 
Autor: ModeratorFZelle (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,
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: HILFE ! ListBox auswahl ändern und die eigenschaften des atributs anzeigen 
Autor: ModeratorDaveS (Moderator)
Datum: 14.10.11 10:31

Verwende Parameter, dann funktioniert alles

Genauso ist es aber in sehr vielen Fällen. Gewiß bleiben noch einige übrig.

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: HILFE ! ListBox auswahl ändern und die eigenschaften des atributs anzeigen 
Autor: ModeratorFZelle (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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: HILFE ! ListBox auswahl ändern und die eigenschaften des atributs anzeigen 
Autor: ModeratorDaveS (Moderator)
Datum: 15.10.11 16:58

Ach so, du meinst einfach wir schlagen Parameter immer vor, egal welche Frage gestellt wurde. Aber warum nicht? Bei fast jeder Frage hier wird Sql als String zusammengefriemelt.

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: HILFE ! ListBox auswahl ändern und die eigenschaften des atributs anzeigen 
Autor: ModeratorFZelle (Moderator)
Datum: 15.10.11 19:07

Dann solltest Du dringend nochmal die hälfte deiner Postings durchsehen.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: HILFE ! ListBox auswahl ändern und die eigenschaften des atributs anzeigen 
Autor: ModeratorDaveS (Moderator)
Datum: 16.10.11 07:39

und Pauschalisieren wollte ich schon gar nicht

Tja,

Ich finde es nur nicht richtig, das so pauschal [abzutun] wenn es ein Problem gibt zu raten Parameter verwenden zu sollen

Das hättest du denn wohl anders ausdrücken sollen.

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel