GELÖST Leeres ResultSet abfragen

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

WSO
*****
Beiträge: 233
Registriert: Di, 22.04.2014 13:03

GELÖST Leeres ResultSet abfragen

Beitrag von WSO »

Hallo @All,
Ich möchte ein leeres ResultSet einer Query abfragen.
Die Query mit der entsprechenden Where-Clausel bring keinen Datensatz.
Die Abfrage im Makro auf lerere Ergebnismenge ( IF Not IsNull(ResultSet_FAK) THEN)funktioniert aber nicht,
der ELSE-Zweig wird nicht durchlaufen!
Was mache ich da falsch?

Code: Alles auswählen

       
	oSql_FAK = oConnection.createStatement()
        stSql_FAK1 = "SELECT ""ohneRechnung"" FROM ""abfRechnungMoeglichSumme""" 
        stSql_FAK2 = " WHERE gel_kud_id = " & ikud_id
        stSql_FAK = stSql_FAK1 + stSql_FAK2
                 	    
        ResultSet_FAK = oSql_FAK.executeQuery(stSql_FAK)
        IF Not IsNull(ResultSet_FAK) THEN
           		WHILE ResultSet_FAK.Next
       				  iohneRechnung =  ResultSet_FAK.getDouble(1)
        			  IF iohneRechnung < 0.01 THEN
       			                iMessage = getMessage(43, iReplacement_1, iReplacement_2)
					GoTo pEXIT:	
				END IF
       			WEND
       		ELSE
       		' wird nicht durchlaufen, obwohl kein Datensatz gefunden! Warum ???????????? 
       			iMessage = getMessage(43, iReplacement_1, iReplacement_2)
			GoTo pEXIT: 
       	END IF
        ' Notloesung, da Else-Zweig bei "IF Not IsNull(ResultSet_FAK" nicht funktioniert 
		IF iohneRechnung < 0.01 THEN
       		        iMessage = getMessage(43, iReplacement_1, iReplacement_2)
			GoTo pEXIT:
		END IF       		
Danke vorab,
WSO
Zuletzt geändert von WSO am Mo, 14.07.2014 23:29, insgesamt 1-mal geändert.
acco
***
Beiträge: 52
Registriert: So, 04.05.2014 19:54

Re: Leeres ResultSet abfragen

Beitrag von acco »

Hallo Wolfram,

"null" ist nicht gleich "0".
WSO hat geschrieben: ' Notloesung, da Else-Zweig bei "IF Not IsNull(ResultSet_FAK" nicht funktioniert
IF iohneRechnung < 0.01 THEN
Das läßt vermuten, das der Wert "0" und nicht "null" gesucht wird. Versuche mal

Code: Alles auswählen

If ResultSet_FAK <> 0 THEN
Gruß

acco
openSUSE 13.1, LibreOffice 4.3.2.2
WSO
*****
Beiträge: 233
Registriert: Di, 22.04.2014 13:03

Re: Leeres ResultSet abfragen

Beitrag von WSO »

Hi acco,
das läuft auf einen Basic-Fehler (Falscher Wert für Eigenschaft):
Ist auch logisch, ResultSet ist ein OBJECT.
Trotzdem danke für die Idee.
Gruss,
Wolfram
RobertG
********
Beiträge: 2034
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Leeres ResultSet abfragen

Beitrag von RobertG »

Hallo Wolfram,

den folgenden Teil habe ich in der neuesten Handbuchversion raus geschmissen:

Code: Alles auswählen

IF Not IsNull(ResultSet_FAK) THEN
Es gibt immer eine Reaktion der Datenbank. Jede Abfrage, auch die Reaktion keinen Datensatz auszugeben, wird schließlich auch im Abfragemudul dargestellt.

Code: Alles auswählen

WHILE oAbfrageergebnis.next
i = oAbfrageergebnis.getInt(1)
WEND
Das Ganze beschränkt sich also darauf, in dem Ergebnis zu suchen. Das Feld, was zuerst nachgesehen wird, ist dann vermutlich NULL.

Code: Alles auswählen

IF Not IsNull(ResultSet_FAK.getDouble(1)) THEN
an entsprechender Stelle dürfte da vielleicht zielführender sein.

Gruß

Robert
WSO
*****
Beiträge: 233
Registriert: Di, 22.04.2014 13:03

Re: Leeres ResultSet abfragen

Beitrag von WSO »

Hi Robert,
danke das erklärt alles.
Dann mache ich mich mal an die Überarbeitung meiner Module ...
Sonnige Grüsse,
Wolfram
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Leeres ResultSet abfragen

Beitrag von DPunch »

Servus

Normalerweise überprüft man das einfach so

Code: Alles auswählen

	If ResultSet_FAK.Next Then
		'Datensätze gefunden
		Do
		'wasauchimmer
		Loop While ResultSet_FAK.Next
	Else
		'Keine Datensätze
	End If
WSO
*****
Beiträge: 233
Registriert: Di, 22.04.2014 13:03

Re: Leeres ResultSet abfragen

Beitrag von WSO »

Das gefällt.
Vielen Dank :)
Antworten