AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Zeos + Firebird - übernehmen von Werten in Update-Statement
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von EnORItZ · begonnen am 12. Aug 2005 · letzter Beitrag vom 13. Aug 2005
Antwort Antwort
EnORItZ

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

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

  Alt 12. Aug 2005, 19: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
Benutzerbild von MagicAndre1981
MagicAndre1981

Registriert seit: 4. Jun 2004
Ort: Nordhausen
2.214 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Zeos + Firebird - übernehmen von Werten in Update-Statem

  Alt 12. Aug 2005, 21:02
Hi,

du musst erst ein Commit durchführen, sonst werden die Daten nicht in die DB geschrieben.

André
André
  Mit Zitat antworten Zitat
EnORItZ

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

Re: Zeos + Firebird - übernehmen von Werten in Update-Statem

  Alt 13. Aug 2005, 12:11
Hmm... Also wenn ich im nach dem Query Apply- und dann CommitUpdates aufrufe gibts ne Fehlermeldung, dass diese Operationen nicht bei einer geschlossenen Datenmenge ausgeführt werden können. Scheint ja auch relativ logisch, weil ich ja ExecSQL statt Open für das Update verwende.

Wenn ich das ganze über die ZConnection mache (also mit der Commit-Methode), dann passiert gar nichts.
Nach einem Neustart des Programms (ob mit Commit oder ohne) sind die Daten in der Datenbank übernommen worden.

Gehts vieleicht mit der TZUpdateSQL-Klasse? Und wie verwende ich die, oder liegts an etwas ganz anderem?
MfG EnORItZ
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz