Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Konflikt DataSet <-> Query (https://www.delphipraxis.net/62164-konflikt-dataset-query.html)

Der Jan 31. Jan 2006 17:16

Datenbank: Firebird • Version: 1.5 • Zugriff über: FIBPlus

Konflikt DataSet <-> Query
 
Hallo,

ich hab da grad ein ganz blödes Problem. undzwar habe ich in einer DB-Anwendung diverse DataSet und Query (TfibDataSet/TfibQuery).
Wenn ich jetzt ein Query ausführe, das eine Tabelle betrifft (nicht schreibend, SELECT reicht schon), wird das DataSet, welches auf die entsprechende Tabelle zugreift, geschlossen. Blöd ist das ganze, da das ganze erstens eben bei einer Vorführung der SW zum ersten mal passiert ist :oops:, zweitens ich keine Ahnung habe warum und drittens, naja, der Effekt ist vorher nicht aufgetreten. Das läßt mich vermuten, das es sich evtl. (hoffentlich) nur um ein Property-Setting handelt. Ich bin mir aber nicht bewußt etwas geändert zu haben :gruebel: (ich hab nichts gemacht :angel: )
Weiß vielleicht jemand, trotz meiner wagen Beschreibung, einen Rat?

Hansa 31. Jan 2006 17:27

Re: Konflikt DataSet <-> Query
 
Die Frage ist, warum überhaupt eine BDE-Query zusammen mit FIBplus verwendet wird. Ist völlig unnötig und sollte man vermeiden.

Der Jan 31. Jan 2006 17:43

Re: Konflikt DataSet <-> Query
 
Äh. Nee. Keine BDE-Query. Einmal TFibDataset und einmal TFibQuery. Ganz ohne BDE. Die vermeide ich generell :)

Hansa 31. Jan 2006 17:51

Re: Konflikt DataSet <-> Query
 
Du brauchst aber keine Query. Das ist Schneee von gestern wegen BDE-Kompatibilät. Wozu soll die sonst gut sein ? TDataset bzw. Abkömmling reicht völlig.

Der Jan 31. Jan 2006 18:19

Re: Konflikt DataSet <-> Query
 
Ich will aber :twisted:
Nein mal im ernst, TFibQuery ist nicht das selbe wie TQuery, sondern wirklich nur das was es sein sollte, eine einfache Abfrage.
Und eben für eine einfache Abfrage, z.B. über drei Tabellen hinweg, die nur einen Wert bzw. Datensatz zurückbringt jedesmal ein DataSet? Oder für DataPumping? Nö. das ist irgendwo wie mit den Kanonen und den Spatzen.
Zitat:

Use a TpFibQuery component for data operation that need to be fast and lightweight
Ich will das aber nicht OT werden lassen.
Fakt ist, das ich beides verwende und leider mit meinem Problem nicht wirklich weiter bin.

Hansa 31. Jan 2006 18:34

Re: Konflikt DataSet <-> Query
 
Zitat:

Zitat von Der Jan
..für eine einfache Abfrage, z.B. über drei Tabellen hinweg, die nur einen Wert bzw. Datensatz zurückbringt jedesmal ein DataSet?...

Für 3 Tabellen braucht man lediglich ein einzelnes Dataset. Dieses muß nur wissen, um was es geht (sprich : SelectSQL). Alternativ wäre eine stored Procedure (SP) in Betracht zu ziehen und dann eben nur ParamByName besetzen. Das geht allerdings auch beim TDataSet. TFibQuery ist im Prinzip überflüssig. Und das ist keine Erfindung von mir, sondern eine Aussage von Serg Vestrikov.

Lemmy 31. Jan 2006 18:36

Re: Konflikt DataSet <-> Query
 
Hi,

ich kenne mich mit FIBPlus jetzt nicht wirklich gut aus, aber ist es da nicht so, dass in der "Standardeinstellung" nach einem Select automatisch die Transaktion geschlossen wird? Schau mal nach, ob du da in der Query was einstellen kannst.

Lemmy

alex517 31. Jan 2006 21:51

Re: Konflikt DataSet <-> Query
 
Hallo Jan,

kann es sein, daß das DataSet.Transaction und die Query.Transaction identisch sind und Query.Option auf [qoAutoCommit] steht?
Dann wird nach dem Ausführen bzw. Schließen der Query die gemeinsame Transaction beendet und
damit wird auch das DataSet geschlossen.
Lösung wäre z.B.
a) Query.Option NICHT auf [qoAutoCommit]
b) Query.Transaction separate Transaction
c) Query.Transaction an die UpdateTransaction hängen
je nach dem was gebraucht wird.
alex

Der Jan 1. Feb 2006 07:03

Re: Konflikt DataSet <-> Query
 
Jo danke. Ich hatte es inzwischen auch gefunden. Irgendwie haben die Queries und die Datasets irgendwie plötzlich die selben Transaktionen benutzt, hab ich wohl aus Versehen im OI umgestellt, keine Ahnung ( :angel: ). Hab es wieder geändert und schon funzt der Kram wieder. War wohl gestern abend nach vielen Stunden Arbeit zu platt, das noch zu checken :roll:


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:39 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