Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/06/2011, 20h28   #1
Membre du Club
 
beauchat symba
Inscription : janvier 2010
Messages : 95
Détails du profil
Informations personnelles :
Nom : beauchat symba

Informations forums :
Inscription : janvier 2010
Messages : 95
Points : 50
Points : 50
Par défaut Dupliquer Formulaire et s/s Formulaire pb SQL sur le s/s formulaire

Bonjour à tous
Je m'en sors pas !(sur un coup qui paraît classique au vu des forums consultés) Voici la chose
J'essaie de dupliquer un Formulaire et son s/s formulaire

Situation
Devis - Clé primaire: compteur
est aussi la clé de liaison côté 1 soit K_NumDevis
DevisLignes - Clé Primaire: compteur:K_LigDevis
avec clé secondaire de liaison côté plusieurs: K_NumDevis

Voici le code du Bouton sur le Formulaire Principal

Code :
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
Private Sub cmdDupe_Click()
'On Error GoTo Err_Handler
 
    Dim strSql As String    'SQL statement.
    Dim lngID As Long       'Primary key value of the new record.
 
    'Save any edits first
    If Me.Dirty Then
        Me.Dirty = False
    End If
 
    'Make sure there is a record to duplicate.
    If Me.NewRecord Then
        MsgBox "Select the record to duplicate."
    Else
        'Duplicate the main record: add to form's clone.
        With Me.RecordsetClone
            .AddNew
                !NomSociete = Me.NomSociete
                !NomClt = Me.NomClt
                !Ad1Clt = Me.Ad1Clt
                !CpClt = Me.Ad2Clt
                !CpClt = Me.CpClt
                !VilleClt = Me.VilleClt
                'etc for other fields.
            .Update
 
            'Save the primary key value, to use as the foreign key for the related records.
            .Bookmark = .LastModified
            lngID = !K_NumDevis
 
            'Duplicate the related records: append query.
            If Me.[F111_DevisLig Sous-formulaire].Form.RecordsetClone.RecordCount > 0 Then
                strSql = "INSERT INTO [T_DevisLig] (K_LigDevis,K_NumDevis,Libellé,Q,Unité,Pu,MntHtLig ) " & _
                    "SELECT " & lngID & " As NewID,K_NumDevis,Libellé,Q,Unité,Pu,MntHtLig " & _
                    "FROM [T_DevisLig] WHERE K_NumDevis = " & Me.K_NumDevis & ";"
             DBEngine(0)(0).Execute strSql, dbFailOnError
 
            Else
                MsgBox "Main record duplicated, but there were no related records."
            End If
 
            'Display the new duplicate.
            Me.Bookmark = .LastModified
        End With
    End If
 
Exit_Handler:
    Exit Sub
 
Err_Handler:
    MsgBox "Error " & Err.Number & " - " & Err.Description, , "cmdDupe_Click"
    Resume Exit_Handler
End Sub
Après vérification c'est la duplication des enregistrement du s/s formulaire
qui pose problèmes
Je lève l'erreur 3022 :RISQUE DE DOUBLONS dans les index..
Donc j'ai pb SQL mais je vois pas
Si vous avez une idée je suis preneur
Merci à tous et bonne fin de we
BG
symbabeauchat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2011, 09h55   #2
Membre du Club
 
beauchat symba
Inscription : janvier 2010
Messages : 95
Détails du profil
Informations personnelles :
Nom : beauchat symba

Informations forums :
Inscription : janvier 2010
Messages : 95
Points : 50
Points : 50
Par défaut Erreur dans code SQL

Bonjour à tous:
j'ai trouvé mon erreur

1) J'ai supprimer de INSERT INTO la K_LigDevis (car c'est une clé AutoNumber qui ne doit pas être dupliquée)
2) et un peu plus loin le petit commentaire As New ID
3) et juste derrière K_NumDevis qui n'a rien à faire là

Comme quoi la nuit porte conseil !
Voici donc le code qui marche

Code :
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
Private Sub cmdDupe_Click()
'On Error GoTo Err_Handler
 
Dim strSql As String 'SQL statement.
Dim lngID As Long 'Primary key value of the new record.
 
'Save any edits first
If Me.Dirty Then
Me.Dirty = False
End If
 
'Make sure there is a record to duplicate.
If Me.NewRecord Then
MsgBox "Select the record to duplicate."
Else
'Duplicate the main record: add to form's clone.
With Me.RecordsetClone
.AddNew
!NomSociete = Me.NomSociete
!NomClt = Me.NomClt
!Ad1Clt = Me.Ad1Clt
!CpClt = Me.Ad2Clt
!CpClt = Me.CpClt
!VilleClt = Me.VilleClt
'etc for other fields.
.Update
 
'Save the primary key value, to use as the foreign key for the related records.
.Bookmark = .LastModified
lngID = !K_NumDevis
 
'Duplicate the related records: append query.
If Me.[F111_DevisLig Sous-formulaire].Form.RecordsetClone.RecordCount > 0 Then
strSql = "INSERT INTO [T_DevisLig] (K_NumDevis,Libellé,Q,Unité,Pu,MntHtLig ) " & _
"SELECT " & lngID & " ,Libellé,Q,Unité,Pu,MntHtLig " & _
"FROM [T_DevisLig] WHERE K_NumDevis = " & Me.K_NumDevis & ";"
DBEngine(0)(0).Execute strSql, dbFailOnError
 
Else
MsgBox "Main record duplicated, but there were no related records."
End If
 
'Display the new duplicate.
Me.Bookmark = .LastModified
End With
End If
 
Exit_Handler:
Exit Sub
 
Err_Handler:
MsgBox "Error " & Err.Number & " - " & Err.Description, , "cmdDupe_Click"
Resume Exit_Handler
End Sub
symbabeauchat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2011, 10h12   #3
Membre éprouvé
 
Avatar de dumas.blr
 
Homme Jean-Yves DUMAS
Consultant informatique
Inscription : juin 2010
Messages : 325
Détails du profil
Informations personnelles :
Nom : Homme Jean-Yves DUMAS
Âge : 48
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Conseil

Informations forums :
Inscription : juin 2010
Messages : 325
Points : 447
Points : 447
Bonjour,
si ton pb est résolu, n'oublie pas de mettre dans ton topic, ça nous évitera d'avoir à le consulter
__________________
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !!!
si tout est OK, n'oubliez pas de cliquer sur
dumas.blr est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h58.


 
 
 
 
Partenaires

Hébergement Web