[Résolu][Base] Requête SQL sans résultat

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
PNE-EdT
Membre lOOyal
Membre lOOyal
Messages : 40
Inscription : 28 mai 2018 08:16

[Résolu][Base] Requête SQL sans résultat

Message par PNE-EdT »

Bonjour,

Je me tourne une nouvelle fois vers vous car je ne sais pas détecter lorsque une requête SQL ne renvoi pas de résultat significatif.

j'ai lu dans le forum le sujet quasi identique 'https://forum.openoffice.org/fr/forum/v ... at#p280918'

Mais je pense que ma requête renvoie un résultat (je recherche le code minimum suivant d'un liste de code par article) mais vide et je ne sais pas comment le contrôler:

Code : Tout sélectionner

conn = Connexion_BDD
Stmt=Conn.createStatement()
 
strSQL="Select min (""Code"") as ""ID"" from ""Code"" where ""article"" = 65 and ""Code""> 3 "   
oRslt =  Stmt.executeQuery(strSQL)
oRslt.next 

if oRslt.next  then
     msgbox (oRslt.getColumns().getByName("Code").getInt())         
else
     msgbox ("pas de reslt")
End if
Si j'ai résultat c'est Ok, mais si je n'ai pas de résultat la ligne oRslt.getColumns().getByName("Code").getInt() me retourne 0
C'est peut être dû à la fonction getInt mais je ne vois pas comment faire.

Merci de m'apporter vos lumières
PNE-EdT
Dernière modification par PNE-EdT le 01 mars 2019 12:41, modifié 1 fois.
LibreOffice 7.0.3.1 sous Windows 10
LOo 6.3.1.2 sous Windows 10 sur un ancien poste
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9255
Inscription : 28 août 2010 08:45

Re: [Base] Requête SQL sans résultat

Message par micmac »

Bonjour,

Avant de poster une nouvelle question, il nous serait agréable que vous donniez suite au fil précédemment ouvert :
Tris sur valeurs
notamment en précisant la solution retenue et en ajoutant le balisage [Résolu] Image si c'est le cas.
C'est une question de courtoisie pour les gens qui vous ont répondu et consacré bénévolement de leur temps. Notre forum est plus lisible avec ce balisage comme vous avez pu vous en rendre compte en le parcourant.

Merci de votre collaboration
Touche Ctrl de Windows = touche cmd⌘ sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac
Avatar de l’utilisateur
DLE
SuppOOrter
SuppOOrter
Messages : 1477
Inscription : 30 déc. 2007 18:56
Localisation : Lille

Re: [Base] Requête SQL sans résultat

Message par DLE »

Bonjour,

Je n'ai pas tout compris, surtout sans fichier, mais pourriez-vous supprimer le premier

Code : Tout sélectionner

oRslt.next
Cdlt.
MacOS Sonoma 14.4.1 (iMac-Intel) : AOO 4.1.15 , LibreOffice 7.6.5.2, Adoptium-temurinJDK_1.8.0_402 -
Windows 10 64 bits :
AOO 4.1.15, Libreoffice 7.1.8.1 - FireFox, Thunderbird, ORB 1.2.1
PNE-EdT
Membre lOOyal
Membre lOOyal
Messages : 40
Inscription : 28 mai 2018 08:16

Re: [Base] Requête SQL sans résultat

Message par PNE-EdT »

Bonjour,

Je vous ai extrait les éléments de ma base pour expliciter le problème dans un fichier.
(en fait j'ai une base postgres plus grosse, voilà pourquoi je n'avais mis dans un premier temps la base... je pensais le problème simple surtout qu'il y avait déjà un post du même genre dans le forum : le forum le sujet quasi identique 'https://forum.openoffice.org/fr/forum/v ... at#p280918')

Donc j'ia pris le temps d'extraire ma table et ma macro dans un fichier Libo.
Le problème est le même: mon but est de connaitre le code suivant parmi un ensemble de codes liés à un article:
Ma première requête est (Requête1erArgument)

Code : Tout sélectionner

SELECT MIN( "Code" ) AS "codeactuel" FROM "Code" WHERE "article" = 65 AND "Code" > 3
Le résultat est correct avec la macro

Ma seconde requête est (Requête2ndArgument)

Code : Tout sélectionner

SELECT MIN( "Code" ) AS "codeactuel" FROM "Code" WHERE "article" = 65 AND "Code" > 8
Le résultat est faux avec la macro j 'ai 0 au lieu de vide , je ne comprends pas pourquoi

Dans l'exemple joint j'utilise une fonction car je devrais répéter plusieurs fois:
SELECT MIN( "Code" ) AS "codeactuel" FROM "Code" WHERE "article" = NN AND "Code" > NN


J'espère avoir été assez limpide.
Merci de votre aides
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 7.0.3.1 sous Windows 10
LOo 6.3.1.2 sous Windows 10 sur un ancien poste
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Base] Requête SQL sans résultat

Message par Piaf »

Bonjour
Minimum revoie un enregistrement et Libo l'interprète la donnée comme 0
Tu peux tester

Code : Tout sélectionner

Function CodeSuivantCorrige (article as Integer, CodeCourant as Integer) as String
	maConnexion = ThisDatabasedocument.CurrentController.ActiveConnection
	maRequete = maConnexion.createStatement()
	strSQL = "SELECT MIN(""Code"") AS ""codeactuel"", ""article"" FROM ""Code"" WHERE ""Code"" > " & CodeCourant & " GROUP BY ""Code"".""article"" HAVING ( ( ""article"" = " & article & " ) )"
 	resultat = maRequete.executeQuery(strSQL)			
	If resultat.Next Then	
		CodeSuivantCorrige = resultat.Columns(0).Int()
	Else
		CodeSuivantCorrige = "pas de reslt"
	End if								
End Function

Sub Main
	MsgBox CodeSuivantCorrige(65,3)
	MsgBox CodeSuivantCorrige(65,8)
End Sub
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
PNE-EdT
Membre lOOyal
Membre lOOyal
Messages : 40
Inscription : 28 mai 2018 08:16

Re: [Base] Requête SQL sans résultat

Message par PNE-EdT »

Bonjour

j'ai testé et c'est OK
Merci beaucoup
LibreOffice 7.0.3.1 sous Windows 10
LOo 6.3.1.2 sous Windows 10 sur un ancien poste