Hallo,
ich benutzte die ZeosDB-Komponenten um auf den embedded Firebird-Server zuzugreifen.
Ich habe eine Funktion QueryString, die ein
SQL-
Query durchführt:
Delphi-Quellcode:
function QueryString(pStr:
String; pExec: Boolean = false): TZQuery;
begin
result:=TZQuery.Create(
nil);
with result
do
begin
Connection := ZConnection1;
CachedUpdates:=false;
RequestLive:=True;
SQL.Text:=pStr;
if pExec
then ExecSQL
else Open;
end;
end;
In einer Tabelle (kein DBGrid oder sowas) sollen nun alle Datensätze angezeigt werden, also übergeben ich mein Select-Statement ("SELECT * FROM KUNDEN WHERE UPPER(NAME) LIKE '%';"), verarbeite alle zurückgelieferten Records und habe im Endeffekt meine Tabelle aus der Datenbank dargestellt.
Suchen erfolgt wie oben im SELECT mit einem Platzhalten, sodass man auch nach Teilen eines Namens suchen kann.
Ich übergebe nun meinen
Query-String mit dem Update-Statement, welches wie folgt aussieht, um einen Datensatz zu ändern (Beispiel):
Zitat:
UPDATE KUNDEN SET NAME = 'MEYER' WHERE ID = 5;
In diesem Beispiel z.B. wird ein Kundenname von "Schulze" zu "Meyer" geändert.
Werden allerdings die neuen Datensätze in der Tabelle dargestellt (oder auch nicht), befindet sich immer noch der alte Name "Schulze" in der Tabelle (Such nach allen Namen mit "WHERE NAME LIKE '%';"). Such ich allerdings nach Namen wie 'SCHU%', was den Datensatz mit dem Namen "SCHULZE" zurückliefern sollte, so gibt es kein ergebnis. Die Suche nach 'MEY%' liefert ein Ergebnis.
Dieses Verhalten ist für mich absolut nicht nachvollziehbar. Hat jemand von euch eine Idee die mich einen Schritt weiterbringen könnte?