Hallo,
um mal zu den Parametern zu kommen:
Delphi-Quellcode:
with Query do
begin
SQL.Clear;
SQL.Add('
Select * From Stammdaten');
SQL.Add('
Where Name=:Name');
ParamByName('
Name').AsString:= '
Juhu';
Open;
try
if QueryIsNotEmpty ...
finally
Close;
end;
end;
sieht hübsch aus, keine blödes ""
und nun weiter
Delphi-Quellcode:
with Query do
begin
SQL.Clear;
SQL.Add('
Select * From Stammdaten');
SQL.Add('
Where Datum=:TheDate');
ParamByName('
TheDate').AsDateTime:= EncodeDate(2009,3,4);
Open;
try
if QueryIsNotEmpty ...
finally
Close;
end;
end;
Das Datum wird auf jeden Fall korrekt übergeben,
egal wie es intern gespeichert wird.
Ein weiterer Vorteil, Prepare.
Delphi-Quellcode:
with Query do
begin
SQL.Clear;
SQL.Add('
Select * From Stammdaten');
SQL.Add('
Where Name=:Name');
Prepare;
for i:= 1
to 5
do
begin
ParamByName('
Name').AsString:= '
Juhu'+IntToStr(i);
Open;
try
if QueryIsNotEmpty ...
finally
Close;
end;
end;
end;
Die
Query muss nur 1 mal prepared werden (das dauert je nach Komplexität der
Query etwas),
wird dann 5mal mit unterschiedlichen Parametern benutzt.
Je nach
DB bringt das ne Menge Geschwindigkeit (unter Firebird bei mir + 50%)
Noch mal zu PK kenne ich nicht, Indexfeld auch nicht.
Den PK bekommt man u.U. raus (steht in den System-Tabellen)
Um Änderungen an einem Datensatz zu erkennen, deen Felder du erst zur Laufzeit kennst,
dessen
DB du auch erst zur Laufzeit kennst, dessen
DB-Struktur du nicht ändern kannst
-> gute Nacht.
Ne, im Ernst.
Schau dir mal das NULL-Tutorial unter ibphoenix.com an,
ist nicht so einfach.
Ich würde viell. den Datensatz des PK (er muss da sein !!!)
komplett laden und mit dem alten (vorher sichern) vergleichen.
Heiko