3 pièce(s) jointe(s)
Listes liées dans un sous formulaire
Bonsoir,
Je suis en train de créer une base de données pour réaliser des devis. Dans le formulaire "F_Dvs" comportant un sous formulaire "SFDvsDtl", il y a une première liste qui permet de sélectionner la matière à utiliser. Elle est suivie d' une deuxième liste qui elle permet de sélectionner le tarif valide de cette même matière.
J' ai bien trouvé un exemple qui correspond à ce que je veux faire mais visiblement, j' ai très mal modifié cette macro. En effet, a l' ouverture du formulaire, j' obtiens le message d' erreur intitulé "Message_1".
De plus, j' ai une erreur dans une requête SQL, voir "Message_2"
J' aurai bien voulu joindre ma base mais visiblement ce n' est pas possible. Les fichiers ".odb" ne sont pas acceptés.
Cordialement
1 pièce(s) jointe(s)
Listes liées dans un sous formulaire.
Bonjour,
Comme promis, je reviens vers vous pour ce problème de listes liées. Le message provenant de basic concernant la mise à jour de la deuxième liste était du à un champ manquant dans la requête. En effet, si la sauvegarde s' effectue bien sur la clé du tarif, l' affichage lui est la valeur de la fourniture.Le champ manquant était RtcTrf. Ci-dessous le code de la requête:
Code:
Rqt ="SELECT ""RtcTrf"",""Cf_RtcTrf"" FROM ""T_RtcTrf"" WHERE ""Cf_Rtc"" =" & CfRtc
et pour ceux que cela intéresse, le code des 3 macros nécessaire au bon déroulement de la mise à jour:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| Dim CtrRtc as Object , CtrTrf AS Object
Sub MajListe
Dim CfRtc as integer
Dim Rqt as String
'Recupere les données dans les champs concernés
CtrRtc = ThisComponent.DrawPage.Forms.getByName("SfDvsDtlFrt").getByName("LstRtc")
CtrTrf = ThisComponent.DrawPage.Forms.getByName("SfDvsDtlFrt").getByName("LstRtcTrf")
CfRtc = CtrRtc.valueItemList(CtrRtc.SelectedItems(0))
Rqt ="SELECT ""RtcTrf"",""Cf_RtcTrf"" FROM ""T_RtcTrf"" WHERE ""Cf_Rtc"" =" & CfRtc
CtrTrf.ListSource = Array(Rqt)
CtrTrf.refresh
End Sub
'=========================================================================================
Sub Actualisation
Dim ExoTrav
MajListe
ExoTrav= ExoRechercheDansTableau(CtrTrf.ValueItemList, CtrTrf.boundField.Value)
If ExoTrav <> "#N/A" then
CtrTrf.SelectedItems = array(ExoTrav)
else
CtrTrf.SelectedItems = array(0)
End If
End Sub
'=========================================================================================
Function ExoRechercheDansTableau(ExoTablo, ExoRech)
dim i as integer
ExoRechercheDansTableau = "#N/A"
for i = lbound(ExoTablo) to ubound(ExoTablo)
if ExoTablo(i)= ExoRech then
ExoRechercheDansTableau = i
exit for
end if
next i
end function |
Je joins également la version trois de cette base. Il manque énormément de choses mais c' est un début.
Cordialement