Registriert seit: 14. Jan 2004
106 Beiträge
Delphi 7 Professional
|
Re: cout(*) anweisung hat fehler...
18. Mär 2004, 11:40
sorry aber ich steh heute ein bischen neben mir...was meintest du jetzt ???
Delphi-Quellcode:
SetCount := 0;
// Arraylänge auf Anzahl der TEdits
SetLength(SetVals, CompNames.Count);
With ADOQuery1 Do
Begin
// Gibt es Einträge zu diesem Bearbeiter?
SQL.Text :=
' SELECT Count(*)' + #10 +
' FROM dbo_VFL_VERZ_TEMP t' + #10 +
' WHERE t.Bearbeiter = :i_Bearbeiter';
Prepared := True;
Parameters.ParamByName(' i_Bearbeiter').Value := TB_Bearbeiter.Text;
// Ausführen
Open;
If Eof Or (Fields[0].AsInteger = 0) Then
ProcessedRecs := 0
Else
ProcessedRecs := Fields[0].AsInteger;
SetStr := ' ';
For i := 0 To pred(CompNames.Count) Do
Begin
With FindComponent(CompNames[i]) As TEdit Do
If Text <> ' ' Then
Begin
// Wenn Edit <> '' -> Wert in den Array & Spalte kommt mit in die SET-Clause...
SetVals[SetCount] := Text;
// Einträge > 0 UPDATE sonst INSERT
If ProcessedRecs > 0 Then
SetStr := SetStr + ' ,' + #10 + ' ' + Fieldnames[i] + ' = :i_F' + IntToStr(SetCount)
Else
SetStr := SetStr + ' ,' + #10 + ' ' + Fieldnames[i];
inc(SetCount);
End;
End;
// Wenn ein INSERT benötigt wird, dann muss hier noch die Liste mit Parametern stehen
If ProcessedRecs = 0 Then //hier gleich null lassen und was soll ich mit der count abfrage machen ???
Begin
// Bearbeiter muss auf jeden Fall eingefügt werden
SetStr :=
' INSERT INTO dbo_VFL_VERZ_TEMP ' + #10 +
' (Bearbeiter ' + SetStr + ' )' + #10 +
' VALUES ( :i_Bearbeiter' + #10;
// Fülle die Value liste mit Parametern (für jeden geänderten Wert
For i := 0 To pred(SetCount) Do
SetStr := SetStr + ' ,' + #10 + ' :i_F' + IntToStr(i);
SetStr := SetStr + ' )'
// Das INSERT-Statement sollte dann so aussehen...
//INSERT INTO dbo_VFL_VERZ_TEMP t
// (Bearbeiter
// ,Feld1
// ,Feld2
// ...)
//VALUES ( :i_Bearbeiter,
// ,:i_F1
// ,:i_F2
// ... )
End
Else
SetStr :=
' UPDATE dbo_VFL_VERZ_TEMP t' + #10 +
' SET ' + Copy(SetStr, 10, Length(SetStr)) + #10 +
' WHERE t.Bearbeiter = :i_Bearbeiter';
// Das UPDATE-Statement sollte dann so aussehen...
//UPDATE dbo_VFL_VERZ_TEMP t
//SET Feld1 = :i_F1
// ,Feld2 = :i_F2
// ...
//WHERE t.Bearbeiter = :i_Bearbeiter
// Wenn SetCount > 0 -> Führe Abfrage aus...
If Setcount = 0 Then
Begin
SQL.Text := SetStr;
Prepared := True;
Parameters.ParamByName(' i_Bearbeiter').Value := TB_Bearbeiter.Text;
// Werte der Paramter :i_F(1 - ...)
For i := 0 To pred(SetCount) Do
Parameters.ParamByName(' i_F' + IntToStr(i)).Value := SetVals[i];
// Ausführen
ExecSQL;
//memo1.Text:=adoquery1.SQL.Text;
End;
End;
sollte diese If ProcessedRecs = 0 Then anweisung gleich null sein oder auf was wolltest du raus ???
Und das leben geht weiter.....
|
|
Zitat
|