Base : Comment accéder aux champs d'un sous-formulaire ?

Capture_Formulaire.PNG
Capture_Navigateur.PNG

Bonjour,

J’ai développé un formulaire de saisie dans une base de données de gestion des adhérents.
Le formulaire principal est composé de quelques champs :

  • ID adhérent,
  • Nom,
  • Prénom,

  • Pas de difficulté particulière sur cette partie, y compris avec deux macros de contrôle.
    J’ai ensuite un sous formulaire, sous forme de tableau car je veux saisir une liste de “hobbies”.
    (voir copie d’écran N°1)
    Le seul contrôle du sous formulaire est le contrôle “SubForm_Grid” qui représente mon tableau de saisie des Hobbies.
    (voir copie d’écran N°2)
    Dans la macro que j’ai écrite j’accède à ce contrôle. Je voudrais contrôler que l’on ne saisit pas deux fois la même valeur du champ “ID-HOB”. Or j’ arrive à obtenir les 2 libellés des entêtes de colonnes. Mais impossible d’accéder aux valeurs de la table !!!

Est ce quelqu’un peux m’aider pour trouver la bonne façon de procéder ?

Merci beaucoup pour votre aide,
Cordialement,
Yves

PS : un extrait du début de la macro :

’ obtention de la valeur des champs nécessaires
’ chargement de l’ ID modifié

oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName(“MainForm”)
oSubForm = oForm.getByName(“SubForm”)

oFieldID_ADH = oForm.getByName(“fmtID_ADHERENT”)
loID_ADH = oFieldID_ADH.GetCurrentValue()
msgBox "Valeur ID Adhérent : " + loID_ADH

oFieldID_HOB = oSubForm.getByName(“SubForm_Grid”)

loID_HOB = oFieldID_HOB.GetCount()
msgBox "NB de colonnes de la table : " + loID_HOB

Bonjour Michel,

Suite à votre retour, je voulais vous joindre un extrait de la base avec la macro en question.
Il se trouve que, dans la manip, j’ai perdu la macro en question. :frowning:

Si je résume ma question :

  • J’ai un formulaire principal et un sous-formulaire,
  • Je sais obtenir les valeurs de mon formulaire principal (méthode GetCurrentValue),
  • par contre, dans mon sous-formulaire “SubForm” je n’ai qu’un seul contrôle “subFormGrid”,
  • dans ce sous-formulaire, je ne sais pas quelle méthode employer pour obtenir les valeurs contenues dans cette grille.
  • L’extrait de la macro mis dans la question devrait suffire à la compréhension.

Merci pour votre aide,
Bien Cordialement,
Yves Gravot

Bonsoir @yves-gravot

Le plus rapide pour nous serait que vous transmettiez une copie de votre base de données, expurgée des données confidentielles.

Cordialement, Michel

Bonjour @Yves-Gravot

Désolé, je suis mal à l’aise avec les macros sous Base et la reconstitution d’une base similaire est chronophage et pour le moment pas couronnée de succès.

La macro doit se trouver via Outils>Macros>Gérer les macros>Basic Elle n’est peut-être pas sauvegardée avec votre base de données mes dans Mes macros. Ce serait très préférable pour fluidifier les échanges.

Désolé de ne pouvoir en faire plus pour le moment.

Cordialement, Michel

Avez-vous passé en revue tous les modèles de macros disponibles dans la bibliothèque Macros et boîtes de dialogues LibreOffice>Acces2Base>Form ?

La librairie Access2Base, incluse dans LibreOffice, permet de faire cela aisément.

Voir pour un exemple la page (en anglais) extraite de la documentation
Browse thru form controls

Cordialement.

Bonsoir JPL,

Très Grand MERCI pour cette bibliothèque documentaire.
D’un seul coup, mon horizon s’éclaire … :slight_smile:

Lorsqu’on démarre avec Base, il y a beaucoup d’informations à acquérir et d’apprentissage.
Et la doc que j’ai lu ( BG64-BaseGuide ), bien que très détaillée, ne répond pas toujours à des questions basiques que l’on se pose.

Je vais parcourir attentivement la doc ACCECC2BASE.

Encore Merci pour cette info.

Bien Cordialement
Yves

Bonjour,

Je poursuis la discussion… Je me suis intéressé à la bibliothèque ACCESS2BASE.
J’ai créé les 2 Macros DBOpen (à l’ouverture du document) et DB Close à la fermeture.
La connexion de la bibliothèque a priori se fait bien.

Par contre, en développant la macro cherchant à reproduire la fonction : BrowseThruControls
J’ai une erreur systématique sur la ligne impliquant Controls .
Erreur d’exécution BASIC. Propriété ou méthode non trouvée : Controls.
Malgré plusieurs recherches, je n’arrive pas à trouver la cause de l’erreur.

Extrait de la macro :

Set oMainForm = Forms(‘MainForm’)
Dim intCount As Variant
set intCount = oMainForm.Controls.Count
MsgBox("Nombre de contrôles du Formulaire : " +intCount )
Exit Sub

Si quelqu’un peux m’aider ?

Merci pour votre aide,
Cordialement,
Yves

Bonjour @YvesGravot

Je cale. Désolé. Belle journée quand même, Michel