IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenOffice & LibreOffice Discussion :

Un résultat de requête vide n'est pas détecté par isnull() [LibreOffice][Base de données]


Sujet :

OpenOffice & LibreOffice

  1. #1
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2003
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2003
    Messages : 129
    Points : 122
    Points
    122
    Par défaut Un résultat de requête vide n'est pas détecté par isnull()
    Bonjour,

    Encore moi : je lance une requête de sélection en basic en suivant le tutoriel de la faq OOo et Libo.

    Lorsque la requête contient un résultat, tout va bien. Lorsqu'elle ne renvoie rien, la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not IsNull(oRequete) or Not IsEmpty(oRequete) Then .....
    ne détecte pas que la requête est vide et du coup je récolte une erreur
    Erreur d'exécution BASIC.
    Une exception s'est produite :
    Type: com.sun.star.sdbc.SQLException
    Message: Illegal operation on empty result set..
    Comment faire ?
    Filou07

  2. #2
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 609
    Points
    58 609
    Billets dans le blog
    11
    Par défaut
    Salut,

    Êtes-vous sur que la requête est correcte ? Car le code de la FAQ fonctionne bien, par contre si la code SQL n'est pas correct cela ressort ce résultat.

    Pour voir si le code SQL est correct, il faut mettre un msgbox du code SQL, le copier et le mettre dans une requête pour voir s'il est correct.

    Cdlt.
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  3. #3
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2003
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2003
    Messages : 129
    Points : 122
    Points
    122
    Par défaut
    Oui oui j'ai oublié de préciser que je l'avais fait: la requête affiche une ligne remplie quand elle fonctionne et une ligne vide quand elle ne fonctionne pas en basic...

    D'ailleurs le copier coller depuis une msgbox c'est quand même une super fonctionnalité dont Access pourrait s'inspirer
    Filou07

  4. #4
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 609
    Points
    58 609
    Billets dans le blog
    11
    Par défaut
    Pour ma part, cela fonctionne correctement, sans avoir plus d'éléments le code complet, ce que tu obtiens avec le msgbox du code SQL... nous ne pouvons rien dire de plus.

    Cdlt.
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  5. #5
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2003
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2003
    Messages : 129
    Points : 122
    Points
    122
    Par défaut
    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    	'Définitions
    	dim ListeActe as object, ListeCodeCommune as object, ListeNomCommune as object
    	dim NumOrdre as object
    	dim txtSQL as string
    	dim Me as object
    	dim oDBContext as object, oDB as object, oStatement as object, oResultat as Object
     
    	'Instanciations
    	Me=ThisComponent.DrawPage.Forms.getByName("Formulaire")
    	MeFrmActes= ThisComponent.DrawPage.Forms.getByName("frmActes")
    	MeFrmCommunes= ThisComponent.DrawPage.Forms.getByName("frmCommunes")
     
    	'Validations
                rem .....
                rem .....
                rem .....
     
    	'Comme tout est valide, on vérifie si le dossier n'existe pas déjà
    		'Crée une requete de vérification
    		oDBContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")
    		oDB = oDBContext.GetByName("NomDeMaBase").GetConnection("","")
    		txtSQL="SELECT `NumDossier`, `xNumActe`, `xNumCommune`, `AnneeDossier`, `NumeroOrdre` FROM `xxxxxx`.`T_Dossiers` `T_Dossiers` WHERE `xNumActe` = " & listeActe.SelectedValue & " AND `xNumCommune` = " & ListeCodeCommune.SelectedValue & " AND `AnneeDossier` = " & me.getbyname("txtAnneeDossier").text & " AND `NumeroOrdre` = '" & NumOrdre.text & "'"
    		oStatement=oDB.createStatement()
    		oResultat=oStatement.executeQuery(txtSQL)
     
    		if not isNull(oResultat) or not isEmpty(oResultat) then'.columns.GetByName("NumDossier").string) then
    			oResultat.Next
    			msgbox ("Existe sour le numéro " & oResultat.Getstring(1)) ' équivalent à ... & oResultat.columns.GetByName("NumDossier")
    		else
    			msgbox("n'existe pas encore")	
    		endif
    Captures d'écran du résultat quand je colle le code SQL dans une requête :

    Quand oResultat renvoie un résultat :
    Nom : soffice.bin_2016-02-12_07-55-26.png
Affichages : 404
Taille : 28,4 Ko


    Quand oResultat ne renvoie rien et est censé être Null :
    Nom : 2016-02-12_07-56-00.png
Affichages : 393
Taille : 26,0 Ko

    Serait-ce parce qu'il affiche quand même une ligne avec <AutoChamp> ?
    Filou07

  6. #6
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 609
    Points
    58 609
    Billets dans le blog
    11
    Par défaut
    Salut,

    Peux-tu essayer en replaçant la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    txtSQL="SELECT `NumDossier`, `xNumActe`, `xNumCommune`, `AnneeDossier`, `NumeroOrdre` FROM `xxxxxx`.`T_Dossiers` `T_Dossiers` WHERE `xNumActe` = " & listeActe.SelectedValue & " AND `xNumCommune` = " & ListeCodeCommune.SelectedValue & " AND `AnneeDossier` = " & me.getbyname("txtAnneeDossier").text & " AND `NumeroOrdre` = '" & NumOrdre.text & "'"
    Par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    txtSQL="SELECT ""NumDossier"", ""xNumActe"", ""xNumCommune"",  `""AnneeDossier"", ""NumeroOrdre"" FROM ""xxxxxx"".""T_Dossiers"" ""T_Dossiers""  WHERE ""xNumActe"" = " & listeActe.SelectedValue & " AND ""xNumCommune"" = " & ListeCodeCommune.SelectedValue & " AND ""AnneeDossier"" = " & me.getbyname("txtAnneeDossier").text & "  AND ""NumeroOrdre"" = '" & NumOrdre.text & "'"
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  7. #7
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2003
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2003
    Messages : 129
    Points : 122
    Points
    122
    Par défaut
    Salut,

    Le message d'erreur est le même

    Du coup, j'ai rusé : sachant que, dans mon cas, quand la requête renvoie un résultat, c'est toujours une seule ligne. Cette ligne est donc à la fois le premier enregistrement et le dernier enregistrement.

    Du coup j'ai modifié mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    oResultat=oStatement.executeQuery(txtSQL)
    		oResultat.Next
    		if oResultat.isLast() and oResultat.isFirst() Then
    			'Existe déjà
    			msgbox ("Existe sour le numéro " & oResultat.Getstring(1))
    		else
    			'Nexiste pas encore
    			msgbox("n'existe pas")	
    		endif
    Filou07

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Résultat de requête ne s'affiche pas
    Par Miss Ti dans le forum IHM
    Réponses: 4
    Dernier message: 24/02/2009, 14h38
  2. [XML] [RSS] La mise à jour du flux n'est pas détectée par le lecteur
    Par magicbisous-nours dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 03/03/2008, 21h23
  3. [ODBC] Résultat de requête vide
    Par tisschab dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 01/06/2007, 17h48
  4. [MySQL] Résultat de requête vide
    Par pc.bertineau dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 28/02/2007, 12h51
  5. Résultat de requête vide
    Par Gusano dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 12/12/2005, 14h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo