Registriert seit: 19. Apr 2007
Ort: Nabburg
83 Beiträge
Delphi 2007 Enterprise
|
Fehlerabfang bei SQL: Insert klappt, Update nicht
25. Jul 2007, 13:44
Datenbank: MS SQLServer • Zugriff über: via ODBC
Hallo zusammen,
ich versuche gerade einen Fehlerabfang in meinen Code einzubinden. Am ende solle es eine Exception Klasse geben. Weiß aber noch nicht wie das geht.
Meine ersten Schritte sehen so aus:
Für Update:
Delphi-Quellcode:
function TTblFirmenstamm.UpdRec(iRec: TRecFirmenstamm): boolean;
begin
Result := true;
with FQry do
begin
Close;
SQL.text := ' UPDATE ' + GetTblName + ' SET ' +
' UnternehmenNr_FK =:UnternehmenNr_FK, Standort=:Standort, Firmenname=:Firmenname, Strasse=:Strasse, PLZ=:PLZ, Ort=:Ort, '+
' SQLDebitoren=:SQLDebitoren,SQLKreditoren=:SQLKreditoren,'+
' DKSFirma=:DKSFirma,DKSJahr=:DKSJahr,DKSJahrYYYY=:DKSJahrYYYY,'+
' FrachtKostenKnz=:FrachtKostenKnz,ProzessBereiche=:ProzessBereiche ' +
' WHERE (FirmenNr_ID =:FirmenNr_ID)';
try
with iRec do
begin
ParamByName(' FirmenNr_ID').asInteger := FirmenNr_ID;
ParamByName(' UnternehmenNr_FK').asInteger := UnternehmenNr_FK;
ParamByName(' Standort').asString := Standort;
ParamByName(' Firmenname').asString := Firmenname;
ParamByName(' Strasse').asString := Strasse;
ParamByName(' PLZ').asString := PLZ;
ParamByName(' Ort').asString := Ort;
ParamByName(' SQLDebitoren').asString := SQLDebitoren;
ParamByName(' SQLKreditoren').asString := SQLKreditoren;
ParamByName(' DKSFirma').asString := DKSFirma;
ParamByName(' DKSJahr').AsString := DKSJahr;
ParamByName(' DKSJahrYYYY').AsInteger := DKSJahrYYYY;
ParamByName(' FrachtKostenKnz').Asinteger:= FrachtKostenKnz;
ParamByName(' ProzessBereiche').AsString := ProzessBereiche;
end;
ExecSQL;
except
on E: Exception do
begin
ShowMessage(' Upsiiiii, Tommi da ist ein Fehler: ' + E. Message);
Result := False;
end;
end;
end;
end;
Für Insert:
Delphi-Quellcode:
function TTblFirmenstamm.InsRec(iRec: TRecFirmenstamm): boolean;
var
cnstSQL : string;
begin
cnstSQL := ' INSERT INTO ' + GetTblName + ' ' +
' ( ChgDate_ID, FirmenNr_ID, UnternehmenNr_FK, Standort, Firmenname,Strasse, PLZ, Ort, SQLDebitoren, SQLKreditoren, DKSFirma, DKSJahr, DKSJahrYYYY, FrachtKostenKnz, ProzessBereiche) ' +
' VALUES (:ChgDate_ID,:FirmenNr_ID,:UnternehmenNr_FK,:Standort,:Firmenname,:Strasse,:PLZ,:Ort,:SQLDebitoren,:SQLKreditoren,:DKSFirma,:DKSJahr,:DKSJahrYYYY,:FrachtKostenKnz,:ProzessBereiche)';
with FQry do
begin
Close; // Schließt die Datenmenge
try
if SQL.Text <> CnstSQL then
SQL.text := CnstSQL;
with iRec do
begin
ParamByName(' ChgDate_ID').asDateTime := GetChgDateForInsRec;
ParamByName(' FirmenNr_ID').asInteger := FirmenNr_ID;
ParamByName(' UnternehmenNr_FK').asInteger := UnternehmenNr_FK;
ParamByName(' Standort').asString := Standort;
ParamByName(' Firmenname').asString := Firmenname;
ParamByName(' Strasse').asString := Strasse;
ParamByName(' PLZ').asString := PLZ;
ParamByName(' Ort').asString := Ort;
ParamByName(' SQLDebitoren').asString := SQLDebitoren;
ParamByName(' SQLKreditoren').asString:= SQLKreditoren;
ParamByName(' DKSFirma').asString := DKSFirma;
ParamByName(' DKSJahr').AsString := DKSJahr;
ParamByName(' DKSJahrYYYY').AsInteger := DKSJahrYYYY;
ParamByName(' FrachtKostenKnz').Asinteger := FrachtKostenKnz;
ParamByName(' ProzessBereiche').AsString := ProzessBereiche;
end;
ExecSQL;
Result := True;
except
on E: Exception do
begin
ShowMessage(' Tom da ist ein Fehler: ' + E. Message);
Result := False;
end;
end;
end;
end;
Was ich nicht verstehe ist, das ich wenn ich für Fehler sorge, ich bei der Insert Variante einen Fehler angezeigt bekomme bei der Update Variante aber nicht!
Warum bringt er bei Update keine Fehlermeldung?
Grüße
Thomas
|