Einzelnen Beitrag anzeigen

EnORItZ

Registriert seit: 8. Sep 2003
11 Beiträge
 
#1

Zeos + Firebird - übernehmen von Werten in Update-Statement

  Alt 12. Aug 2005, 20:37
Datenbank: Firebird embedded • Version: 1.5 • Zugriff über: Zeos-Controlls
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?
MfG EnORItZ
  Mit Zitat antworten Zitat