VBA Access Recordset

Résolu/Fermé
eljojo_e Messages postés 1155 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 14 octobre 2022 - Modifié par blux le 23/01/2014 à 11:24
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 - 23 janv. 2014 à 11:19
Bonjour,

J'ai fait un code qui va chercher des info dans plusieurs tables :


Private Sub MAJ_Click()

'DoCmd.Hourglass True

Dim TxUrba, TProjet, TListeCom, TConv, TPCT, TReunion, TProcedure, TPhase, TOS As Recordset
Dim cTxUrba, cTProjet, cTListeCom, cTConv, cTPCT, cTReunion, cTProcedure, cTPhase, cTOS As Integer
Set data_base = OpenDatabase("Y:\SERVICES TECHNIQUES\SI\GTI\GTI Source.mdb")
Set TxUrba = data_base.OpenRecordset("T Travaux urba", dbOpenDynaset)
Set TProjet = data_base.OpenRecordset("T Projet", dbOpenDynaset)
Set TListeCom = data_base.OpenRecordset("T Liste des communes", dbOpenDynaset)
Set TConv = data_base.OpenRecordset("T Conventions", dbOpenDynaset)
Set TPCT = data_base.OpenRecordset("T PCT", dbOpenDynaset)
Set TReunion = data_base.OpenRecordset("T Réunions", dbOpenDynaset)
Set TProcedure = data_base.OpenRecordset("T Procédures Administratives", dbOpenDynaset)
Set TPhase = data_base.OpenRecordset("T Phases Techniques", dbOpenDynaset)
Set TOS = data_base.OpenRecordset("T OS", dbOpenDynaset)
TxUrba.MoveLast
cTxUrba = TxUrba.RecordCount 'obligé de faire un MoveLast sinon RecordCount fonctionne pas ...
TProjet.MoveLast
cTProjet = TProjet.RecordCount
TListeCom.MoveLast
cTListeCom = TListeCom.RecordCount
TConv.MoveLast
cTConv = TConv.RecordCount
TPCT.MoveLast
cTPCT = TPCT.RecordCount
TReunion.MoveLast
cTReunion = TReunion.RecordCount
TProcedure.MoveLast
cTProcedure = TProcedure.RecordCount
TPhase.MoveLast
cTPhase = TPhase.RecordCount
TOS.MoveLast
cTOS = TOS.RecordCount


'Met à jour les champs de la table Travaux urba
TxUrba.MoveFirst
For a = 1 To cTxUrba


    'MAJ Date piquetage
    TReunion.MoveFirst
    For b = 1 To cTReunion
        If TReunion.[Code Projet] = TxUrba.[Projet] Then
                If TReunion.[Motif] = "Piquetage Electrique" Then
                TxUrba.Edit
                TxUrba.[Date piquetage] = TReunion.[Date]
                TxUrba.Update
            End If
        End If
        TReunion.MoveNext
    Next
    
    'MAJ Diffusion art2
    TProcedure.MoveFirst
    For b = 1 To cTProcedure
        If TProcedure.[Code Projet] = TxUrba.[Projet] Then
                If TProcedure.[Type Procedure] = "Article 2" Then
                TxUrba.Edit
                TxUrba.[Diffusion art 2] = TProcedure.[Date Dépôt Procedure]
                TxUrba.Update
            End If
        End If
        TProcedure.MoveNext
    Next
    
    
    'MAJ Début des travaux T OS
    TOS.MoveFirst
    For b = 1 To cTOS
        If TOS.[Code Projet] = TxUrba.[Projet] Then
                If TOS.[BC / OS] = 1 Then
                    If TOS.[Type OS] = "Commencement des travaux" Then
                        TxUrba.Edit
                        TxUrba.[Début TX] = TOS.[Date Date limite de début]
                        TxUrba.Update
                    End If
                End If
        End If
        TOS.MoveNext
    Next
    
    
    'MAJ Memoire 1 & 2
    TProjet.MoveFirst
    For b = 1 To cTProjet
        If TProjet.[Code Projet] = TxUrba.[Projet] Then
                TxUrba.Edit
                TxUrba.[Mémoire 1] = TProjet.[Memoire1Urba]
                TxUrba.[Mémoire 2] = TProjet.[MemoireFinalUrba]
                TxUrba.Update
        End If
        TProjet.MoveNext
    Next
    
    'MAJ AMEO
    TPhase.MoveFirst
    For b = 1 To cTPhase
        If TPhase.[Code Projet] = TxUrba.[Projet] Then
            If TPhase.[Type Phase] = "Date AMEO" Then
                    TxUrba.Edit
                    TxUrba.[Date AMEO] = TPhase.[Date]
                    TxUrba.Update
            End If
        End If
        TPhase.MoveNext
    Next
    
    'MAJ PCT
    TPCT.MoveFirst
    For b = 1 To cTPCT
        If TPCT.[GTI] = TxUrba.[Projet] Then
                TxUrba.Edit
                TxUrba.[PCT pour paiement] = TPCT.[Date envoie BE]
                TxUrba.[Date Paiement] = TPCT.[Date Paiement]
                TxUrba.[Catégorie] = TPCT.[Cadre juridique]
                TxUrba.[Date envoi PCT pour étude] = TPCT.[Date création]
                TxUrba.Update
        End If
        TPCT.MoveNext
    Next
    
    TxUrba.MoveNext
