Einzelnen Beitrag anzeigen

Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#8

Re: If-In SQL- aber wie?

  Alt 21. Jan 2010, 20:47
Hmmm, nu meckert der rum das der "IF" nicht kennt....
Hier mal mein QC:
Delphi-Quellcode:
  with Form1.Query do
  begin
    close;
    sql.Clear;
    sql.Add('IF EXISTS(SELECT * FROM Arbeitszeiten WHERE Datum = date'''+dat+''' ) THEN'+#10+
            'UPDATE'+#10+
            'Arbeitszeiten'+#10+
            'SET'+#10);
    case Combobox1.ItemIndex of
    0: sql.add(' B1 = '+inttostr(CBBeginn.ItemIndex)+#10+
                ' E1 = '+inttostr(CBEnde.ItemIndex)+#10);
    1: sql.add(' B2 = '+inttostr(CBBeginn.ItemIndex)+#10+
                ' E2 = '+inttostr(CBEnde.ItemIndex)+#10);
    2: sql.add(' B3 = '+inttostr(CBBeginn.ItemIndex)+#10+
                ' E3 = '+inttostr(CBEnde.ItemIndex)+#10);
    3: sql.add(' B4 = '+inttostr(CBBeginn.ItemIndex)+#10+
                ' E4 = '+inttostr(CBEnde.ItemIndex)+#10);
    4: sql.add(' B5 = '+inttostr(CBBeginn.ItemIndex)+#10+
                ' E5 = '+inttostr(CBEnde.ItemIndex)+#10);
    end;

    sql.add('WHERE'+#10+
            'Datum = date'''+dat+''';'+#10+
            'ELSE'+#10+
            'INSERT INTO Arbeitszeiten'+#10+
            '(B1,B2,b3,b4,b5,e1,e2,e3,e4,e5)'+#10+
            'VALUES'+#10+
            '(:b1,:b2,:b3,:b4,:b5,:e1,:e2,:e3,:e4,:e5);'+#10+
            ');');
    with Params do
    begin
      ParamByName('b1').AsInteger:=0;
      ParamByName('e1').AsInteger:=0;
      ParamByName('b2').AsInteger:=0;
      ParamByName('e2').AsInteger:=0;
      ParamByName('b3').AsInteger:=0;
      ParamByName('e3').AsInteger:=0;
      ParamByName('b4').AsInteger:=0;
      ParamByName('e4').AsInteger:=0;
      ParamByName('b5').AsInteger:=0;
      ParamByName('e5').AsInteger:=0;
      case Combobox1.ItemIndex of
      0: begin
           ParamByName('b1').AsInteger:=CBBeginn.ItemIndex*5+1;
           ParamByName('e1').AsInteger:=CBEnde.ItemIndex*5+1;
         end;
      1: begin
           ParamByName('b2').AsInteger:=CBBeginn.ItemIndex*5+1;
           ParamByName('e2').AsInteger:=CBEnde.ItemIndex*5+1;
         end;
      2: begin
           ParamByName('b3').AsInteger:=CBBeginn.ItemIndex*5+1;
           ParamByName('e3').AsInteger:=CBEnde.ItemIndex*5+1;
         end;
      3: begin
           ParamByName('b4').AsInteger:=CBBeginn.ItemIndex*5+1;
           ParamByName('e4').AsInteger:=CBEnde.ItemIndex*5+1;
         end;
      4: begin
           ParamByName('b5').AsInteger:=CBBeginn.ItemIndex*5+1;
           ParamByName('e5').AsInteger:=CBEnde.ItemIndex*5+1;
         end;
      end;
    end;
    execsql;
    Form1.SQLTransaction1.Commit;
  end;
Der meckert wie gesagt gleich beim If rum

Woran kann das liegen?
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat