Problème raffraichissement zone de liste après utilisation Rowsource en vb

[Résolu]
Signaler
Messages postés
7
Date d'inscription
vendredi 27 janvier 2006
Statut
Membre
Dernière intervention
16 décembre 2006
-
Messages postés
7
Date d'inscription
vendredi 27 janvier 2006
Statut
Membre
Dernière intervention
16 décembre 2006
-
Bonjour,

J'ai un problème avec VB Access lié à une requête SQL difficile à expliquer :

- J'ai deux requête réalisé en sql "liste_tests" et "liste_tests_nok" 
   ex contenu "liste_tests_nok" :
   SELECT Rech_error_telecodage_CC4.[TESTS_FR - Libellé V7]
   FROM Rech_error_telecodage_CC4
   WHERE Rech_error_telecodage_CC4.[GROUPEFR - Libellé V30]= [My_ecu] AND(Rech_error_telecodage_CC4.Prob1=True Or Rech_error_telecodage_CC4.Prob2=True)
GROUP BY Rech_error_telecodage_CC4.[TESTS_FR - Libellé V7];

le contenu de cette requête est ensuite affiché dans une combobox (Choix_Test)
la variable [My_ecu] est fonction d'une autre combobox (Choix_ECU)

- En cours de fonctionnement je suis amené à changer le contenu de la combobox Choix_Test par la requete liste_tests ou liste_tests_nok avec la propriété rowsource.
De même pour la combobox Choix_ECU, seulement pour celle ci, je n'ai pas de problème car les deux requêtes liées ne font appelles à aucune variable extérieure

- le problème est lorsque je clique sur la combobox Choix_Test, celle ci me réclame la valeur du paramètre [my_ecu] !!!

- pourtant je raffraichis ma combobox avec Me!Choix_Test.requery de plus lorsque j'utilise un recordset pour afficher la valeur par défaut de ma combobox cela fonctionne très bien.

ex code :
    
    Dim chat As DAO.QueryDef
    Dim chien As DAO.Recordset
    Dim che As DAO.QueryDef
    Dim chef As DAO.Recordset
    Dim rec As Recordset
       
    If Choix_Nok.Value = True Then
       
        'changement de requete source pour contenu liste deroulante des ECU
        Me.Choix_ECU.RowSourceType = "Table/Query"
        Me.Choix_ECU.RowSource = "liste_ecu_Nok"
   
        Set chat = CurrentDb.QueryDefs("liste_ecu_Nok")
        Set chien = chat.OpenRecordset
        Choix_ECU.Value = chien(0).Value
       
        'raffraichissement listes deroulante
        Me!Choix_ECU.Requery
       
        'changement de requete source pour contenu liste deroulante des tests nok
        Me.Choix_Test.RowSourceType = "Table/Query"
        Me.Choix_Test.RowSource = "liste_tests_nok"
       
        Set che = CurrentDb.QueryDefs("liste_tests_Nok")
        che.Parameters("My_ecu") = Choix_ECU.Value
        Set chef = che.OpenRecordset
        Choix_Test.Value = chef(0).Value
              
        'raffraichissement listes deroulante
        Me!Choix_Test.Requery
        
        Set che = Nothing
        Set chef = Nothing

Merci d'avance pour l'aide que vous pourrez m'apporter !

2 réponses

Messages postés
7
Date d'inscription
vendredi 27 janvier 2006
Statut
Membre
Dernière intervention
16 décembre 2006

C'est bon, j'ai peut être pas fait au plus simple mais j'ai trouvé la parade à mon souci :
peut être que ce petit bou de code peut être utile à quelqu'un

j'ai une requête SQL pour la valeur par défaut de ma combobox utilisée avec un recordset avant le changement de source contenu de ma combobox .

Sql pour valeur par défaut :
SELECT Rech_error_telecodage_CC4.[TESTS_FR - Libellé V7]
FROM Rech_error_telecodage_CC4
WHERE Rech_error_telecodage_CC4.[GROUPEFR - Libellé V30]=[My_ecu]
GROUP BY Rech_error_telecodage_CC4.[TESTS_FR - Libellé V7]; 

Sql pour toutes les valeurs de la combobox :
SELECT Rech_error_telecodage_CC4.[TESTS_FR - Libellé V7]
FROM Rech_error_telecodage_CC4
WHERE Rech_error_telecodage_CC4.[GROUPEFR - Libellé V30]=Forms!Result_Err.Choix_ECU
GROUP BY Rech_error_telecodage_CC4.[TESTS_FR - Libellé V7];

Vb :
Private Sub ParDefaut()
On Error GoTo Err_ParDefaut


'affecte la premiere valeur de choix_test sur changement choix_ECU
   
    Dim che As DAO.QueryDef
    Dim chef As DAO.Recordset
           
    If Choix_Nok.Value = False Then
        'choix valeur par defaut combobox choix_tests
        Set che = CurrentDb.QueryDefs("liste_tests_default")
        che.Parameters("My_ecu") = Choix_ECU.Value
        Set chef = che.OpenRecordset
        Choix_Test.Value = chef(0).Value
        Set che = Nothing
        Set chef = Nothing
        'changement de requete source pour contenu liste deroulante des tests ok
        Me.Choix_Test.RowSourceType = "Table/Query"
        Me.Choix_Test.RowSource = "liste_tests"
    Else
        'choix valeur par defaut combobox choix_tests
        Set che = CurrentDb.QueryDefs("liste_tests_nok_default")
        che.Parameters("My_ecu") = Choix_ECU.Value
        Set chef = che.OpenRecordset
        Choix_Test.Value = chef(0).Value
        Set che = Nothing
        Set chef = Nothing
        'changement de requete source pour contenu liste deroulante des tests nok
        Me.Choix_Test.RowSourceType = "Table/Query"
        Me.Choix_Test.RowSource = "liste_tests_nok"
    End If
      
    'raffraichissement liste deroulante choix_test
    Me.Refresh
    Me.Choix_Test.Requery
            
'affichage resultats selon valeur par defaut choix_test
'mise a zero variable nb_three utilisee pour compter les numeros d octet a 3 caracteres dans la selection des octets nok
'mise a zero variable point_oct utilisee pour pointer les octets dans la selection des octets nok par defaut premier octet nok
   
    particul = 0
    nb_three = 0
    point_oct = 1
    Resultat_Text
    Trame_L_Text
    Trame_C_Text
   
Exit_ParDefaut:
    Exit Sub


Err_ParDefaut:
    MsgBox err.Description
    ' supprime le sablier
    DoCmd.Hourglass False
    Resume Exit_ParDefaut
End Sub
Messages postés
7
Date d'inscription
vendredi 27 janvier 2006
Statut
Membre
Dernière intervention
16 décembre 2006

Bonjour,

personne ne peut m'aider, c'est vraiment important car je dois terminé ma dernière version de programme dans une semaine et mon problème est bloquant !!! Et je n'ai plus aucune idée.

Merci d'avance à tous