Announcement

Collapse
No announcement yet.

Datensatz imt SQL selektieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datensatz imt SQL selektieren

    Hallo,
    mit den unten aufgeführten Anweisungen selektiere ich in Teil 1 die Tabelle nach dem Wert der in EAendJaZ angegeben ist. Dann soll da was abgezogen werden. Steht Block Teil 1 allein funktioniert das auch. Sowie ich aber Teil 2 hinzufüge, in dem fast das gleiche wie in Teil 1 passieren soll, funktioniert gar nichts mehr. Ohne Teil 2 wird die if Anweisung von Teil 1 ausgeführt. Mit Teil 2 aber wird gar keine If Anweisung ausgeführt. Was ist denn da falsch?. Weiss dazu jemand Rat ?

    //teil 1

    if StrToIntDef(EAenJaZ.Text,0) <>

    StrToIntDef(Edit9.Text,0) then begin

    with Query5 do

    begin

    Query5.SQL.Clear;

    Query5.SQL.Add('SELECT Count(Jahr_Z) FROM Lot_AnZa.db');

    Query5.SQL.Add('WHERE Jahr_Z = :JZahl');

    Query5.Params[0].AsSmallInt := StrToIntDef(EAenJaZ.Text,0);

    Query5.Open;

    if ZahlSuchForm.ZaSuTable.Findkey([geaendert_Zahl_1]) then begin

    ZahlSuchForm.ZaSuTable.Edit;

    ZahlSuchForm.ZaSuTableanzahl.value :=

    ZahlSuchForm.ZaSuTableanzahl.value - 1;

    end;

    end;

    //teil 2

    with Query6 do

    begin

    Query6.SQL.Clear;

    Query6.SQL.Add('SELECT Count(Jahr_Z) FROM Lot_AnZa.db');
    Query6.SQL.Add('WHERE Jahr_Z = :JZahl');

    Query6.Params[0].AsSmallInt := StrToIntDef(Edit9.Text,0);

    Query6.Open;

    if ZahlSuchForm.ZaSuTable.Findkey([geaendert_Zahl_1]) then begin

    showmessage('Abfrage 1 EAenJaZ Erste vorhandene Zahl hinzufügen');

    ZahlSuchForm.ZaSuTable.Edit;

    ZahlSuchForm.ZaSuTableanzahl.value :=

    ZahlSuchForm.ZaSuTableanzahl.value + 10;

    end;

    end;

    end;

    Gruss ph

  • #2
    Hallo,

    in einem solchen Beispiel macht es sich besser, die Einrückungen beizubehalten. Man muss dazu hier im Forum den Quellcode nur in PRE- und /PRE-Tags einklammern:
    <pre>
    //teil 1
    if StrToIntDef(EAenJaZ.Text,0) <> StrToIntDef(Edit9.Text,0) then
    begin
    with Query5 do
    begin
    Query5.SQL.Clear;
    Query5.SQL.Add('SELECT Count(Jahr_Z) FROM Lot_AnZa.db');
    Query5.SQL.Add('WHERE Jahr_Z = :JZahl');
    Query5.Params[0].AsSmallInt := StrToIntDef(EAenJaZ.Text,0);
    Query5.Open;
    if ZahlSuchForm.ZaSuTable.Findkey([geaendert_Zahl_1]) then
    begin
    ZahlSuchForm.ZaSuTable.Edit;
    ZahlSuchForm.ZaSuTableanzahl.value :=
    ZahlSuchForm.ZaSuTableanzahl.value - 1;
    end;
    end;
    //teil 2
    with Query6 do
    begin
    Query6.SQL.Clear;
    Query6.SQL.Add('SELECT Count(Jahr_Z) FROM Lot_AnZa.db');
    Query6.SQL.Add('WHERE Jahr_Z = :JZahl');
    Query6.Params[0].AsSmallInt := StrToIntDef(Edit9.Text,0);
    Query6.Open;
    if ZahlSuchForm.ZaSuTable.Findkey([geaendert_Zahl_1]) then
    begin
    showmessage('Abfrage 1 EAenJaZ Erste vorhandene Zahl hinzufügen');
    ZahlSuchForm.ZaSuTable.Edit;
    ZahlSuchForm.ZaSuTableanzahl.value := ZahlSuchForm.ZaSuTableanzahl.value + 10;
    end;
    end;
    end; {if}
    </pre>
    Was passiert, wenn schrittweise mit dem Debugger durch den Code gegangen wird? Warum wird <i>with Query5 do begin</i> aufgerufen, wenn dann trotzdem vollständig qualifizierte Bezeichner wie <i>Query5.SQL.Clear</i> verwendet werden

    Comment


    • #3
      Hallo, zur Zeit mache ich meine zweite SQL-Anfreundung, da verwechsele ich einige Sachen in Verbindung mit Delphi5. Das mit with Query do habe ich jetzt weggelassen. Mein Problem war das ich bei der Query, mit meinen wohl zu vielen DataSet-Zuweisungen durcheinander gekommen bin. Dann bin ich auch noch mit der FindKey-Anweisung durcheinander geraten. Diese scheint so wie ich das wollte nicht ausführbar zu sein. Denn nach der zweiten Select-Anweisung rechnet diese noch mit dem Wert der ersten FindKey-Anweisung. Da stimmt dann wohl mit meinem Schlüssel irgendwas nicht. Ich möchte eigendlich nur schon vorhandene Werte in einer Tabelle ändern, die nach Jahreszahlen gruppiert sind. Für jedes Jahr sind da bis zu 50 Werte möglich. Die dann nach dem Ändern den neuen eingegeben Wert angeben. Vielen Dank für Ihre Hilfe

      Comment

      Working...
      X