Bonjour.
Je suis nouveau sur Base, mais pas en SQL…
Je transfère une base de données créée il y a plusieurs années (décennies) sur Access, et le schéma “modernisé” est relativement complexe, avec une douzaine de tables.
Je désire créér une application sur Base, et je rencontre des difficultés avec un formulaire.
Celui-ci reçoit les données d’une requête (ce peut aussi être une vue), dans laquelle il faut que l’utilisateur puisse modidier les données.
J’ai imaginé que la mise à jour des données soit réalisée par une macro, mais impossible de faire fonctionner celle-ci, la macro ne reconnaissant pas la connexion à la base de données.
Si quelqu’un a utilisé ce genre de procédé, je suis ouvert à en apprendre un peu plus 
Cordialement,
Pascal
https://wiki.documentfoundation.org/images/b/b4/GS6008FR-Débuter_avec_Base.pdf
Guide - Comment utiliser le site Ask - The Document Foundation Wiki
Merci pour les liens.
Voici les infos de version :
Version: 26.8.0.3 (X86_64)
Build ID: bce0998afefdbc355585ca324285661a2170ba77
CPU threads: 22; OS: Windows 11 X86_64 (build 26200); UI render: Skia/Raster; VCL: win
Locale: fr-CH (fr_CH); UI: fr-FR
Calc: CL threaded
Malheureusement, le guide ne fournit aucune information ou documentation concernant les macros. Je peine par ailleurs à trouver une doc détaillée sur ce sujet.
Plus spécifiquement, je suis bloqué ainsi 
- Un formulaire affiche des données provenant d’une requête allant pêcher les infos dans 8 tables
- J’aimerais pouvois mettre à jour les infos dans plusieurs tables, principalement les tables de liaison
- Je pensais faire cette mise à jour avec un bouton sur la page du formulaire, qui réaliserait directement les mises à jour ou appelerait une procédure stockée de la base afin de valider les données
- Ma macro ne parvient pas à utiliser la connexion, j’ai utilisé la macro de test suivante :
Sub TestMinimal(oEvent As Object)
Dim oForm As Object
Dim oConnexion As Object
oForm = oEvent.Source.Model.Parent
On Error Resume Next
oConnexion = oForm.Connection
On Error GoTo 0
If oConnexion Is Nothing Then
MsgBox "oConnexion est NULL. Le formulaire n'est peut-être pas lié." & Chr(13) & _
"Vérifiez : Propriétés du formulaire > Données > Type de contenu", 48, "Problème détecté"
Else
MsgBox "oConnexion est valide! Le problème vient ailleurs.", 64, "OK"
End If
End Sub
Celle-ci affiche :
oConnexion est NULL. Le formulaire n’est peut-être pas lié.
Vérifiez : Propriétés du formulaire > Données > Type de contenu
Le type de contenu est sur “Requête”
Je ne vois pas d’oû le problème peut venir…
Un grand MERCI pour une idée de solution…
LibreOffice: Main Page → LibreOffice: Class List …
https://wiki.documentfoundation.org/images/b/b0/BH5009-Macros.pdf
There is no property Connection for a firm. Please use something like XRay (X-ray tool download) to get the properties for the object.
oConnexion = oForm.activeConnection()
will work.
02 - Andrew Base Macro Programming.odt (925.6 KB)
Beaucoup d’infos ici : OpenOffice.org Macros Explained
Bonjour ,
Voici le début d’une macro que j’ai créée afin d’effectuer des mises à jour encodées dans un sous formulaire d’un formulaire principal (Mainform).Comme la macro déclenchée par un bouton effectue des mises à jour dans d’autres sous formulaires du Mainform,je les ai tous déclaré ainsi que les queries .Pour la connexion à la base ,je la nomme .(Budgetfbd3)
Sub updatesign(oEvent As Object)
Dim oForm As Object, frm As Object, sum As Object, sumact As Object, actsum As Object, oformbook As Variant
Dim oDBContext As Object, oDB As Object, oBase As Object
Dim oStatement As Object, oStatementVirement As Object, oStatementDouble As Object, oRequete As Object
Dim strSQL1 As String, strSQL2 As String, strSQL3 As String, strsql4 As String, strsql5 As String
Dim strsql6 As String, strsql7 As String, strsql8 As String, strsql9 As String, strsql10 As String' Initialisation de la connexion à la base de données oDBContext = CreateUnoService("com.sun.star.sdb.DatabaseContext") oDB = oDBContext.getbyName("Budgetfbd3") oBase = oDB.getConnection("", "") ' On récupère l'objet Formulaire oForm = ThisComponent.Drawpage.Forms.getByName("MainForm") oformbook = oForm.bookmark frm = oForm.getByName("SubForm") sum = oForm.getByName("somme").getByName("sommecpteprev") sumact = oForm.getByName("sommeact").getByName("sommecpteact") ' Utiliser un statement différent pour chaque type de requête oStatement = oBase.createStatement() ' Mise à jour des enregistrements strSQL1 = "UPDATE ""compteprev"" SET ""debit"" = (SELECT ""debit"" FROM ""sousgenre"" WHERE ""operation"" = ""sousgenre"")" oRequete = oStatement.executeQuery(strSQL1)
Attention,que comme je suis sous firebird,j’utilise la double quote. Si cela peut vous aider …
Les guillemets sont nécessaires quelque soit le moteur du SGBD.