6 messages in org.openoffice.fr.prog[prog] Macros et formulaires
FromSent OnAttachments
YvesApr 4, 2004 2:25 pm 
Alain NowakApr 5, 2004 12:47 am 
Alain NowakApr 5, 2004 8:05 am 
YvesApr 5, 2004 12:33 pm 
Alain NowakApr 6, 2004 2:25 am 
YvesApr 7, 2004 1:48 pm 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:[prog] Macros et formulairesActions...
From:Yves (yves@wanadoo.fr)
Date:Apr 4, 2004 2:25:14 pm
List:org.openoffice.fr.prog

Bonjour,

J'utilise une macro fournie par Tony Galmiche (merci à lui !) pour récupérer des données dans un formulaire et envoyer une requête "INSERT" à une source de données. Voici cette macro :

Sub AjouteHistorique() 'oDocument contient l'objet Classeur oDocument = ThisComponent

'oSheet contient le nom du classeur oSheet = oDocument.Sheets.getByName("Participations")

oDrawPage = oDocument.DrawPages.getByIndex(0)

'oForm contient le nom du formulaire du classeur oForm = oDrawPage.getForms.getByName("Ajout")

'Récupération des données du formulaire Adherent = oForm.getByName("Adherent").SelectedItems(0)+1 Produit = oForm.getByName("Produit").SelectedItems(0)+1 Nb = oForm.getByName("Nb").Text Montant = oForm.getByName("Montant").Text Date1 = oForm.getByName("Date").Date

'Partie connexion à la source de données et execution de la requete Dim oDatabaseContext, oDataSource, oConnection As Object Dim oStatement, oResultSet As Object Dim sQuery As String

oDatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")

'HetH = Nom de la source de données oDataSource = oDatabaseContext.getByName("HetH") oConnection = oDataSource.GetConnection("","") oStatement = oConnection.CreateStatement()

SQL = "INSERT INTO historique VALUES(NULL,'" & Adherent & "','" & Produit & "','" & Nb & "','" & Montant & "','" & Date1 & "');" 'msgbox SQL RequeteEcrire=oStatement.executeUpdate(SQL)

msgbox "Nombre d'enregistrements insérés = " & RequeteEcrire

end sub

La ligne "Nb = oForm.getByName("Nb").Text" permet bien de récupérer le contenu du contrôle "Nb" si celui-ci est une zone de texte. Mais si c'est une zone numérique, je n'ai pas trouvé comment lire sa valeur.

Avec une zone de liste, j'ai eu encore plus de difficultés. En tatonnant, j'ai fini par trouver que l'instruction "Produit = oForm.getByName("Produit").SelectedItems(0)+1" permet de récupérer le n° de l'entrée de liste sélectionnée. Mais je n'ai pas trouvé comment récupérer le contenu de cette entrée ni celui du champ lié.

Alors, si quelqu'un s'y connait un peu dans la manière d'accéder au contenu des champs de formulaires grâce aux macros, je le remercie d'avance de m'aider un peu.

Une autre petite question : comment actualiser le contenu d'un contrôle de table grâce à une instruction plutôt qu'en cliquant sur l'icône correspondante ?

Merci pour votre aide.