Entwickler-Ecke
Datenbanken - DBGrid bestimmte Daten auslesen
valherf - Di 08.02.11 23:56
Titel: DBGrid bestimmte Daten auslesen
Hallo,
ich habe ein DBGrid, in dem ich in einer Spalte verschiedene Zahlen (auch mehrfach die selbe) stehen habe. In der zweiten spalte stehen Namen.
Wie kann ich alle Namen ausgeben, die beispielsweise der Zahl "4" zugeordnet sind? Am besten in einem Memo?
bummi - Mi 09.02.11 00:55
Du läufst über das Dataset und gibst die Werte bedingt aus, Pseudocode
Quelltext
1: 2: 3: 4: 5: 6:
| Dataset.First; While not Dataset.EOF do begin If Dataset.FieldByName('mußt du kennen').asInteger=4 then Memo1.Lines.Add(Dataset.FieldByName('Das andere Feld') .asString) Dataset.Next; end; |
oder Du setzt einen Filter (oder fragst per Query für Bedingung ab) und gibst alles aus.
valherf - Mi 09.02.11 12:57
Ja, das hat Prima geklappt...
Jetzt will ich allerdings noch einen drauf setzen.
Und zwar soll er nun den namen den er findet (auch eine Zahl) in der nächsten Tabelle wieder einfügen und den dazu gehörigen wert (nur einer pro zahl) im Memo 2 ausgeben.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| suche:=dblookupcombobox1.KeyValue; dblookupcombobox2.KeyValue:=suche; ADOtable2.First; While not ADOTable2.EOF do begin If ADOtable2.FieldByName('SchauspielerID').asInteger=strtoint(suche) then Memo1.Lines.Add((ADOtable2.FieldByName('RollenID') .asString)); rolle:=(ADOtable2.FieldByName('RollenID') .asString); If ADOtable3.FieldByName('RollenID').asInteger=strtoint(rolle) then begin Memo2.Lines.Add(ADOtable3.FieldByName('Rollenname') .asString); ADOtable3.Next; end; ADOtable2.Next; end; |
so gibt er zwar etwas aus, aber völlig irrelevante Rollennamen...
bummi - Mi 09.02.11 13:05
da fehlt wohl ein ADOtable3.Locate, oder eine Masterdetailverknüpfung, oder ein Lookupfeld auf den Rollennamen
valherf - Mi 09.02.11 14:19
und was schreib ich zu dem Locate?
bin verwirrt! :D
bummi - Mi 09.02.11 15:44
Delphi-Quelltext
1:
| If ADOtable3.Locate('RollenID',ADOtable2.FieldByName('RollenID').asInteger) then ADOtable3.FieldByName('Rollenname').asString |
Du kannst auch ADOtable2 "Neues Feld" wählen, einen Namen vergeben Typ Nachschlage eintragen, Schlüsselfeld auf RollenID legen Datenmenge auf ADOtable3, Schlüssel auf RollenID und Ergebnisfeld auf Rollenname, dann kannst Du den Namen direkt aus AdoTable2 nehmen.
BTW: Schau Dir mal ADODataset an, die Möglichkeiten sind deutlich interessanter als bei ADOTable.
valherf - Mi 09.02.11 16:38
Würde ich machen, wenn die Zeit mir nicht im Nacken sitzen würde.
da sind übrigens nicht genügend wirkliche Parameter drin, im code??
bummi - Mi 09.02.11 19:44
Delphi-Quelltext
1:
| ADOtable3.Locate('RollenID',ADOtable2.FieldByName('RollenID').asInteger,[]) |
oder einfach mal F1 drücken
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!