[Résolu][Base] Éviter le bouton Validation

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 !
CCA
Membre OOrganisé
Membre OOrganisé
Messages : 89
Inscription : 29 nov. 2011 18:04

[Résolu][Base] Éviter le bouton Validation

Message par CCA »

Bonjour

J'ai mis en œuvre la solution décrite dans le fil http://user.services.openoffice.org/fr/ ... 29&t=14662
Le bouton Validation, permettant d'afficher les informations dépendantes de la sélection se révèle être parfois, d'une manipulation lourde, d'autant qu'il entraîne une demande de validation des modifications du formulaire.
Aussi, je recherche une façon de faire le rafraichissement d'écran par macro.

Pour cela, j'ai besoin de savoir comment on écrit dans l'API : rafraichir (refresh) le formulaire courant.

Je joins une base pour l'exemple. Cela me sera aussi nécessaire dans Writer.

CCA


Système XP Professionnel Version 5.1
Open Office 3.3.0 OOo330m20(build 9567)
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par CCA le 04 févr. 2012 14:23, modifié 3 fois.
Systeme Exploitation Windows 8.1
Apache Open Office 4.1.0
Moteur de base de donnes MYSQL 5.0.45
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 26195
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Basic]Eviter le bouton Validation

Message par Dude »

Salut,
CCA a écrit :Le bouton Validation, permettant d'afficher les informations dépendantes de la sélection se révèle être parfois, d'une manipulation lourde, d'autant qu'il entraîne une demande de validation des modifications du formulaire.
Rien compris à ton histoire de lourdeur. Ton formulaire n'est pas bon.
S'il s'agit juste d'avoir une liste qui raffraichit les enregistrements, il y a un exemple très simple dans ce fil : http://user.services.openoffice.org/fr/ ... 543#p17382
Tu vois qu'il n'y a aucun bouton pour la validation.
CCA a écrit :Cela me sera aussi nécessaire dans Writer.
Writer est le module utilisé par Base pour exécuter les formulaires.
Néanmoins, le comportement d'une macro peut être différent suivant qu'il soit attaché ou non à un ODB.

Merci d'ajouter [Résolu] au début du titre de ton 1er message et de cocher la case de l'icône de sujet (le V vert).
Poser une question, c'est bien. Répondre aux autres, c'est encore mieux.
Améliorez AOO et votez pour les issues
CCA
Membre OOrganisé
Membre OOrganisé
Messages : 89
Inscription : 29 nov. 2011 18:04

Re: [Basic] Éviter le bouton Validation

Message par CCA »

Bonjour Dude et merci
Je doit vous dire que ce n'est pas encore résolu.

J'ai essayé de mettre en place la procédure AfficheChamp.
Si j'ai bien compris, cette macro est utilisée par un document Writer. J'ai saisi la macro dans mon contexte et fait un document Wrtier.
Quand je lance une sélection, le débugger Basic s’arrête sur l’instruction
"oForm = oDoc.DrawPage.Forms.getByName("Standard")"

Erreur d'exécution basic :
Une exception s'est produite
Type: com.sun.star.Container.NoSuchElementException

Ce n'est pas la première fois que je trouve ce type de message avec l'objet com.star
Pourquoi??
Systeme Exploitation Windows 8.1
Apache Open Office 4.1.0
Moteur de base de donnes MYSQL 5.0.45
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 26195
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Basic] Éviter le bouton Validation

Message par Dude »

CCA a écrit :Si j'ai bien compris, cette macro est utilisée par un document Writer.
Pas du tout, reprend le lien que je te donne. C'est un ODB qui est fourni comme exemple.
CCA
Membre OOrganisé
Membre OOrganisé
Messages : 89
Inscription : 29 nov. 2011 18:04

Re: [Basic] Éviter le bouton Validation

Message par CCA »

Dude

Voici donc le résultat de mon essai sur la base.
J'ai écrit la macro 'AfficheEcran' et je l'ai affectée à l'évènement Modifié du contrôle de sélection.
Arrêt et débogage. La propriété Text n'existe pas pour une Zone de Liste. Quelle est la propriété de cet objet qui donne sa valeur.

