AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Exception bei leerem Result
Thema durchsuchen
Ansicht
Themen-Optionen

Exception bei leerem Result

Ein Thema von idefix2 · begonnen am 28. Jun 2010 · letzter Beitrag vom 3. Jul 2010
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#11

AW: Exception bei leerem Result

  Alt 29. Jun 2010, 08:42
Delphi-Quellcode:
if UL.DSQLExecute(trans, stmt, SQL_DIALECT, nil) then
  while UL.DSQLFetch(DB, trans, stmt, 1, sqlda) do
    Writeln(format('%s %s %s', [sqlda.AsString[0], sqlda.AsString[1], sqlda.AsString[2]]));
Ich kenn diese Komponente(nsammlung) zwar auch nicht, aber was passiert denn hierbei?
(ich vermute mal DSQLExecute hat auch irgendeinen prüfbaren Rückgabewert)

PS: Gibt es eventuell irgendwo sowas wie einstellbare Optionen, bei dieser Komponente?
Wo man also einstellen kann, ob z.B. DSQLFetch eine Exception wirft oder nur False liefert.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#12

AW: Exception bei leerem Result

  Alt 29. Jun 2010, 10:47
Ich habe jetzt das Problem einmal im progdigy Forum geposted.

Die Klasse TUIBLibrary hat mehrere execute Methoden, die sich in den zu übergebenden Parametern unterscheiden.
Execute hat nur einen TParams Parameter, während Execute2 einen TParams und einen TResult Parameter hat. Ich war deshalb der Meinung, dass ich Execute2 verwenden muss, wenn ich ein Result erwarte - möglicherweise liegt da der Fehler, weil das Beispielprogramm verwendet execute und nicht execute2, und bekommt das Ergebnis im TParams zurück. Allerdings gibt es beim Beispielprogramm nicht gleichzeitig input und output Parameter. Ich werde jetzt in der Richtung weitersuchen, vielleicht komme ich doch noch drauf, wie es richtig geht
Ich hatte gehofft, dass irgendwer hier diese Library verwendet und die Lösung weiss, aber so verbreitet scheint sie doch nicht zu sein.


DSQLExecute ist eine procedure und hat keinen Rückgabewert. Das angeführte Codeschnipsel ist einem UIB Beispielprogramm entnommen, leider finde ich dort kein Beispiel, das einem SQL-Befehl Input Parameter übergibt und dann ein Resultset zurückgeliefert bekommt, sondern nur Beispiele mit SQL-Befehlen mit Parametern ohne Resultset und solche mit fixem SQL-Befehl mit Resultset, aber dafür ohne Parameter.
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#13

AW: Exception bei leerem Result

  Alt 3. Jul 2010, 09:08
Hallo, das Problem ist gelöst.

Die Firebird API kennt zwei verschiedene Execute Methoden, execute und execute2, und execute2 war die falsche .

Execute ist für Queries, die beliebig viele (zwischen 0 und n) Ergebniszeilen liefern, und hat keinen Result Parameter, weil die Ergebniszeilen danach mittels fetch der Reihe nach geholt werden müssen.
Execute2 ist für Queries, die genau eine Zeile als Ergebnis zurückliefern, und dieser Wert wird in der Result Variablen übergeben. Wenn es kein Ergebnis gibt, löst execute2 eine Exception aus.

Das Ganze ist, wie so vieles andere, nirgends richtig dokumentiert oder zumindest nicht so leicht zufinden, aber im progdigy Forum habe ich die Erklärungen bekommen. Der Hintergrund dazu ist im Firebird API Guide nachzulesen, wenn man dort gründlich danach sucht.

Geändert von idefix2 ( 3. Jul 2010 um 09:14 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 13:58 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