Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
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 20/07/2011, 14h12   #1
Membre du Club
 
Homme
Chef d'entreprise
Inscription : mai 2011
Messages : 57
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Chef d'entreprise
Secteur : Arts - Culture

Informations forums :
Inscription : mai 2011
Messages : 57
Points : 61
Points : 61
Par défaut Recordset et jointure

Bonjour,

J'essaie de d'ajouter un enregistrement à un recordset basé sur deux tables liées et je me heurte à une erreur que je n'arrive pas à comprendre.

Les deux tables sont :
MAGIE : IdMagie, NomMagie, QteTotal, QtePresent
MAGIE_DISTRIBUES : IdMagieDistribue, IdAnimateur, IdMagie, QteMagie

Et voici le code :

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
 
Private Sub Form_Open(Cancel As Integer)
 
    If IsNull(Forms("F_Fiche_Animateur").Form.OpenArgs) Then
 
        Dim qdf As QueryDef
 
        Set qdf = CurrentDb.QueryDefs("SR_Magie")
 
        qdf.SQL = "SELECT MAGIE.NomMagie, MAGIE.QtePresent, MAGIE_DISTRIBUES.IdMagieDistribue, MAGIE_DISTRIBUES.IdAnimateur, MAGIE_DISTRIBUES.IdMagie, MAGIE_DISTRIBUES.QteMagie" & _
                    " FROM MAGIE INNER JOIN MAGIE_DISTRIBUES ON MAGIE.IdMagie = MAGIE_DISTRIBUES.IdMagie" & _
                    " WHERE IdAnimateur = " & Forms("F_Fiche_Animateur").Form.IdAnimateur & ";"
 
        Set rstMagie = qdf.OpenRecordset()
End If
End Sub
 
Public Sub AjoutMagie(NumMagie)
 
    rstMagie.FindFirst "IdMagie = " & NumMagie
 
    If rstMagie.NoMatch Then
        If DLookup("QtePresent", "MAGIE", "IdMagie = " & NumMagie) > 0 Then
            With rstMagie
                .AddNew
                !QtePresent = DLookup("QtePresent", "MAGIE", "IdMagie = " & NumMagie) - 1
                !IdMagie = NumMagie
                !IdAnimateur = Forms("F_Fiche_Animateur").Form.IdAnimateur
                !QteMagie = 1
                .Update
            End With
        Else
            MsgBox "Vous ne pouvez pas distribuer de " & DLookup("NomMagie", "MAGIE", "IdMagie = " & IdMagie) & " car vous n'en n'avez plus en stock.", vbCritical
        End If
    End If
 
End Sub
L'erreur survient à la ligne "!IdMagie = NumMagie" et indique :
Citation:
Le champ en cours doit correspondre à la clé de jointure "?" à la table du côté d'une relation 1-à-plusieurs...
Là où je ne comprends pas, c'est que IdMagie correspond au côté plusieurs et je ne vois pas comment indiquer ce fait à Access.
Francesco34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2011, 20h21   #2
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 470
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 470
Points : 7 552
Points : 7 552
Le problème est peut-être dans Forms("F_Fiche_Animateur").Form.IdAnimateur assures toi qu'il content bien des données et que ton programme les lit.

Si c'est OK et que cela ne marche toujours pas, copie ton SQL dans l'éditeur de requête d'Access puis bascule l'affichage en mode 'Conception'. Cela devrait te permettre de localiser le problème.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2011, 16h37   #3
Membre du Club
 
Homme
Chef d'entreprise
Inscription : mai 2011
Messages : 57
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Chef d'entreprise
Secteur : Arts - Culture

Informations forums :
Inscription : mai 2011
Messages : 57
Points : 61
Points : 61
Bonjour et merci de ta réponse.

Je n'ai malgré tout pas trouvé d'où venait le problème et vu qu'il faut bien avancer, j'ai enlevé la jointure et je mets à jour la table Magie par une requête SQL supplémentaire. Ce n'est pas le plus élégant, mais cela a le mérite de fonctionner.
Francesco34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h43.


 
 
 
 
Partenaires

Hébergement Web