Next



TxUrba.Close
TProjet.Close
TListeCom.Close
TConv.Close
TPCT.Close
TReunion.Close
TProcedure.Close
TPhase.Close
TOS.Close

'DoCmd.Hourglass False
    
End Sub


Toutes les boucle fonctionne sauf la boucle sur "TOS" me met comme erreur : "Erreur de compilation : Membre de méthode ou de données introuvable" en surlignant
.[Code Projet]   de la ligne     If TOS.[Code Projet] = TxUrba.[Projet] Then

J'ai tout essayé, j'ai regarder chaque nomination de chaque champ et tout concorde...

Pouvez-vous m'aider ?

Merci


Le geek ne descend pas du métro, il libère la rame.

2 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
20 janv. 2014 à 09:43
Bonjour,

la table T OS ne serait-elle pas vide ????
0
eljojo_e Messages postés 1155 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 14 octobre 2022 152
20 janv. 2014 à 12:57
non, plus de 15000 enregistrement
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
20 janv. 2014 à 12:59
Re,

possible d'avoir la base meme partielle ???
0
eljojo_e Messages postés 1155 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 14 octobre 2022 152
20 janv. 2014 à 13:08
Désolé, c'est pour le boulot (j'en est pour des heures à la rendre partielle lol)

Sinon j'utilise aussi dlookup mais j'ai trois conditions ... y a pas une autre solution ?
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
20 janv. 2014 à 13:26
Re,

votre code est correctement ecrit, dlookup multi-criteres c'est ok, mais n'arrangera peut-etre pas le probleme
0
eljojo_e Messages postés 1155 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 14 octobre 2022 152
20 janv. 2014 à 14:25
Du coup le code est bien écrit (j'en été sure !!! ^^) mais ne fonctionne pas... dlookup avec 3 critère c'est juste une horreur a faire fonctionner.

Sinon une requête sql ?

Dim SQL_ligne As String
Dim rst As Recordset
SQL_ligne = "SELECT [Début TX] FROM [T OS] WHERE [Code Projet] ='" & TxUrba.[Projet] & "AND [BC / OS] = 1 AND [Type OS] = '" & "Commencement des travaux" & "';"
Set rst = CurrentDb.OpenRecordset(SQL_ligne)
If rst.EOF Then
rst!Début_TX = ""
Else
TxUrba.[Début TX] = rst!Début_TX
End If

C'est la première que j'écris du SQL, évidemment elle ne fonctionne pas... vous pouvez m'aider svp ?
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
20 janv. 2014 à 11:22
bonjour
Mets ta doleance sur programmation access vba
0