Dupliquer enregistrement du formulaire et sous-formulaire [Résolu]

Signaler
Messages postés
2
Date d'inscription
vendredi 11 décembre 2009
Statut
Membre
Dernière intervention
27 mai 2010
-
Messages postés
2
Date d'inscription
vendredi 11 décembre 2009
Statut
Membre
Dernière intervention
27 mai 2010
-
Voici mon code:
Private Sub CmdNotecrédit_Click()

Dim RstProtocole As DAO.Recordset, RstProtocole2 As DAO.Recordset
Dim Db As DAO.Database, fld As DAO.Field
Dim Sql As String
Dim id As Long
Set Db = CurrentDb

'Ouvre le recordset ou sera prélevé le protocole
Set RstProtocole Db.OpenRecordset("Select Facturedate, FactureClient, FactureType, FactureCompagnie, FactureCommis, FactureDescription, FactureTaxes, FactureNotes, FactureNomContact, FactureStatut From TbFacture where FactureNuméro 17948")

'Vérifie que le protocole 1 existe
If RstProtocole.EOF Then Exit Sub
'Ouvre le recordset ou sera ajouté le protocole
Set RstProtocole2 = Db.OpenRecordset("Tbfacture")
'Duplique le protocole
With RstProtocole2
.AddNew
'Duplique les champs
For Each fld In RstProtocole.Fields
.Fields(fld.Name) = fld.Value
Next
id = .Fields("factureNuméro")
.Update
'Se positionne sur l'enregistrement ajouté
End With
'Duplique les lignes
Sql = "insert into TbFactureProduit (FactureProduitNoFacture,FactureProduitDescription,FactureProduitQuantité,FactureProduitMontant,FactureProduitTypeTaxe,FactureProduitPosteGL) Select " & _
id & ", FactureProduitDescription,FactureProduitQuantité,FactureProduitMontant,FactureProduitTypeTaxe,FactureProduitPosteGL From TbFactureProduit where FactureProduitNoFacture=17948"
Db.Execute Sql

End Sub

En ce moment le code fonctionne mais il est statique, pour qu'il duplique un enregistrement je dois entrer dans le code et changer le No de facture.
Je voudrais pouvoir changer FactureNuméro = 17948 par une valeur que l'utilisateur choisirais lui-même, sois par inputbox ou autre, lorsque je place une variable dans la condition where j'ai toujours un message d'erreur ( trop peu de paramètre attendu ).
Alors voilà mon problème, merci à ceui qui pourrais m'aider.

2 réponses

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
49
Salut,

Si une simple InputBox te conviens, essaies ceci.

Private Sub CmdNotecrédit_Click()

Dim RstProtocole As DAO.Recordset, RstProtocole2 As DAO.Recordset
Dim Db As DAO.Database, fld As DAO.Field
Dim Sql As String
Dim id As Long
Dim NumFacture As String
Set Db = CurrentDb

    
    NumFacture = InputBox("Veuillez saisir le nupméro de la facture", "Facture...")
    'Ouvre le recordset ou sera prélevé le protocole
    Set RstProtocole Db.OpenRecordset("Select Facturedate, FactureClient, FactureType, FactureCompagnie, FactureCommis, FactureDescription, FactureTaxes, FactureNotes, FactureNomContact, FactureStatut From TbFacture where FactureNuméro " & NumFacture)
    
    'Vérifie que le protocole 1 existe
    If RstProtocole.EOF Then Exit Sub
    'Ouvre le recordset ou sera ajouté le protocole
    Set RstProtocole2 = Db.OpenRecordset("Tbfacture")
    'Duplique le protocole
    With RstProtocole2
        Call .AddNew
        'Duplique les champs
        For Each fld In RstProtocole.Fields
            .Fields(fld.Name) = fld.Value
        Next
        id = .Fields("factureNuméro")
        Call .Update
        'Se positionne sur l'enregistrement ajouté
    End With
    'Duplique les lignes
    Sql = "insert into TbFactureProduit (FactureProduitNoFacture,FactureProduitDescription,FactureProduitQuantité,FactureProduitMontant,FactureProduitTypeTaxe,FactureProduitPosteGL) Select " & _
    id & ", FactureProduitDescription,FactureProduitQuantité,FactureProduitMontant,FactureProduitTypeTaxe,FactureProduitPosteGL From TbFactureProduit where FactureProduitNoFacture=" & NumFacture
    Call Db.Execute(Sql)

End Sub



@+: Ju£i€n
Pensez: Réponse acceptée
Messages postés
2
Date d'inscription
vendredi 11 décembre 2009
Statut
Membre
Dernière intervention
27 mai 2010

Merci beaucoup, ça fonctionne, c'est que je ne laissais pas mon instruction SQL entre ""