Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - DataSet Zuweisungsproblem
Morpheus1572 - Mi 17.09.08 10:04
Titel: DataSet Zuweisungsproblem
Moin,
ich habe nen problem dessen lösung ich hier schon mal bekommen habe. Es funktioniert soweit aber nur für einen durchlauf...
Das Problem:
Bevor ich in die IF- gehe prüfe ich via COUNT die Menge der Einträge in der Tabelle ErstellDat. Dort sind derzeit 2 Einträge. Die Schleife wird ordnungsgemäß 2 mal durchlaufen aber das ergebnis - nämlich die gefundenen Daten in die Combobox einzutragen - ist immer das gleiche. ich habe 2 einträge mit dem ersten Datum (ErstID = 1).
Wo liegt mein Denktfehler???
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| If x > 0 then begin While x > i do begin i:=i+1; y:=IntToStr(i); ShowMessage('y: '+y); ADOQuery1.SQL.Text:='SELECT Datum FROM ErstellDat WHERE ErstID = :apptype'; ADOQuery1.Prepared := true; ADOQuery1.Parameters.ParamByName('apptype').Value:=y; ADOQuery1.Active:=true; ds := DataSource1.DataSet; Datum := ds['Datum']; ShowMessage('Gefundenes Datum: '+ds['Datum']); ComboBox1.Items.Add(Datum); end end else begin ComboBox1.Text:='Keine Daten...' end; |
delphiprogrammierer - Mi 17.09.08 11:07
Wieso verwendest du die Datasource ? Nur um Daten auszulesen und in die ComboBox zu schreiben ?
Erzähl halt mal genauer, was du machen möchtest, dann kann dir sicher geholfen werden.
LG
DelphiProgrammierer
Morpheus1572 - Mi 17.09.08 11:19
moin,
naja das mit der DataSource habe ich damals schon nicht so recht verstanden. ich denke damit kann man nur das bestimmte feld dann via showmessage anzeigen lassen.... ???
ich muss wie schon oben erwähnt bestimmte felder einer DBTabelle in die combobox reinbekommen und brechh mir einen ab, da in meinem beispiel der variablen :apptype KEIN anderer Wert als 1 zugewiesen wird. und das verstehe ich nicht.
beispiel: ich habe es mit einer anderen Tabelle mit 59 einträgen probiert. ich erhalten 59 einträge in der ComboBox mit dem ersten wert der tabelle...
ich raff es nicht. wie kann ich das lösen und warum funzt meins nicht???
delphiprogrammierer - Mi 17.09.08 12:29
Morpheus1572 hat folgendes geschrieben: |
moin,
naja das mit der DataSource habe ich damals schon nicht so recht verstanden. ich denke damit kann man nur das bestimmte feld dann via showmessage anzeigen lassen.... ???
ich muss wie schon oben erwähnt bestimmte felder einer DBTabelle in die combobox reinbekommen und brechh mir einen ab, da in meinem beispiel der variablen :apptype KEIN anderer Wert als 1 zugewiesen wird. und das verstehe ich nicht.
beispiel: ich habe es mit einer anderen Tabelle mit 59 einträgen probiert. ich erhalten 59 einträge in der ComboBox mit dem ersten wert der tabelle...
ich raff es nicht. wie kann ich das lösen und warum funzt meins nicht??? |
Was mir aufgefallen ist, du machst setzt adoquery1.activ in deiner schleife nicht auf false, d.h. die datenquelle wird nicht mit dem neuen parameter aktuallisiert. eigentlich sollte schon ein fehler kommen, wenn du in der while schleife die eigenschaft AdoQuery1.Sql.Text setzt, daber vorher nicht die adoquery.activ auf false setzt.
mach doch mal
ADOQuery1.Active := False;
vor die Zeile
ADOQuery1.SQL.Text:='SELECT Datum FROM ErstellDat WHERE ErstID = :apptype';
Ausserdem solltest du überprüfen, ob überhaupt datensätze gefunden worden sind, also
if ( Not AdoQuery1.EOF ) Then
Begin
ComboBox1.Items.Add( AdoQuery1.FieldByName ( 'datum' ).AsString );
End;
Delphiprogrammierer
Morpheus1572 - Mi 17.09.08 12:39
nein am active liegt es nicht.
ich schließe es ja am ende der schleife. ich habs dennoch mal nach oben gesetzt, gleiches ergebnis.
es funzt alles wunderbar nur das :apptype keinen anderen wert als 1 zugewiesen bekommt. i und y bekommen auch die richtigen werte... ich könnte :cry:
delphiprogrammierer - Mi 17.09.08 12:57
Morpheus1572 hat folgendes geschrieben: |
nein am active liegt es nicht.
ich schließe es ja am ende der schleife. ich habs dennoch mal nach oben gesetzt, gleiches ergebnis.
es funzt alles wunderbar nur das :apptype keinen anderen wert als 1 zugewiesen bekommt. i und y bekommen auch die richtigen werte... ich könnte :cry: |
dann nutz einfach mal den debugger und schau nach, was in Y bzw. I drin steht, wenn der Parameter zugewiesen wird. Wenn das richtig ist, dann ist der fehler in der DB
Morpheus1572 - Mi 17.09.08 13:36
warum in der DB???? die ist i.o.
die zuweisung von y oder i zu :apptype funzt nicht!!! was hat das mit der DB zu tun?
Morpheus1572 - Mi 17.09.08 16:43
Okay, problem ist gefunden. die zuweisung hat nicht geklappt weil ich im tran das dataset an eine ADOTable und NICHT an das Query gebunden habe. dann kann es natürlich nicht klappen... :oops:
Sorry und danke für die hilfe.
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!