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

fisgi 2 Messages postés vendredi 11 décembre 2009Date d'inscription 27 mai 2010 Dernière intervention - 27 mai 2010 à 16:29 - Dernière réponse : fisgi 2 Messages postés vendredi 11 décembre 2009Date d'inscription 27 mai 2010 Dernière intervention
- 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
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 27 mai 2010 à 16:36
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

Merci jrivet 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

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