[Résolu][Base] Formulaire de menu

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 !
BogEtLub
Fraîchement OOthentifié
Messages : 4
Inscription : 19 mars 2018 17:49

[Résolu][Base] Formulaire de menu

Message par BogEtLub »

Bonjour,

Avant tout merci pour votre aide et réponses.

Je débute sur l'utilisation de OpenOffice et à l'aide de ce logiciel, je souhaite effectuer une application de gestion de livres d'une bibliothèque personnelle. Je souhaite à partir du formulaire/Base identifier les livres existants dans la bibliothèque.

L'objectif est d'éditer un formulaire de lancement de l'application sur lequel est proposé différents choix, à savoir :
- Recherche tous les livres existants dans la bibliothèque
- Recherche d'un livre en fournissant son Titre
- Recherche d'un livre en fournissant un Auteur (soit par saisie de l'auteur ou en le sélectionnant dans une liste déroulante)

Sur validation du choix, les informations sont affichées dans un autre formulaire à partir de ce qui a été saisie ou sélectionné dans la liste déroulante.

J'ai crée trois tables:
- Une table contenant tous les Livres
- Une table contenant tous les Auteurs
- Une table de typologie qui contient la description longue du type des livres. (pour le moment elle n'est pas utilisée).

Je vous joins ce que j'ai déjà fait (tables, requêtes, formulaire). A ce stade je suis bloquée malgré mes recherches/lectures.

Mes blocages sont :
1/ Sur saisie d'un titre dans la zone de saisie et en appuyant sur le bouton Valider, je n'arrive pas à implémenter l'ouverture d'un autre formulaire qui affiche les informations relatives à la saisie

2/ Dans la liste déroulante relative aux auteurs, Rien n'apparait alors que j''ai renseigné dans les propriétés de la zone/Donnée/Type du contenu de liste, j'ai renseigné Requête. Et dans Contenu de liste, j'ai inséré le nom de la requête.

Pouvez SVP me fournir des réponses ou des documents/Tuto à lire afin que je puisse poursuivre l'implémentation de ma gestion de bibliothèque de livres.

Merci pour tout

J'utilise OpenOffice 4.1.2 sous Window 10
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par toucan le 22 mars 2018 19:45, modifié 1 fois.
AOO 4.1.5 Win 10
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9251
Inscription : 28 août 2010 08:45

Re: [FORMULAIRE]

Message par micmac »

Bonjour et bienvenue sur le forum,

Le titre de votre question ne doit pas être écrit en lettres capitales. L'emploi de ces caractères est assimilable sur internet à des hurlements. Nétiquette..
Par ailleurs ce titre n'est pas assez explicite, merci de corriger.

Lors d'une recherche, ce sujet risque de passer inaperçu et donc de ne pas aider d'autres personnes ayant le même problème que vous.

Ce titre doit synthétiser votre question et donner envie d'y répondre. Un titre clair et précis augmente vos chances d'obtenir des réponses plus rapidement. Des termes comme, aide, bogue, problème ou OpenOffice étant implicites, n'ont pas besoin d'être mentionnés, de même que macro en section éponyme.

Voici des astuces pour avoir un titre optimum : https://forum.openoffice.org/fr/forum/v ... 1002#p1002

Modifiez-le au plus tôt. Si cela n'est pas fait avant votre prochain message, le sujet sera verrouillé.
votre signature a écrit : OpenOffice4.1.2 Window10
Votre signature indique une version de OpenOffice qui n'est plus maintenue.
Est-ce une une erreur, un oubli, un choix, une obligation ?
Dans ce dernier cas, mentionnez-le dans votre signature par "Obligation de version".

Pour connaître la version que vous possédez : https://forum.openoffice.org/fr/forum/v ... 582#p11582

Il est fortement recommandé d'être à jour de la dernière version : Soyez à jour de la dernière version

Dans votre signature il est nécessaire d'indiquer :
1- La version exacte de AOO ou LibO (AOO 4.1.5, LibO 5.4.5 par exemple) ;
2- La version exacte du système d'exploitation (Windows XP SP3, Vista SP2, Windows 7 SP1, Win 8.1, Win 10, Ubuntu 17.04, MacOS 10.13.3, par exemple).
Accès direct à votre signature pour la corriger.

Cordialement.
Touche Ctrl de Windows = touche cmd⌘ sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Base]Formulaire de menu

Message par Piaf »

Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25167
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Base]Formulaire de menu

Message par Dude »

BogEtLub a écrit :L'objectif est d'éditer un formulaire de lancement de l'application sur lequel est proposé différents choix
Voir du côté de l'extension Switchboard
BogEtLub
Fraîchement OOthentifié
Messages : 4
Inscription : 19 mars 2018 17:49

Re: [Base]Formulaire de menu

Message par BogEtLub »

Bonjour ,


Merci Piaf pour ton fichier. J'ai testé et cela fonctionne.

Par contre pour bien comprendre les différentes instructions/macros, je (re)écris celles-ci pas à pas en faisant quelques modifications pour voir/comprendre comment cela fonctionne.
Aussi je bloque sur l'instruction .Filter
Que je garde tes variables ou que je change une des variables, je tombe sur une erreur. Le message est le suivant :
OpenOffice 4.1.5
Erreur d'exécution du BASIC, une erreur d'exception s'est produite.
Type: com.sun.star.container.NoSuchElementExceptionMessage

Aussi est-il possible d'avoir une explication sur .Filter (ou une documentation s'y référant) ainsi que sur la partie de ton code (isloaded, .load, .reload)
.Applyfilter = True
If .isloaded = False Then
.load
else .reload

J'ai du mal à voir comment à partir de ma zone de texte ("BoxTextTitre"), les informations adéquates sont affichées sur le formulaire "F_LivresBiblio"

Ci-joint mon fichier de test (LivresBibliotheque) de test pas à pas.

Merci encore
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
AOO 4.1.5 Win 10
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Base]Formulaire de menu

Message par Piaf »

Bonjour

Code : Tout sélectionner

.Filter="""TitreLivre"" =" & Apos(TitreLivre)
.Applyfilter = True
est l'instruction qui correspond dans l'interface à
Filtre.png
Le premier critère est le nom du champ (celui donné dans la table, pas le nom du contrôle), le second est la valeur du filtre à appliquer.
Si la valeur est de type texte, il faut l'encadrer de quotte. Il est préférable d'utiliser la fonction Apos (fais une recherche sur le Forum) au cas ou il y ait une apostrophe dans le texte.

Code : Tout sélectionner

If  .isloaded = False Then
	.load
Else
	.reload
End If
Le premier If vérifie que le formulaire soit chargé, s'il ne l'est pas il le charge (cette instruction n'est pas utile dans tous les cas, cela dépend du temps de chargement du formulaire).
Le Else recharge le formulaire si celui-ci est déjà chargé.
A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
BogEtLub
Fraîchement OOthentifié
Messages : 4
Inscription : 19 mars 2018 17:49

Re: [Base]Formulaire de menu

Message par BogEtLub »

Bonjour,

Merci Piaf pour ton retour.
Cela me permet de mieux comprendre comment cela fonctionne.
Je poursuis sur l'ouverture de formulaire.
Suite à l'ouverture du formulaire et en m'inspirant des exemples donnés, je suis confrontée à l'erreur suivante : " Propriété ou méthode non trouvée : Command "
L' erreur apparaît sur l'instruction ci-dessous
FormLivre.Command = BibSQL 'Redéfinition de la source du formulaire

De même lorsque j'ajoute Apos devant une variable, j'ai également l'erreur ci-dessous
" Sous procédure ou procédure de fonction non définie "

L' erreur apparaît sur l'instruction ci-dessous
.Filter="""TitreLivre"" ='" & Apos ( cTitreLivre ) & "'"

En regardant les exemples, je n'arrive pas à identifier mon Erreur.
Question : Dois-je installer un module particulier pour avoir les fonctions telles que Apos, Command etc...

Ci-joint mon fichier
Merci pour l'aide apportée.
AOO 4.1.5 Win 10
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Base]Formulaire de menu

Message par Piaf »

Bonjour
BogEtLub a écrit :Propriété ou méthode non trouvée : Command
Ma boule de cristal étant en panne, je ne peux pas savoir comment tu utilises cette propriété. Merci de fournir un exemple reproduisant le problème.
BogEtLub a écrit :De même lorsque j'ajoute Apos devant une variable, j'ai également l'erreur ci-dessous
" Sous procédure ou procédure de fonction non définie "
Piaf a écrit :Il est préférable d'utiliser la fonction Apos (fais une recherche sur le Forum)
Gérer l'apostrophe dans une requête SQL
Et

Code : Tout sélectionner

.Filter="""TitreLivre"" ='" & Apos ( cTitreLivre ) & "'"
n'est pas

Code : Tout sélectionner

.Filter="""TitreLivre"" =" & Apos(TitreLivre)
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
BogEtLub
Fraîchement OOthentifié
Messages : 4
Inscription : 19 mars 2018 17:49

Re: [Base]Formulaire de menu

Message par BogEtLub »

Bonjour,


Désolée, bien que j'ai écrit ci-joint le fichier, à priori mon fichier n'a pas été mis en pièce jointe.

Ceci dit, en lisant ton retour, j'ai compris que Apos n'est pas une fonction par défaut à AOO. Aussi j'ai donc récupéré dans ton lien la fonction Apos, et je l'ai intégré dans mon programme.
Du coup, je n'ai plus l'erreur " Sous procédure ou procédure de fonction non définie ".

Pour ce qui est de l'erreur : " Propriété ou méthode non trouvée : Command "

L' erreur apparaît sur l'instruction ci-dessous
FormLivre.Command = BibSQL 'Redéfinition de la source du formulaire

Ci-joint le fichier odb dans leqel apparaît l'erreur.

J'utilise la requête définit dans la variable BibSQL car j'aimerais voir apparaître pour un auteur sélectionné dans la liste déroulante, la liste de tous ses livres (sur la même page)

Merci
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
AOO 4.1.5 Win 10
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Base]Formulaire de menu

Message par Piaf »

Bonjour
Pour que la macro fonctionne :
Dans un premier temps modifie la requête Req_ListeAuteur

Code : Tout sélectionner

SELECT DISTINCT "NomAuteur" FROM "T_LIVRES"
Ensuite pour la macro

Code : Tout sélectionner

		  elseIf cListeAuteur <> "" Then
		  	 BibSQL = "SELECT * FROM T_LIVRES WHERE NomAuteur = " & Apos( cListeAuteur)
			 FormLivre = ThisDatabaseDocument.FormDocuments.getByName("F_AuteurBiblio").open
			 With FormLivre.DrawPage.Forms.getByName("F_AuteurBiblio") 
			 	.CommandType = 2
                .Command = BibSQL            'Redéfinition de la source du formulaire
                .reload                     'Recharge le formulaire
			End With
Devrait le faire.
Maintenant ton modèle relationnel n'est pas correct, un livre peut avoir plusieurs auteurs, et un auteur plusieurs livres. Il te faut donc une table AuteurLivre avec ce type de relations
Relations.png
A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64