Autor |
Beitrag |
D. Annies
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Mo 01.02.10 22:47
Hi, Delpher,
ich klicke eine Combobox an, in der sich Tabellennamen befinden. Wie bekomme ich aus dem
Item das Dataset?
Ich habe folgenden Code: (viel kann wohl nicht mehr fehlen)
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| showmessage('bitte auf <Tabelle sehen> (Combobox) klicken'); assignfile (t2, form1.label30.caption+'OUTTXT\'+combobox2.Items[combobox2.itemindex]+datetostr(date)+'.csv'); rewrite(t2); while not combobox2.Items[combobox2.ItemIndex].eof do begin for k := 0 to combobox2.Items[combobox2.ItemIndex].FieldCount-2 do write(t2, combobox2.Items[combobox2.ItemIndex].fields[k].asstring, ','); write(t2, combobox2.Items[combobox2.ItemIndex].fields[QSchueler.FieldCount-1].asstring); writeln(t2); combobox2.Items[combobox2.ItemIndex].next; end; closefile(t2); |
Danke für ausse Klemme,
Detlef
_________________ ut vires desint, tamen est laudanda voluntas
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Mo 01.02.10 22:59
*grübel*
Suchst du FindComponent?
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
D. Annies 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Mo 01.02.10 23:10
Gute Idee, aber an dieser Stelle: nein.
Ich habe jetzt eingefügt:
Delphi-Quelltext 1: 2: 3: 4: 5:
| var ds : TDataset; ds.name := combobox2.items[combobox2.itemindex]; while not ds.eof do |
das klappt, eigentlich wäre mein Prob also damit gelöst.
Aber es klappt trotzdem noch nicht, zur Laufzeit gibt es noch einen Error, weil ich ja den Klick (bzw. Doppelklick, weil Combobox2.OnClick belegt ist) nicht nach dem showmessage machen kann ...
Mal sehen,
Det
_________________ ut vires desint, tamen est laudanda voluntas
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Di 02.02.10 00:29
Und du meinst, wenn du einer Klasse einfach den Namen zuweist, zaubert sich die entsprechende Instanz da von ganz alleine rein?
Du suchst FindComponent..
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| ds := FindComponent(combobox2.items[combobox2.itemindex]) if ds <> nil then begin while not ds.eof do begin Something; end; end; |
Hab nochmal nachgedacht.. eine Alternative wäre
Delphi-Quelltext 1:
| ds := Combobox2.Items.Objects[combobox2.itemindex] as TDataSet; |
falls du das Objekt mit den Listeneinträgen verknüpft hast.
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
PeterPain
      
Beiträge: 83
|
Verfasst: Di 02.02.10 03:57
|
|
D. Annies 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Di 02.02.10 08:34
So, jetzt habe ich die Lösung:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| procedure TForm1.TabelleCSV(Sender: TObject); var k : smallint; ds : TDataset; begin ds := TQuery(TDBGrid(TPopupMenu(TMenuItem(sender).GetParentComponent).popupComponent).Datasource.DataSet); showmessage(ds.name); assignfile (t2, form1.label30.caption+'OUTTXT\'+ds.Name+datetostr(date)+'.csv'); rewrite(t2); if ds <> nil then begin while not ds.Eof do begin for k := 0 to ds.FieldCount-2 do write(t2, ds.fields[k].asstring, ','); write(t2, ds.fields[ds.FieldCount-1].asstring); writeln(t2); ds.next; end; end; closefile(t2); end; |
Vielen Dank für eure Hilfe-Ideen,
Detlef
_________________ ut vires desint, tamen est laudanda voluntas
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Di 02.02.10 10:04
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
D. Annies 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Di 02.02.10 14:36
Hi, Xentar,
ich habe mich entschlossen, die Combobox zu verwerfen und statt dessen den Dataset des zugehörigen DBGrids zu nehmen.
Geht prima! (ich wollte dich nicht schwindelig machen)
Gruß, Detlef
_________________ ut vires desint, tamen est laudanda voluntas
|
|
|