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
idefix2

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

Exception bei leerem Result

  Alt 28. Jun 2010, 22:01
Datenbank: Firebird • Version: 2.1 • Zugriff über: UIB
Eben habe ich eine herbe Überraschung erlebt, ich hoffe, es gibt eine Möglichkeit, das zu umgehen:

Ein Select Statement, für das die Ergebnismenge leer ist, weil zufällig auf keinen Datensatz die Where Klausel passt, liefert mir nicht kommentarlos eine leere Datenmenge zurück, sonder generiert eine Exception - Ich habe versucht, das zurückzuverfolgen, und festgestellt, dass die Exception anscheinend schon in der fbclient Dll ausgelöst wird.

Eigentlich möchte ich nicht unbedingt für jeden Select-Befehl einen Try-except Block machen, bloss um ein leeres Ergebnis abzufangen. Es sollte doch laut Beschreibung der fetch Befehl false liefern, wenn keine Daten für das Fetch vorhanden sind. Gibt es da eine andere Lösung?
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.211 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Exception bei leerem Result

  Alt 28. Jun 2010, 22:14
Hört sich für mich nach einem Fehler der Zugriffskomponenten an. Was sagt der Hersteller dazu?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.868 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Exception bei leerem Result

  Alt 28. Jun 2010, 22:38
Da der Fehler bei anderen Zugriffskomponenten nicht zutrifft, würde ich auch auf einen Fehler in UIB Tippen. Da diese ja OS sind könntest du dort mal nachforschen
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#4

AW: Exception bei leerem Result

  Alt 28. Jun 2010, 23:23
Hi!

Ohne UIB zu kennen, kann ich es mir fast nicht vorstellen, dass in einem so häufigen Fall eine Exception geworfen wird, und das bislang niemand angemerkt hat, sodass es korrigiert wurde.

Bist du dir sicher, dass nicht vllt. dein Statement inkorrektes SQL beinhaltet oder sowas?

Vllt. zeigst du mal etwas Code


Liebe Grüße,
Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Exception bei leerem Result

  Alt 28. Jun 2010, 23:43
Vllt. zeigst du mal etwas Code
Der Meldungstext der Exception wäre eventuell auch nich uninteressant.
(Strg+C, wenn ein Delphi-Exception-Dialog den Fokus hat, und die Meldung ist im Zwischenspeicher)
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
idefix2

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

AW: Exception bei leerem Result

  Alt 29. Jun 2010, 00:13
'select xleft,xtop,xwidth,xheight,titleheight,rowheight,widths from sysansicht where (name=?) and (user=?) and (Standard<>' ');' Dieser SQL-String wird an Execute übergeben (mit Cut and Paste aus dem Debugger kopiert, unmittelbar vor dem Aufruf von isc_dsql_execute2). Die Parameter name und user enthalten gültige Werte, allerdings gibt es in der Datenbank keine passenden Datensätze.

Der Wert, den ich im Debugger als SQL-Statusrückgabewert angezeigt bekomme, ist 335544374. Die UIB Library produziert aber offenbar immer eine Exception, wenn dieser Statuscode ungleich 0 ist - der zugehörige Klartext der Exception lautet in dem Fall:
'Row not found for fetch, update or delete, or the result of a query is an empty table.'

Das kann es doch eigentlich nicht geben? Ich meine, da ist ganz klar eine Fehlermeldung für die Situation vorgesehen, die doch in Wirklichkeit gar kein Fehler ist. Hat irgend jemand mit UIB diesbezüglich Erfahrung?

Geändert von idefix2 (29. Jun 2010 um 01:54 Uhr)
  Mit Zitat antworten Zitat
blackfin
(Gast)

n/a Beiträge
 
#7

AW: Exception bei leerem Result

  Alt 29. Jun 2010, 02:10
greifst du vielleicht nach der Abfrage gleich auf den ersten Record zu, ohne zu prüfen, ob er existiert?

denn der Fehlercode ist ja:

Zitat:
100335544374 stream_eof Attempt to fetch past the last record
in a record stream
Ich weiss jetzt nicht, was das fetch() bei UIB genau macht, da ich die Kompos selbst nicht benutze, aber wenn ich jetzt mal zu php ableite, dann
gibt es da ja z.B. das mysql_fetch_array(), was einen Record von einer Query holt.
Wenn die Query aber keine Result-Sets hat, spuckt auch mySQL/php dort eine Exception heraus, da es ja keine Records gibt, deswegen muss man dort erstmal z.B. mit
mysql_count_rows() abfragen, ob überhaupt Records als Ergebnis der Query vorhanden sind.
Könnte das vielleicht die Ursache sein? Dass du versuchst, einen Record zu holen, obwohl es keinen gibt?
Das ist alles nur eine Vermutung, da ich, wie gesagt, UIB nicht kenne...

Geändert von blackfin (29. Jun 2010 um 02:20 Uhr)
  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 02:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz