Bonjour à tous.
Après plusieurs heures de recherche sur google je n'ai rien trouvé.
Comment attribuer une valeur à un contrôle de type texte dans un rapport
via une macro LibO Basic ?
Merci d'avance de votre aide.
Daniel Toutatis
Bonjour à tous.
Après plusieurs heures de recherche sur google je n'ai rien trouvé.
Comment attribuer une valeur à un contrôle de type texte dans un rapport
via une macro LibO Basic ?
Merci d'avance de votre aide.
Daniel Toutatis
Bonsoir Daniel,
Qu'entends tu par "attribuer" ?
Remplir le champ texte avec la valeur ou lui donner un numéro d'index en
tant que variable?
Ton rapport est-il fait avec Writer ou avec Calc ?
La valeur en question est-elle destinée à être stockée dans une bdd liée au
rapport?
Alex
Bonjour Alex,
J'utilise LibO Base. Il s'agit juste d'une zone texte dans le rapport
"rpt_ParDate".
Ce rapport est appelé depuis le formulaire "frm_choix_date".
Tu trouveras ci-joint la base en question (elle n'est pas terminée).
Merci
Daniel
Bonjour Daniel,
Je n'arrive pas à ouvrir ton rapport sous OSX avec LO :
Version 4.0.3.3 (Build ID: 0eaa50a932c8f2199a615e1eb30f7ac74279539)
J'obtiens un message d'erreur :
Wrong data type : java.lang.IllegalArgumentException in statement
SELECT * from "tbl_activite" where "act_date" >= '2013-8-1'
AND "act_date" <= '2013-8-31' ORDER BY "act_date"
Tu utilises des chaînes de caractère pour représenter une date et puis
ensuite tu essaies d'effectuer une comparaison de date dessus ? Cela ne
fonctionnera pas.
Alex
Bonjour Daniel,
Je ne comprends pas ce test dans ton code :
v_DateDebut = v_Form.getByName("DateDebut").Text
v_DateFin = v_Form.getByName("DateFin").Text
' On vérifie que la date de début soit plus petie que la date de fin
if v_DateDebut > v_DateFin then
MsgBox("Date de début ("& v_DateDebut & ") plus grande que date de
fin ("& v_DateFin &")",16)
else
Là, tu es en train de comparer des chaînes de caractères au lieu de dates ?
La valeur du contrôle, ce n'est pas plutôt :
v_DateDebut = v_Form.getByName("DateDebut").currentvalue
ou
v_DateDebut = v_Form.getByName("DateDebut").getDate
http://api.libreoffice.org/docs/common/ref/com/sun/star/form/component/DateField.html
http://api.libreoffice.org/docs/common/ref/com/sun/star/awt/UnoControlDateFieldModel.html#Date
http://api.libreoffice.org/docs/common/ref/com/sun/star/awt/XDateField.html
Alex
Hello
Le code n'est pas encore parfait. J'ai enlever le test et corrigé la
requête.
Je travaille avec la version Version: 4.1.0.4 Build ID:
89ea49ddacd9aa532507cbf852f2bb22b1ace28 sous OSX
Daniel
Bonjour Alex
J'ai trouvé la solution.
On suppose que le rapport à un contrôle de type texte (référencé dans le
code par la valeur 0 dans la méthode getByName)
sub ouvreRapport(sNomRapport as string)
dim oNewReport as object
'On vérife que le rapport existe
if ThisDatabaseDocument.ReportDocuments.hasByName(sNomRapport) then
oNewReport=ThisDatabaseDocument.ReportDocuments.getByNAme(sNomRapport)
else
end
end if
' Ouvre le rapport en mode design
oNewReport.opendesign
' Modifie le Label du control 0 (getByIndex(0)
oNewReport.getComponent().PageHeader.getByIndex(0).Label="Label du
contrôle 0"
' Sauvegarde le rapport et quitte le mode design
oNewReport.store
oNewReport.close
' Ouvre le rapport
oNewReport.open
end sub
Merci de ton aide
Daniel