AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi FireDac ODBC Query bringt alte Daten
Thema durchsuchen
Ansicht
Themen-Optionen

FireDac ODBC Query bringt alte Daten

Ein Thema von fisipjm · begonnen am 24. Aug 2022 · letzter Beitrag vom 31. Aug 2022
 
fisipjm

Registriert seit: 28. Okt 2013
251 Beiträge
 
#1

FireDac ODBC Query bringt alte Daten

  Alt 24. Aug 2022, 16:02
Datenbank: ODBC • Version: 3.0 • Zugriff über: Odbc / FireDac
Hi,

ich habe ein Problem bei dem ich nicht wirklich dahintersteige, irgend eine Einstellung ist wahrscheinlich falsch, aber ich finde sie nicht

Folgender Aufbau. Ich habe eine FDConnection, die geht auf eine bestehende ODBC Verbindung (DBMS Firebird, sollte ja aber eigentlich egal sein, wegen ODBC)
Hab ein Datenmodul in dem ich die Connection und 2 Querys liegen habe.
Alles wunderbar soweit.

Die erste Query frägt die Tabelle nach einer Spalte ab. Nenn wir die Tabelle Nummernkreise und die Spalte Zähler.

Erster Query Ablauf sieht also so aus:

Delphi-Quellcode:
procedure HolDieNummer;
begin
Query1.sql := 'Select zaehler from Nummernkreise where Spalte1 = :Kriterium1 and Spalte2 = :Kriterium2';
Query1.parambyname('Spalte1').AsString:='Hotehü';
Query1.parambyname('Spalte2').AsString:='Bliblablubb';
Query1.open;
if Query1.isEmpty then
  raise Exception.create('Mach nicht so, dass kann gar nicht passieren!!');

GlobaleNummer := Query1.fieldbyname('zaehler').asInteger;
Query1.close;
end;
Die Kriterien begrenzen die Abfrage immer auf genau einen Datensatz.
Erster durchlauf alles Toll, ich bekomme z.B. Die Zahl 1234 zurück.
Die Zahl nehme ich addiere 1 und speichere sie mit der 2. Query in die gleiche Tabelle zurück. Das geht so:

Delphi-Quellcode:
Query2.sql := 'Select zaehler from Nummernkreise where Spalte1 = :Kriterium1 and Spalte2 = :Kriterium2';
Query2.parambyname('Spalte1').AsString:='Hotehü';
Query2.parambyname('Spalte2').AsString:='Bliblablubb';
Query2.open;
Query2.Edit;
Query2.Fieldbyname('zaehler').asinteger := GlobaleNummer+1;
Query2.Post;
Wenn ich jetzt in die Datenbank schaue dann steht in der Datenbank die 1235 drin. Alles fein. Lass ich jetzt aber die Funktion in einer SChleife lauf dann wirft mir "HoldieNummer" immer 1234 als Ergebnis raus und ich versteh nicht warum. Wenn ich das Programm beende und wieder neu aufrufe, bringt mir die Procedure 1235 als Ergebnis und beim nächsten Neustart 1236 usw. aber innerhalb des gleichen Programmaufrufs nicht.
Es muss was mit der 1. Query zu tun haben, aber ich komm nicht drauf....

Grüße
PJM
  Mit Zitat antworten Zitat
 

 

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 01:21 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