| Autor |
Beitrag |
DelphiNoob
      
Beiträge: 152
Win 2003 Server
D7 Ent
|
Verfasst: Di 25.03.03 18:32
Hi,
ich arbeite mit MySQL und den neuen Zeos Library 6.0.5.
Ich möchte eine komplette Tabelle meiner Datenbank auslesen, ist soweit auch kein Problem, nur die weitere verarbeitung macht mir Probleme.
Die Tabelle ist ungefährt so aufgebaut:
Quelltext 1: 2: 3: 4:
| | id | programm | path | Zeile 1 | 1 | Word | c:\XY | Zeile 2 | 2 | Excel | c:\DA | Zeile 3 | 3 | Editor | c:\AB | |
Wenn ich jetzt mittels 'select * from programme' alles auslese, weiß ich aber nicht genau wie ich alles weiter verarbeiten soll.
Aufgrund der Daten die ich auslese lege ich ListItems an. Die Caption des ListItem resultiert aus den unter Programm angegebenen Daten. Der Pfad des Programms wird in das "Data"-Feld des Listitems eingetragen.
Was ich nun möchte ist für alle in der Tabelle befindlichen Daten ein ListItem anlegen. Laut obigen Beispiel wären es in dem Fall 3 stück. Eines heisst "Word", das andere "Excel" usw usw usw.
Wenn ich wie oben angegeben alles auslese, kann ich auch "Zeile 1" problemlos bearbeiten, nur was ist mit dem Rest? Im Beispiel sind es nur 3, aber in wirklichkeit habe ich da schon mehrere Einträge. Leider komm ich auch nicht drauf wie ich das mit einer Schleife lösen könnte, weil ja nichts gezählt wird. Gut, durch die "id" wäre das zwar möglich, aber die sind nicht immer lückenlos. Die Reihenfolge kann genauso gut "1, 23, 32, 56, 57, 58, 212" sein.
Versteht ihr mein Problem? Hoffe auf Hilfe von euch Profis
Mfg
DelphiNoob
|
|
MSCH
      
Beiträge: 1448
Erhaltene Danke: 3
W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
|
Verfasst: Di 25.03.03 18:51
hi,
ich kann dir nur nen Tip geben, wie es bei ADO funktioniert.
dort gibts ja auch ne Kompo StoredProc. Diese Liefert bei mehreren Datensätzen einen _RecordSet zurück, den man an eine Tabelle via MyTable.RecordSet:= MyStoredProc.Execute zuweisen muß,damit man die Ergebnisse weiterverabeiten kann.
Vieleicht hilft dir der Ansatz.
grez
MSCH
|
|
DelphiNoob 
      
Beiträge: 152
Win 2003 Server
D7 Ent
|
Verfasst: Di 25.03.03 18:55
Jein. Wäre mir nicht bekannt das die Zeos Library sowas hat. ABER: Wäre es nicht vom denken her am nächsten ne' Stringlist zu nehmen? Wo ich alles reinpacke? Bzw Stringgrid?
Ist jetzt nur ne idee, aber es wäre nett wenn jemand was dazu sagt der mal was mit Stringlist/grid gemacht hat.
Mfg
DelphiNoob
|
|
kiwicht
      
Beiträge: 1021
Win 7, MacOS
Delphi x, VBA, PHP, ...
|
Verfasst: Mi 26.03.03 10:49
Du willst also, praktisch wie in einer Tabelle, nur nicht so ausführlich, den Inhalt deines Feldes "programm" auflisten? Hab ich das jetzt richtig verstanden?
Also unter- oder nebeneinander Word, Excel und Editor. Richtig?
|
|
DelphiNoob 
      
Beiträge: 152
Win 2003 Server
D7 Ent
|
Verfasst: Mi 26.03.03 13:38
Nein, ich will einfach den gesamten Inhalt einer Tabelle auslesen und Zeilenweise weiterverarbeiten!
|
|
kiwicht
      
Beiträge: 1021
Win 7, MacOS
Delphi x, VBA, PHP, ...
|
Verfasst: Mi 26.03.03 15:49
Ich glaub so ganz versteh ich dich nicht... kann also sein das das der falsche Tip ist:
DBCtrlGrid ?
Du kannst das DBCtrlGrid, sprich den darzustellenden Inhalt, horizontal oder vertikal Anordnen. Du bist nicht, wie bei Tabellen, an vorgegebene Formen gebunden, sondern kannst alles, was mit deiner DB zu tun hat, bzw. darauf zugreift, so plazieren, wie du es willst... etc. pp.
Meinst du das?
mfg
|
|
DelphiNoob 
      
Beiträge: 152
Win 2003 Server
D7 Ent
|
Verfasst: Mi 26.03.03 15:54
Nein. Aber das Beispiel ist nicht schlecht.
Ich lese nun die Komplette Tabelle aus, und schreibe sie in ein TDBGrid (DBGrid). Alles kein Problem, nur wie lese ich jetzt per Schleife Zeilenweise (Wie in einem Buch) dieses Grid aus? Und gehe dann automatisch eine Zeile tiefer, lese dann diese aus, usw usw usw.
Und wenn ich in der letzten Zeile bin, und danach keine mehr kommt stoppt die Schleife dann. Wenn man mir da mal nen tipp gibt wäre ich dankbar. Weil zu diesen schei** DBGrid's findet man auch niergendwo erklärungen.
|
|
kiwicht
      
Beiträge: 1021
Win 7, MacOS
Delphi x, VBA, PHP, ...
|
Verfasst: Mi 26.03.03 20:35
sorry, das übersteigt dann meine Kompetenzen
Versuch´s mal nach der Methode:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| query.first
repeat
myarray[i] := edit1.Text Query.Next; Inc(i, 1);
until query.EOF; |
|
|
DelphiNoob 
      
Beiträge: 152
Win 2003 Server
D7 Ent
|
Verfasst: Mi 26.03.03 20:40
Danke, war ein Denkanstoß! habs wie folgt gelöst:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| ...
for i:=0 to query.RecordCount-1 do begin id := query.FieldByName('id').AsString; programm := query.FieldByName('programm').AsString; pfad := query.FieldByName('pfad').AsString;
SHGetFileInfo(pchar(pfad),0,FileInfo,gr,SHGFI_ICON); listitem := lv.Items.Add; listitem.caption := programm; Icon.handle:=FileInfo.hIcon; listitem.Imageindex:=Images.addIcon(Icon);
query.Next; end;
... |
|
|
kiwicht
      
Beiträge: 1021
Win 7, MacOS
Delphi x, VBA, PHP, ...
|
Verfasst: Mi 26.03.03 23:19
schick, sieht gut aus.
anmerkung: ich würd für die VAR´s nicht GENAU die gleichen bezeichnungen nehmen, nenn sie fProgramm, oder _programm oder so. ich bin irgendwann durcheinander gekommen, weil ich´s genauso gemacht hab... is aber egal, wollt ich nur ma angemerkt haben.
mfg
|
|
|