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 :

Créer factures en batch


Sujet :

VBA Access

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 312
    Points : 155
    Points
    155
    Par défaut Créer factures en batch
    Bonjour,

    J'aimerai réaliser la chose suivente:

    Pour tout les membres adhérents d'un club de fitness, une fois par mois les domiciliations sont contrôler. Pour tout ceux dont la domiciliation est en ordre, je voudrais faire une facture dans le système.
    J'ai créer un document en continue qui va me lister tout les membres avec domiciliations en cours en en cliquant sur un bouton, j'aimerai génerer tout les factures.


    J'ai copier le code de la requête sous un bouton à cliquer et j'aimerai que pour chaque adhérent une facture soit générer.
    Mais j'obtiens un code erreur 3219 invalid operation.
    Voici mon code jusqu'à maintenant.

    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
    strSQL = "SELECT T_Patient.NP, T_Patient.CodeIdentifient, T_Patient.Nom, T_Patient.Prénom, T_Patient.Domiciliation, T_Patient.DomDate, T_Patient.DomVal, T_Patient.Note, " & _
            "DateDiff(""m"",Now(),[T_Patient].[DatumAbo]) AS Valide, T_Patient.TypeAbo, T_Patient.DatumAbo FROM T_Patient WHERE T_Patient.Domiciliation = -1 And T_Patient.DomVal = -1 " & _
            "AND T_Patient.DomDate > Date() And DateDiff(""m"", Now(), [T_Patient].[DatumAbo]) < 0 ORDER BY T_Patient.Nom;"
     
    Dim oRst As DAO.Recordset
    Dim oDb As DAO.Database
    Set oDb = CurrentDb
    Set oRst = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
     
    While Not oRst.EOF
     
        Set oRst2 = oDb2.OpenRecordset("tbl_Factures", dbOpenTable)
     
        Dim strNumFact As String
        strNumFact = DLast("[N°Fact]", "tbl_Factures")
        strNum = Right(strNumFact, 3)
        strNum2 = strNum + 1
     
        Select Case strNum2
        Case 1 To 9
        strNum2 = "00" & CStr(strNum2)
     
        Case 10 To 99
        strNum2 = "0" & CStr(strNum2)    
     
        Case 100 To 999
        strNum2 = CStr(strNum2)
     
        End Select
     
        strNumFact = Replace(strNumFact, strNum, strNum2)
     
        'Passe en mode Ajout
        oRst.AddNew
        'Affecte les différents champs
        oRst2.Fields("N°Fact").Value = strNumFact
        oRst2.Fields("CodeIdentifient").Value = Me.CodeIdentifient
        oRst2.Fields("DateFact").Value = Date
     
        'Met à Jour
        oRst.Update
     
    oRst.MoveNext
    Wend
     
    'Libération des objets
    oRst.Close
    oDb.Close
    Set oRst = Nothing
    Set oDb = Nothing
    Merci d'avance

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonsoir,

    A quel moment tu lèves cette erreur ?
    Le code que tu mets est la totalité de ce qu'il y a dans l'évènement sur click de ton bouton ?

    Cordialement,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 312
    Points : 155
    Points
    155
    Par défaut
    L'erreur se produit au moment du passage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set oRst2 = oDb2.OpenRecordset("tbl_Factures", dbOpenTable)
    Pour le moment c'est effectivement tout, car je veux d'abord tester que je peux écrire une ligne dans ma table facture, avant de tout remplir.
    Mon sql est correct car je l'ai testé avec une record count.

    Donc en principe je pense que la boucle est correct, sauf que je n'arrive pas à ouvrir une deuxième recordset pour créer la facture dans la table tbl_Factures.

    Merci d'avance

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonsoir,

    Donc, l'erreur devrait être au niveau du deuxième argument de l'OpenRecordset. Est-ce que tu as regardé l'aide correspondante ? Pour moi, un dbOpenDynaset devrait faire l'affaire.

    De plus, je m'aperçois qu'il y a une petite erreur dans ton code (de la ligne 34 à 40), lors de l'ajout. Tu fais un AddNew sur le recordset oRst, or tu attribues les valeurs à oRst2 ? à vérifier !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        'Passe en mode Ajout
        oRst.AddNew
        'Affecte les différents champs
        oRst2.Fields("N°Fact").Value = strNumFact
        oRst2.Fields("CodeIdentifient").Value = Me.CodeIdentifient
        oRst2.Fields("DateFact").Value = Date
     
        'Met à Jour
        oRst.Update
    Cordialement,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 312
    Points : 155
    Points
    155
    Par défaut
    Merci pour tes remarques.

    Effectivement pour la petite erreur. Je l'avais déjà corrigé dans mon code.

    J'ai vu que je déclarais deux fois. Alors j'ai supprimé le jaune, gardé le reste et ça marche.

    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
    Dim oRst As DAO.Recordset
    Dim oDb As DAO.Database
    Dim oRst2 As DAO.Recordset
    Set oRst = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
    Set oRst2 = CurrentDb.OpenRecordset("tbl_Factures", dbOpenTable)
    
    
    While Not oRst.EOF
          Dim strMontant As Currency
          strAbo = oRst.Fields("TypeAbo")
                
           Select Case strAbo
           
           Case "GGC02"
           strMontant = "45,00 "
           
           Case "GGC03"
           strMontant = "40,00 "
           
           Case "GGC04"
           strMontant = "35,00 "
           
           Case "GGC015"
           strMontant = "60,00 "
           
           Case "GGC016"
           strMontant = "70,00 "
           
           End Select
           
                
                Set oRst2 = CurrentDb.OpenRecordset("tbl_Factures", dbOpenDynaset)
    Merci pour l'aide.

    Hans

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

Discussions similaires

  1. Créer un Fichier batch
    Par abbd dans le forum Scripts/Batch
    Réponses: 6
    Dernier message: 11/02/2009, 17h13
  2. Réponses: 10
    Dernier message: 07/03/2007, 18h46
  3. Batch, créer un fichier avec l'heure actuelle
    Par crosse9 dans le forum Windows
    Réponses: 1
    Dernier message: 19/12/2006, 09h40
  4. Batch Dos sous XP : créer un shared folder
    Par jeff37 dans le forum Windows XP
    Réponses: 2
    Dernier message: 06/03/2006, 10h27
  5. Réponses: 10
    Dernier message: 01/09/2005, 20h37

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