Je joins mon essai sur une base restreinte. Voir le formulaire ADM_Sociétés
J'ai cherché aussi une autre prise : une méthode de rafraichissement du formulaire principal. C'est le formulaire ADM_Sociétés_bis.
Même punition

Est-ce quelqu’un connait la syntaxe et pourrait m'aider.
Ou bien quelqu'un puisse m'indiquer la documentation permettant de trouver les propriétés des contrôles (j'ai trouvé les méthodes) avec exemple d'utilisation. Ainsi que les méthodes de formulaire.

Merci
Claude
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Systeme Exploitation Windows 8.1
Apache Open Office 4.1.0
Moteur de base de donnes MYSQL 5.0.45
gilles75
Membre lOOyal
Membre lOOyal
Messages : 28
Inscription : 06 juin 2010 19:10

Re: [Basic] Éviter le bouton Validation

Message par gilles75 »

Bonsoir,
En installant Xray et le SDK (voilà pour la doc) vous auriez trouvé .CurrentValue comme propriété pour une zone liste.
Attention, vous avez utilisé dans le 1er formulaire le même nom pour la zone de liste et son étiquette.
Bonne continuation
LibO 3.5.4 officielle sous Ubuntu 12.04
CCA
Membre OOrganisé
Membre OOrganisé
Messages : 89
Inscription : 29 nov. 2011 18:04

Re: [Basic] Éviter le bouton Validation

Message par CCA »

Merci Gilles, tu m'as permis de comprendre, comment on appelle un contrôle, un formulaire et le lien Parent-Collection.
J'ai été longue, mais j'ai fait des pas en avant.

Toutefois, je me suis penchée sur la piste reload et non refresh comme dit dans mon mail précédent.
Il me semble comprendre que "reload" relit les données dans la base et les ré-affiche, dans l'état initial.
OK
Pour moi, je voudrais connaître le service du formulaire qui permet de réinterroger la base avec la nouvelle valeur qui a été choisie dans la boite de sélection ( Voir la base donnée en exemple) l'équivalent de l'action "rafraichir le formulaire" d'un bouton.
Puisque les sources sont accessibles, n'y a-t-il pas un crac qui saurait me répondre?

Merci
Claude
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Systeme Exploitation Windows 8.1
Apache Open Office 4.1.0
Moteur de base de donnes MYSQL 5.0.45
Avatar de l’utilisateur
spYre
InconditiOOnnel
InconditiOOnnel
Messages : 888
Inscription : 29 oct. 2008 19:02
Localisation : Liège, Belgique

Re: [Basic] Éviter le bouton Validation

Message par spYre »

Bonjour CCA,

L'action "Rafraîchir" prédéfinie implique une séquence d'actions distinctes : validation de la saisie, envoi de la valeur dans la base de données, mise à jour du formulaire d'appel.
Pour reproduire ce comportement par macro, il faut donc explicitement envoyer chacune de ces instructions :

Code : Tout sélectionner

Sub RafraichirFormulaire (Event)
	ListBox = Event.Source.Model
	ListBox.commit()
	oForm = ListBox.Parent
	oForm.updateRow()
	oForm.reload()
end Sub
Cordialement.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 3.3.4 + Report Builder
Windows 7 / Windows XP sp3
Ubuntu 11.10 / LMDE
CCA
Membre OOrganisé
Membre OOrganisé
Messages : 89
Inscription : 29 nov. 2011 18:04

Re: [Basic] Éviter le bouton Validation

Message par CCA »

Merci spYre, c'est exactement ce que je cherchais.
Si quelqu'un tombe sur cette question, sachez que cela marche du feu de Dieu. Et en plus, spYre nous explique le pourquoi du Comment.

Mes excuses du long silence, j'étais absente.

Bonne suite
Claude
Systeme Exploitation Windows 8.1
Apache Open Office 4.1.0
Moteur de base de donnes MYSQL 5.0.45