[Résolu][Base]Codage d'une requête Count
Modérateur : Vilains modOOs
Règles du forum
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 !
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 !
-
- Membre OOrganisé
- Messages : 88
- Inscription : 19 févr. 2023 09:59
[Résolu][Base]Codage d'une requête Count
Bonjour,
J'ai besoin de savoir si une base contient des enregistrements. Pour cela j'ai pensé à utiliser la fonction "COUNT" dans une macro.
La macro incluse dans la petite base-test jointe coince à la ligne 9. Sans doute un problème de guillemets. J'ai fait mille changements pour améliorer cette ligne de code... mais rien n'y fait. Je suis sur les genoux !!!
Du coup, je ne sais pas si ma macro est bien codée.
Je vous remercie si vous parvenez à vaincre cette entêtée ligne 9.
J'ai besoin de savoir si une base contient des enregistrements. Pour cela j'ai pensé à utiliser la fonction "COUNT" dans une macro.
La macro incluse dans la petite base-test jointe coince à la ligne 9. Sans doute un problème de guillemets. J'ai fait mille changements pour améliorer cette ligne de code... mais rien n'y fait. Je suis sur les genoux !!!
Du coup, je ne sais pas si ma macro est bien codée.
Je vous remercie si vous parvenez à vaincre cette entêtée ligne 9.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par GMHB le 17 avr. 2023 19:21, modifié 1 fois.
LibreOffice 7.4.7.2 (x64)
Windows 10
Windows 10
-
- Grand Maître de l'OOffice
- Messages : 16960
- Inscription : 03 mars 2006 16:02
- Localisation : Venise verte
Re: [Base]Codage d'une requête Count
Bonjour,
Si tu fais une requête pour compter, elle devrait commencer par l'instruction SQL SELECT, de cette façon :
Le code final, en prenant celui que tu as rédigé, pourrait ressembler à :
Je n'ai pas vu le contrôle, ou la Boite de dialogue, qui doit afficher le résultat sur le formulaire.
Ce tutoriel explique comment construire la Macro :
https://beaussier.com/sections/viewtopic.php?f=8&t=1577
Si tu fais une requête pour compter, elle devrait commencer par l'instruction SQL SELECT, de cette façon :
Code : Tout sélectionner
SELECT COUNT( "contenu" ) FROM "T_table1"
Code : Tout sélectionner
REM ***** BASIC *****
Sub monCount
Dim maRequete As Object, strSQL As String, maConnexion As Object, monResultat as Object
Dim iNombre As Integer
maConnexion = ThisDatabaseDocument.CurrentController.ActiveConnection
strSQL ="SELECT COUNT( ""contenu"" ) FROM ""T_table1"""
maRequete = maConnexion.createStatement()
monResultat = maRequete.executeQuery(strSQL)
if monResultat.next then
monResultat = maRequete.executeQuery(strSQL)
monResultat.next
iNombre = monResultat.Columns.getByName("contenu").String
msgBox (iNombre & " enregistrements")
else
msgbox ("Table vide")
end if
maConnexion.close
maConnexion.dispose
End Sub
Ce tutoriel explique comment construire la Macro :
https://beaussier.com/sections/viewtopic.php?f=8&t=1577
LibreOffice : Version : 24.2 (x64)(12 avril 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
-
- Membre OOrganisé
- Messages : 88
- Inscription : 19 févr. 2023 09:59
Re: [Base]Codage d'une requête Count
Merci à vous.
Je me bagarrais avec les guillemets alors que l'erreur était ailleurs ! Pas étonnant que j'ai lutté pendant des heures !
La macro devrait afficher le nombre d'enregistrements de la table à la ligne msgBox (iNombre & " enregistrements")
J'ai modifié ainsi :
Mais je n'obtiens pas le nombre d'enregistrements présents dans la table comme souhaité.
Je me bagarrais avec les guillemets alors que l'erreur était ailleurs ! Pas étonnant que j'ai lutté pendant des heures !
La macro devrait afficher le nombre d'enregistrements de la table à la ligne msgBox (iNombre & " enregistrements")
J'ai modifié ainsi :
Code : Tout sélectionner
Sub monCount
Dim maRequete As Object, strSQL As String, maConnexion As Object, monResultat as Object
Dim iNombre As Integer
maConnexion = ThisDatabaseDocument.CurrentController.ActiveConnection
strSQL ="SELECT COUNT( ""contenu"" ) FROM ""T_table1"""
maRequete = maConnexion.createStatement()
monResultat = maRequete.executeQuery(strSQL)
if monResultat.next then
msgBox ("La table contient des enregistrements")
else
msgbox ("Table vide")
end if
maConnexion.close
maConnexion.dispose
End Sub
LibreOffice 7.4.7.2 (x64)
Windows 10
Windows 10
-
- Grand Maître de l'OOffice
- Messages : 16960
- Inscription : 03 mars 2006 16:02
- Localisation : Venise verte
Re: [Base]Codage d'une requête Count
Pourtant, c'est ton code, avec seulement le SELECT en début de la requête.
Ceci étant dit, tu peux avoir le résultat de la requête, sans Macro, en affichant son résultat dans un champ du formulaire.
LibreOffice : Version : 24.2 (x64)(12 avril 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
-
- Membre OOrganisé
- Messages : 88
- Inscription : 19 févr. 2023 09:59
Re: [Base]Codage d'une requête Count
Je ne connais pas le code permettant de récupérer le nombre d'enregistrements de la table que la ligne SELECT COUNT est censée fournir.
LibreOffice 7.4.7.2 (x64)
Windows 10
Windows 10
-
- Grand Maître de l'OOffice
- Messages : 16960
- Inscription : 03 mars 2006 16:02
- Localisation : Venise verte
Re: [Base]Codage d'une requête Count
Tu crées la requête et tu insères son résultat dans un contrôle du formulaire.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice : Version : 24.2 (x64)(12 avril 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
-
- Membre OOrganisé
- Messages : 88
- Inscription : 19 févr. 2023 09:59
Re: [Base]Codage d'une requête Count
Le problème c'est que j'ai besoin du nombre d'enregistrements pour une condition qui suivra dans la même macro.
LibreOffice 7.4.7.2 (x64)
Windows 10
Windows 10
-
- Grand Maître de l'OOffice
- Messages : 16960
- Inscription : 03 mars 2006 16:02
- Localisation : Venise verte
Re: [Base]Codage d'une requête Count
Tu peux marquer ce fil comme Résolu, et tu en crées un autre avec cette nouvelle condition.
LibreOffice : Version : 24.2 (x64)(12 avril 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
-
- Membre OOrganisé
- Messages : 88
- Inscription : 19 févr. 2023 09:59
Re: [Base]Codage d'une requête Count
Merci à vous et bonne nuit.
LibreOffice 7.4.7.2 (x64)
Windows 10
Windows 10
-
- Membre OOrganisé
- Messages : 88
- Inscription : 19 févr. 2023 09:59
Re: [Résolu][Base]Codage d'une requête Count
Je ne trouve pas de macro liée au champ affiché dans le formulaire FORM_REQ_COUNT. Comment faites-vous cela ?
LibreOffice 7.4.7.2 (x64)
Windows 10
Windows 10