[Résolu][Base]Codage d'une requête Count

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 !
GMHB
Membre OOrganisé
Membre OOrganisé
Messages : 88
Inscription : 19 févr. 2023 09:59

[Résolu][Base]Codage d'une requête Count

Message par GMHB »

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.
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
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
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

Message par jeanmimi »

Bonjour,
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"
Le code final, en prenant celui que tu as rédigé, pourrait ressembler à :

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
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
LibreOffice : Version : 24.2 (x64)(12 avril 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
GMHB
Membre OOrganisé
Membre OOrganisé
Messages : 88
Inscription : 19 févr. 2023 09:59

Re: [Base]Codage d'une requête Count

Message par GMHB »

Merci à vous.
Je me bagarrais avec les guillemets alors que l'erreur était ailleurs ! Pas étonnant que j'ai lutté pendant des heures ! :fou:
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
Mais je n'obtiens pas le nombre d'enregistrements présents dans la table comme souhaité.
LibreOffice 7.4.7.2 (x64)
Windows 10
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
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

Message par jeanmimi »

GMHB a écrit : 17 avr. 2023 18:31 Mais je n'obtiens pas le nombre d'enregistrements présents dans la table comme souhaité.
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
GMHB
Membre OOrganisé
Membre OOrganisé
Messages : 88
Inscription : 19 févr. 2023 09:59

Re: [Base]Codage d'une requête Count

Message par GMHB »

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
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
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

Message par jeanmimi »

GMHB a écrit : 17 avr. 2023 19:04 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.
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
GMHB
Membre OOrganisé
Membre OOrganisé
Messages : 88
Inscription : 19 févr. 2023 09:59

Re: [Base]Codage d'une requête Count

Message par GMHB »

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
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
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

Message par jeanmimi »

GMHB a écrit : 17 avr. 2023 19:13 Le problème, c'est que j'ai besoin du nombre d'enregistrements pour une condition qui suivra dans la même macro.
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
GMHB
Membre OOrganisé
Membre OOrganisé
Messages : 88
Inscription : 19 févr. 2023 09:59

Re: [Base]Codage d'une requête Count

Message par GMHB »

Merci à vous et bonne nuit.
LibreOffice 7.4.7.2 (x64)
Windows 10
GMHB
Membre OOrganisé
Membre OOrganisé
Messages : 88
Inscription : 19 févr. 2023 09:59

Re: [Résolu][Base]Codage d'une requête Count

Message par GMHB »

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