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

Messages postés
2
Date d'inscription
vendredi 11 décembre 2009
Dernière intervention
27 mai 2010
- - Dernière réponse : fisgi
Messages postés
2
Date d'inscription
vendredi 11 décembre 2009
Dernière intervention
27 mai 2010
- 27 mai 2010 à 17:14
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.
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
7401
Date d'inscription
mercredi 23 avril 2003
Dernière intervention
6 avril 2012
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 96 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jrivet
Messages postés
2
Date d'inscription
vendredi 11 décembre 2009
Dernière intervention
27 mai 2010
0
Merci
Merci beaucoup, ça fonctionne, c'est que je ne laissais pas mon instruction SQL entre ""
Commenter la réponse de fisgi

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.