Autor Beitrag
Morpheus1572
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 157

Win XP
Delphi 7
BeitragVerfasst: Mi 17.09.08 10:04 
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???

ausblenden 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.Clear;
      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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 53



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 157

Win XP
Delphi 7
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 53



BeitragVerfasst: Mi 17.09.08 12:29 
user profile iconMorpheus1572 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 157

Win XP
Delphi 7
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 53



BeitragVerfasst: Mi 17.09.08 12:57 
user profile iconMorpheus1572 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 157

Win XP
Delphi 7
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 157

Win XP
Delphi 7
BeitragVerfasst: 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.