Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi TIBQuery Zugriffsverletzung bei Query.First (https://www.delphipraxis.net/152395-tibquery-zugriffsverletzung-bei-query-first.html)

BenjaminH 21. Jun 2010 12:43

Datenbank: Firebird • Version: 2.1 • Zugriff über: Interbase

TIBQuery Zugriffsverletzung bei Query.First
 
Hallo,
ich habe ein echt seltsames Problem. Bei einem Insert mittels TIBQuery, füge ich einen neuen Datensatz ein und verwende dabei auch
Code:
 returning "id";
Der relevante Code lautet:
Code:
Query.Open;
Query.First;
result:=Query.Fields[0].AsInteger;
Beim Aufruf von Query.First bekomme ich eine Zugriffsverletzung
Zitat:

Schreiben von Adresse 00000000' aufgetreten.
In der Datenbank ist der neue Datensatz zu finden.
Kann mir vielleicht jemand auf die Sprünge helfen?
Vielen Dank,
Benjamin

mkinzler 21. Jun 2010 12:46

AW: TIBQuery Zugriffsverletzung bei Query.First
 
Es scheint keine Instanz zu bestehen

DeddyH 21. Jun 2010 12:47

AW: TIBQuery Zugriffsverletzung bei Query.First
 
Nach dem Open solltest Du eigentlich automatisch auf dem ersten DS stehen, so denn einer vorhanden ist. Wie ist es so?
Delphi-Quellcode:
Query.Open;
if not Query.EOF then
  result:=Query.Fields[0].AsInteger;

Bernhard Geyer 21. Jun 2010 12:52

AW: TIBQuery Zugriffsverletzung bei Query.First
 
Zitat:

Zitat von BenjaminH (Beitrag 1030585)
Hallo,
ich habe ein echt seltsames Problem. Bei einem Insert mittels TIBQuery, füge ich einen neuen Datensatz ein und verwende dabei auch
Code:
 returning "id";

Kann das TIBQuery überhaupt? Insert mit anschließender Rückgabe eines Wertes?

mkinzler 21. Jun 2010 12:54

AW: TIBQuery Zugriffsverletzung bei Query.First
 
Oder der wert wird als Parameter zurückgegeben

BenjaminH 21. Jun 2010 12:57

AW: TIBQuery Zugriffsverletzung bei Query.First
 
Zitat:

Zitat von mkinzler (Beitrag 1030589)
Es scheint keine Instanz zu bestehen

Dann dürfte der Datensatz aber doch auch nicht in der DB auftauchen, oder?
Zitat:

Zitat von DeddyH (Beitrag 1030590)
Nach dem Open solltest Du eigentlich automatisch auf dem ersten DS stehen, so denn einer vorhanden ist. Wie ist es so?
Delphi-Quellcode:
Query.Open;
if not Query.EOF then
  result:=Query.Fields[0].AsInteger;

Listenindex überschreitet das Maximum.
Zitat:

Zitat von Bernhard Geyer (Beitrag 1030592)
Kann das TIBQuery überhaupt? Insert mit anschließender Rückgabe eines Wertes?

Jap, hat genau so schonmal funktioniert.(Oder bilde ich mir das ein?)
Zitat:

Zitat von mkinzler (Beitrag 1030595)
Oder der wert wird als Parameter zurückgegeben

Wie bekomme ich den dann?

Trotz allem: Die Zugriffsverletzung dürfte doch nicht auftreten, oder?

DeddyH 21. Jun 2010 13:00

AW: TIBQuery Zugriffsverletzung bei Query.First
 
Und bei
Delphi-Quellcode:
result:=Query.Parameters[0].AsInteger;
:?:

mkinzler 21. Jun 2010 13:02

AW: TIBQuery Zugriffsverletzung bei Query.First
 
SQL-Code:
returning
ist eine Erweiterung von FireBird. es ist die Frage, ob IBX, welche ja für Interbase sind, dies können. wenn dann über den Parameter

BenjaminH 21. Jun 2010 13:26

AW: TIBQuery Zugriffsverletzung bei Query.First
 
Oh, ok, es sieht so aus, als ob es nicht geht. Komisch, ich dachte das hätte vor 3 Tagen noch funktioniert. Seltsam.

idefix2 22. Jun 2010 08:41

AW: TIBQuery Zugriffsverletzung bei Query.First
 
Ich habe auch eine ganze Weile mit Komponenten für Interbase herumgerauft, bevor ich es aufgegeben habe.
Ich würde Dir die Verwendung der UIB Schnittstelle empfehlen, die funktioniert mit Firebird klaglos.
Etwas verwirrend allerdings dort:
Execute immediate liefert den "retuning id" Wert in einem Params Puffer, während Prepare/Execute diesen Wert als Result Singleton zurückgibt.


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