IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

aide syntaxe sur recordset


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 262
    Par défaut aide syntaxe sur recordset
    Bonjour,

    j'ai besoin de d'ouvrir 2 requetes a la fois pour utiliser les données et les exporter sur un fichier txt.

    Je suis novice avec l'utilisation des recordset , et il semble que je fais une erreur mais je ne sais pas trop laquelle.
    lorsque j'execute ce code, il me donne l'erreur "élément non trouvé dans cette collection " quand je veux utiliser la donnée inclue dans rec2. voir lignes en gras
    Quelle l'erreur selon vous ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    Sub cmd_interfacecoda_Click()
    
    On Error GoTo err
    Dim fichier As String, ligne As String, SQL As String, nbligne As String, dossier As String
    Dim datecreation As String, timecreation As String
    Dim db As DAO.Database: Set db = CurrentDb
    Dim rec As DAO.Recordset, rec2 As DAO.Recordset
    Dim FSO As New Scripting.FileSystemObject
    Dim FichText As Scripting.TextStream
    
    'remplissage et mise a  jour des tables facture et ligne_facture
    DoCmd.RunMacro ("facturation - remplissage des tables")
    
    'test si le dossier où on va stocker le fichier exporté existe
    dossier = CurrentProject.Path & "\Export METROPOLE CODA"
        If Not (DossierExiste(dossier)) Then
            MkDir dossier
        End If
        
           
    SQL = "SELECT facture.cdfacture, facture.typefacture, facture.montantHT, facture.datecomptabilisation, facture.dateecheance, annexe.cdannexe, annexe.typeannexe, contrat.cdcontrat, contrat.typecontrat, contrat.cdclient" & _
            " FROM contrat INNER JOIN (facture INNER JOIN annexe ON facture.cdannexe = annexe.cdannexe) ON contrat.cdcontrat = annexe.cdcontrat" & _
            " WHERE (((facture.datecomptabilisation)=Date()));"
    
    'hypothèse pas d'enregistrements
    Set rec = db.OpenRecordset(SQL, dbOpenSnapshot)
    If rec.RecordCount = 0 Then
    MsgBox "pas de factures a comptabiliser"
    Exit Sub
    End If
    
    'incrémentation du compteur de sequence de comptabilisation
    DoCmd.RunSQL ("INSERT INTO sequencecompta ( dateinterfacage )SELECT Date() AS Expr1;")
    Set rec2 = db.OpenRecordset("SELECT Max(sequencecompta.sequencenumber)FROM sequencecompta;", dbOpenSnapshot)
    'creation du fichier d'ecritures
        datecreation = Format(Date, "yyyymmdd")
        timecreation = Format(Time(), "hhmmss")
        fichier = dossier & "\" & "METR_CODA_FSER_" & datecreation & "_" & timecreation & ".txt"
        Set FichText = FSO.CreateTextFile(fichier, True)
        TFichier = fichier
        Set FSO = Nothing
        Set FichText = Nothing
    
    'ligne controle
        ligne = ("METRCODA" & rec2![sequencenumber] & Format(Date, "yyyymmdd") & Format(Time(), "hhmmss") & "SECKH" & Format(Date, "ddmmyy") & Format(Time(), "hhmm") & " 295         03597004001002003004005006008009010011012013014015016017018019020021022023024025026027030031032089090091092093094095096097119" & Space(270))
    EcrireLigne fichier, ligne
        nbligne = 1
    
    ' pour chaque enregistrement , faire la boucle
    
    While Not rec.EOF
    
    'ligne entete
         ligne = ("METRCODA" & rec2("sequencenumber") & Format(Date, "yyyymmdd") & Format(Time(), "hhmmss") & _
         "SEHHZ-F-HONO    " & rec("typefacture") & "-" & Format(rec("cdfacture"), "!@@@@@@@") & _
         Format(Date, "yyyymm") & "EUR         " & Format(Date, "ddmmyyyy"))
         EcrireLigne fichier, ligne
        
    'ligne 1
        ligne = ("METRCODA0000001" & Format(Date, "yyyymmdd") & Format(Time(), "hhmmss") & "SELLZ-F-HONO    " & _
              rec("typefacture") & "-" & Format(rec("cdfacture"), "!@@@@@@@") & "00001" & "295.250.622806.ASA" & Space(61) & _
              Replace(Format(rec("montantHT"), "00000000000000.00"), ",", ".") & "2" & Space(36) & "158" & "161" & _
              Format(rec("dateecheance"), "yyyymmdd") & Space(7) & Space(37) & rec("typecontrat") & "-" & _
              Format(rec("cdcontrat"), "!@@@@@@@@@@@@@@@@@@@@@@@@@@@") & rec("typeannexe") & "-" & _
              Format(rec("cdannexe"), "!@@@@@@@@@@@@@@@@@@@@@@@@@@@") & rec("typefacture") & "-" & _
              Format(rec("cdfacture"), "!@@@@@@@@@@@@@@@@@@@@@@@@@@@") & Space(144) & _
              "D196E       " & Replace(Format((rec("montantHT") * 0.196), "00000000000000.00"), ",", ".") & "2" & Space(103))
        EcrireLigne fichier, ligne
        
    'ligne 2
        ligne = ("METRCODA0000001" & Format(Date, "yyyymmdd") & Format(Time(), "hhmmss") & "SELLZ-F-HONO    " & _
            rec("typefacture") & "-" & Format(rec("cdfacture"), "!@@@@@@@") & "00002" & "295.250.445663.T1960E" & Space(58) & _
            Replace(Format((rec("montantHT") * 0.196), "00000000000000.00"), ",", ".") & "2" & Space(36) & "159" & "161" & _
            Format(rec("dateecheance"), "yyyymmdd") & Space(7) & Space(37) & rec("typecontrat") & "-" & _
            Format(rec("cdcontrat"), "!@@@@@@@@@@@@@@@@@@@@@@@@@@@") & rec("typeannexe") & "-" & _
            Format(rec("cdannexe"), "!@@@@@@@@@@@@@@@@@@@@@@@@@@@") & rec("typefacture") & "-" & _
            Format(rec("cdfacture"), "!@@@@@@@@@@@@@@@@@@@@@@@@@@@") & Space(32) & Space(64) & Space(18) & _
            "D196E       " & Replace(Format(rec("montantHT"), "00000000000000.00"), ",", ".") & "2" & Space(133))
        EcrireLigne fichier, ligne
        
    'ligne 3
        ligne = ("METRCODA0000001" & Format(Date, "yyyymmdd") & Format(Time(), "hhmmss") & "SELLZ-F-HONO    " & _
            rec("typefacture") & "-" & Format(rec("cdfacture"), "!@@@@@@@") & "00003" & "295.250.401120.FP" & rec("cdclient") & Space(56) & _
            Replace(Format((rec("montantHT") * 1.196), "00000000000000.00"), ",", ".") & "2" & Space(36) & "157" & "160" & _
            Format(rec("dateecheance"), "yyyymmdd") & Space(7) & Space(37) & rec("typecontrat") & "-" & _
            Format(rec("cdcontrat"), "!@@@@@@@@@@@@@@@@@@@@@@@@@@@") & rec("typeannexe") & "-" & _
            Format(rec("cdannexe"), "!@@@@@@@@@@@@@@@@@@@@@@@@@@@") & rec("typefacture") & "-" & _
            Format(rec("cdfacture"), "!@@@@@@@@@@@@@@@@@@@@@@@@@@@") & Space(32) & Space(64) & Replace(Format((rec("montantHT") * 0.196), "00000000000000.00"), ",", ".") & "2" & Space(163))
        EcrireLigne fichier, ligne
        
        nbligne = nbligne + 4
        rec.MoveNext
        
    Wend
    
    'creation du fichier EOF attaché
                    
            fichier = dossier & "\" & "METR_CODA_FSER_" & datecreation & "_" & timecreation & ".eof"
            Set FichText = FSO.CreateTextFile(fichier, True)
            TFichier = fichier
                 
            Set FSO = Nothing
            Set FichText = Nothing
            
            ligne = rec2("sequencenumber") & Format(nbligne, "000000")
            EcrireLigne fichier, ligne
    
    
    
    Exit Sub
    err:
    MsgBox err.Description
    End Sub

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    salut,
    dans ta requeten, je te conseille ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set rec2 = db.OpenRecordset("SELECT Max(sequencecompta.sequencenumber) AS sequencenumber 
    FROM sequencecompta;", dbOpenSnapshot)
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 262
    Par défaut
    Citation Envoyé par jpcheck Voir le message
    salut,
    dans ta requeten, je te conseille ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set rec2 = db.OpenRecordset("SELECT Max(sequencecompta.sequencenumber) AS sequencenumber 
    FROM sequencecompta;", dbOpenSnapshot)
    effectivement , ca marche mieux comme ceci.
    Merci pour le tuyau

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA] aide sur Recordset
    Par clao260 dans le forum VBA Access
    Réponses: 12
    Dernier message: 13/08/2007, 17h17
  2. Aide syntaxe requête mysql
    Par wjc dans le forum Requêtes
    Réponses: 5
    Dernier message: 01/10/2005, 23h18
  3. Erreur de syntaxe sur la création d'une vue.
    Par cgougeon dans le forum Installation
    Réponses: 3
    Dernier message: 09/09/2005, 11h00
  4. [FLASH] Aide vitesse sur flash
    Par pNk dans le forum Flash
    Réponses: 4
    Dernier message: 26/07/2005, 21h43
  5. probleme de teste sur recordset
    Par julio_097 dans le forum ASP
    Réponses: 3
    Dernier message: 18/07/2005, 11h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo