[Résolu] initialisation des checkbox

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 !
Yaone
Membre OOrganisé
Membre OOrganisé
Messages : 94
Inscription : 04 avr. 2006 13:48

[Résolu] initialisation des checkbox

Message par Yaone »

Bonjour,

J'ai des checkBox (cases à cocher) dans une colonne d'une grille d'un formulaire et j'aimerais pouvoir les initialiser à non cochées (état 0) et sans l'état 2 à l'ouverture de mon formulaire.

J'avais essayé une macro mais elle ne marche pas :
(mon_formulaire est le nom de mon formulaire
ma_grille est le nom de ma grille
selection est le nom de ma colonne de checkBox)

Code : Tout sélectionner

sub initialisation()
   dim doc as Object, grille as Object
   dim form as Object, control as Object

   doc = ThisComponent
   form = doc.DrawPage.Forms("mon_formulaire")
   grille = form.getByName("ma_grille")
   control = grille.getByName("selection")
   control.enableTriState(false)
   control.setState(0)
end sub
Il me met comme erreur :
Runtime error BASIC
Propriété ou méthode introuvable.
sur la ligne control.enableTriState(false) mais aussi sur la ligne control.setState(0) quand j'enlève la première.

Je ne vois pas du tout comment y arriver. Si vous avez une idée, n'hésitez pas.
Merci.
Dernière modification par Yaone le 20 avr. 2006 09:50, modifié 1 fois.
OOo 2.0.1 sous WinXP SP2
Avatar de l’utilisateur
cris59
Membre enthOOusiaste
Membre enthOOusiaste
Messages : 482
Inscription : 20 mars 2006 15:15
Localisation : Paris

Message par cris59 »

Essaie d'utiliser

Code : Tout sélectionner

.
.
control = grille.getByName("selection")
control.TriState = false    'supprime l'état indéterminé du TriState
control.State = 0        'décoche la case à cocher


Qu'est-ce que c'est une "grille"?

cris59
WinXP PRO SP2 avec OOo2.2 & Vista avec OOo2.3.1
& Debian avec OOo2.2

http://www.cpserv.net/
Yaone
Membre OOrganisé
Membre OOrganisé
Messages : 94
Inscription : 04 avr. 2006 13:48

Message par Yaone »

Une grille, c'est une sorte de tableau. Il me permet d'afficher les valeurs de ma table.

Bon, j'ai essayé ce que tu m'as proposé et il m'affiche la même erreur. :?
OOo 2.0.1 sous WinXP SP2
Avatar de l’utilisateur
cris59
Membre enthOOusiaste
Membre enthOOusiaste
Messages : 482
Inscription : 20 mars 2006 15:15
Localisation : Paris

Message par cris59 »

tu travailles avec quoi? Writer, Calc, Base...?
WinXP PRO SP2 avec OOo2.2 & Vista avec OOo2.3.1
& Debian avec OOo2.2

http://www.cpserv.net/
Yaone
Membre OOrganisé
Membre OOrganisé
Messages : 94
Inscription : 04 avr. 2006 13:48

Message par Yaone »

Sur un formulaire créé à partir de Base sur Writer.
(en résumé, sur writer, non ?)
OOo 2.0.1 sous WinXP SP2
Avatar de l’utilisateur
cris59
Membre enthOOusiaste
Membre enthOOusiaste
Messages : 482
Inscription : 20 mars 2006 15:15
Localisation : Paris

Message par cris59 »

Je ne sais quoi te dire, je n'ai en encore jamais utilisé Base.

Néanmoins j'ai fait un essai, j'ai créé une table avec un formulaire associé.
Dans le formulaire j'ai rajouté une case à cocher (CheckBox), j'ai mis la macro dans un module sur le formulaire, et ça à fonctionner...
WinXP PRO SP2 avec OOo2.2 & Vista avec OOo2.3.1
& Debian avec OOo2.2

http://www.cpserv.net/
Avatar de l’utilisateur
cris59
Membre enthOOusiaste
Membre enthOOusiaste
Messages : 482
Inscription : 20 mars 2006 15:15
Localisation : Paris

Message par cris59 »

J'ai trouvé de quoi tu te servais, si j'avais bien lu "colonne de CheckBox", j'aurais saisi de suite (Base n'est pas trop différent d'Access).

Je vais voir si l'on peut accéder à des CheckBox d'une colonne de Grid par macro
WinXP PRO SP2 avec OOo2.2 & Vista avec OOo2.3.1
& Debian avec OOo2.2

http://www.cpserv.net/
Yaone
Membre OOrganisé
Membre OOrganisé
Messages : 94
Inscription : 04 avr. 2006 13:48

Message par Yaone »

