Attribuer une valeur à un champ d'un rapport en LibO Basic

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