Je te remercie.

J'avais pensé à autre chose mais il ne connait pas le setText. :?
(genre mettre une colonne avec un format booleen qui pointe sur le même champs de la table que mes checkBox)

Je me sers peut-être mal des fonctions, pour ça qu'il ne les connait pas ? :?
OOo 2.0.1 sous WinXP SP2
marco1320
Membre OOrganisé
Membre OOrganisé
Messages : 63
Inscription : 06 déc. 2005 16:46

trop simple?

Message par marco1320 »

c'est ptêt pas ça que tu recherches comme réponse, mais on ne sait jamais:

Lorsque tu définis ta base, avec un champ de type oui/non, tu peux lui définir une valeur par défaut...
C'était ça que tu cherchais? ou bien c'est au cas pas cas par formulaire(et dans ce cas, je n'ai pas de réponse)?
Yaone
Membre OOrganisé
Membre OOrganisé
Messages : 94
Inscription : 04 avr. 2006 13:48

Message par Yaone »

J'y ai pensé, je te rassure.
Mais dès que je change la valeur (dès que je coche sur une case) dans le formulaire, quand je le réouvre, il me laisse la case cochée.
OOo 2.0.1 sous WinXP SP2
Avatar de l’utilisateur
cris59
Membre enthOOusiaste
Membre enthOOusiaste
Messages : 482
Inscription : 20 mars 2006 15:15
Localisation : Paris

Message par cris59 »

C'est normal puisque tu changes ta valeur dans ta table source!
WinXP PRO SP2 avec OOo2.2 & Vista avec OOo2.3.1
& Debian avec OOo2.2

http://www.cpserv.net/
Yaone
Membre OOrganisé
Membre OOrganisé
Messages : 94
Inscription : 04 avr. 2006 13:48

Message par Yaone »

Je le sais bien.

Mais si je lui demande de ne pas changer la valeur de mon champs, je ne peux plus cocher sur les cases pour sélectionner la ligne dont j'ai besoin. :?
Si tu as une autre idée. :roll:

Je n'aurais pas posé la question si ça avait été aussi simple ^^" (et c'est là que c'est un truc tout bête ou impossible à faire ^^")


J'ai remarqué qu'il y avait peu de doc sur les Grid et leur utilisation avec des macros, vous n'en connaitriez pas ?
OOo 2.0.1 sous WinXP SP2
Avatar de l’utilisateur
cris59
Membre enthOOusiaste
Membre enthOOusiaste
Messages : 482
Inscription : 20 mars 2006 15:15
Localisation : Paris

Message par cris59 »

Si les valeurs doivent être réinitialisées à chaque ouverture du formulaire, il faut alors faire une requête ... pas une macro

UPDATE taTable ... je ne connais pas la syntaxe exacte, et tu peux sans doute la mettre dans une macro sur ouverture ou appel par un bouton ...
WinXP PRO SP2 avec OOo2.2 & Vista avec OOo2.3.1
& Debian avec OOo2.2

http://www.cpserv.net/
Yaone
Membre OOrganisé
Membre OOrganisé
Messages : 94
Inscription : 04 avr. 2006 13:48

Message par Yaone »

Voilà une idée auquelle je n'avais pas pensé. Je vais essayer. :wink:
OOo 2.0.1 sous WinXP SP2
Yaone
Membre OOrganisé
Membre OOrganisé
Messages : 94
Inscription : 04 avr. 2006 13:48

Message par Yaone »

Bon, j'ai essayé avec un UPDATE mais il me fait une erreur.

VOici le code :

Code : Tout sélectionner

sub initialisation()
    dim maRequete as Object, resuQuery as Object
    dim instrSQL as String

    connexionSource
    instrSQL = "UPDATE ma_table SET 'select' = false"
    maRequete = maConnexion.createStatement()
    resuQuery = maRequete.executeUpdate(instrSQL)
    deconnexionSource
end sub
Et l'erreur sur la ligne resuQuery = maRequete.executeUpdate(instrSQL) :
Runtime error BASIC
Exception
Type: com.sun.star.sdbc.SQLException
Message: Aucune valeur donnée pour un ou plusieurs des paramètres requis
Si vous pouviez m'aider à corriger cette erreur ou si vous avez un autre moyen d'arriver au même résultat, je suis preneuse aussi.
OOo 2.0.1 sous WinXP SP2
Avatar de l’utilisateur
cris59
Membre enthOOusiaste
Membre enthOOusiaste
Messages : 482
Inscription : 20 mars 2006 15:15
Localisation : Paris

Message par cris59 »

Je ne suis pas trop versée sur le sujet, mais je ne mettrai pas le nom de champ entre cotes...
WinXP PRO SP2 avec OOo2.2 & Vista avec OOo2.3.1
& Debian avec OOo2.2

http://www.cpserv.net/
Yaone
Membre OOrganisé
Membre OOrganisé
Messages : 94
Inscription : 04 avr. 2006 13:48

Message par Yaone »

Si je n'en mets pas, il me génère une autre erreur. :?
OOo 2.0.1 sous WinXP SP2
Avatar de l’utilisateur
cris59
Membre enthOOusiaste
Membre enthOOusiaste
Messages : 482
Inscription : 20 mars 2006 15:15
Localisation : Paris

Message par cris59 »

Tu me diras que dans l'aide, ils mettent les noms de tables et de champs entre double cotes, alors...
WinXP PRO SP2 avec OOo2.2 & Vista avec OOo2.3.1
& Debian avec OOo2.2

http://www.cpserv.net/
Avatar de l’utilisateur
cris59
Membre enthOOusiaste
Membre enthOOusiaste
Messages : 482
Inscription : 20 mars 2006 15:15
Localisation : Paris

Message par cris59 »

Code : Tout sélectionner

Sub initialisation
 dim maRequete as Object, resuQuery as Object
 dim instrSQL as String
 dim vrai as boolean
    vrai = FALSE
    ConnecterSource
    instrSQL = "UPDATE" &  chr(34) & "TAuteurs" &  chr(34) &_
    	 "SET" &  chr(34) & "Genre" &  chr(34) & " = " & chr(39) & vrai & chr(39)
    maRequete = maConnexion.createStatement()
    resuQuery = maRequete.executeQuery(instrSQL)
    DeconnecterSource 
    Recharger_formulaire
End Sub

Sub Recharger_formulaire
 dim monDoc as Object, unForm as Object
    monDoc = thisComponent 
    unForm = monDoc.drawPage.Forms.getByName("MainForm")
    unForm.reload()
End Sub
Tu accroches la macro "initialisation" à un bouton dans ton formulaire.
WinXP PRO SP2 avec OOo2.2 & Vista avec OOo2.3.1
& Debian avec OOo2.2

http://www.cpserv.net/
Yaone
Membre OOrganisé
Membre OOrganisé
Messages : 94
Inscription : 04 avr. 2006 13:48

Message par Yaone »

J'ai fait ce que tu m'as donné et il me génère une erreur sur la ligne resuQuery = maRequete.executeQuery(instrSQL) :
Runtime error BASIC
Exception
Type: com.sun.star.sdbc.SQLException
Message: Aucune valeur donnée pour un ou plusieurs des paramètres requis
Et je ne sais pas comment la corriger ^^"
OOo 2.0.1 sous WinXP SP2
Avatar de l’utilisateur
cris59
Membre enthOOusiaste
Membre enthOOusiaste
Messages : 482
Inscription : 20 mars 2006 15:15
Localisation : Paris

Message par cris59 »

Je t'envoie l'essai que j'ai fait et qui fonctionne aussi bien sous winXP, que sous Debian...

N'oublie pas de rajouter la base dans Outils/Options/OpenOffice.org Base et Nouveau ...

http://oooforum.free.fr/cijoint/fichier ... 055638.odb

J'ai vu que tu avais un nom de champ --> select, utilise plutot des noms qui ne peuvent prêter à confusion

cris59
WinXP PRO SP2 avec OOo2.2 & Vista avec OOo2.3.1
& Debian avec OOo2.2

http://www.cpserv.net/
Yaone
Membre OOrganisé
Membre OOrganisé
Messages : 94
Inscription : 04 avr. 2006 13:48

Message par Yaone »

Je viens de trouver mon erreur (je devais être fatiguée ce jour-là ^^")
Ca marche nickel.

Mais il faudrait que je mette cette macro sur quel évènement du formulaire pour qu'il l'exécute dès l'ouverture ?
OOo 2.0.1 sous WinXP SP2
Avatar de l’utilisateur
cris59
Membre enthOOusiaste
Membre enthOOusiaste
Messages : 482
Inscription : 20 mars 2006 15:15
Localisation : Paris

Message par cris59 »

lors du chargement

donc plus besoin de bouton, sauf si tu veux réinitialiser en cours de route

cris59
WinXP PRO SP2 avec OOo2.2 & Vista avec OOo2.3.1
& Debian avec OOo2.2

http://www.cpserv.net/
Yaone
Membre OOrganisé
Membre OOrganisé
Messages : 94
Inscription : 04 avr. 2006 13:48

Message par Yaone »

Merci beaucoup. Tu m'as enlevé une épine du pied lol :wink:
OOo 2.0.1 sous WinXP SP2