Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
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 19/06/2011, 17h08   #1
Invité régulier
 
Inscription : juin 2011
Messages : 33
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 33
Points : 6
Points : 6
Par défaut erreur sur formulaire de MAJ

Bonjour,

Je débute sous access, et je cherche à créer un formulaire de modification des données présentes dans ma table ARTICLE. Le code associé à mon bouton de modification est :
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
 
Private Sub Commande17_Click()
        Dim SQL As String
 
       Dim cde As Integer
            cde = Me!CODE_ARTICLE
        Dim prix As Single
            prix = Me!PRIX_ARTICLE
        Dim stock As Integer
            stock = Me!STOCK_ARTICLE
        Dim design As String
            design = Me!NOM_ARTICLE
        Dim stock_s As Integer
            stock_s = Me!STOCK_SECURITE_ARTICLE
        Dim etat As Boolean
            etat = Me!ETAT_ARTICLE
        Dim cat As Integer
            stock_s = Me!NUMERO_CATEGORIE
        Dim four As Integer
            four = Me!CODE_FOURNISSEUR
 
 
        SQL = "UPDATE ARTICLE SET ARTICLE.PRIX_ARTICLE = '" & prix & "',  ARTICLE.STOCK_ARTICLE='" & stock & "',  ARTICLE.NOM_ARTICLE='" & design & "',  ARTICLE.STOCK_SECURITE_ARTICLE='" & stock_s & "',  ARTICLE.ETAT_ARTICLE='" & etat & "',  ARTICLE.NUMERO_CATEGORIE='" & cat & "',  ARTICLE.CODE_FOURNISSEUR= '" & four & "' "
        SQL = SQL & "WHERE ARTICLE.CODE_ARTICLE = '" & cde & "';"
 
    Dim intReponse As Integer
    intReponse = MsgBox("Voulez vous vraiment modifier l'article en cours ?", vbQuestion + vbYesNo, "Annuler la saisie")
    If intReponse = vbYes Then
        DoCmd.RunSQL (SQL)
    End If
End Sub
Cependant je suis gratifié du message d'erreur suivant : "Erreur d'exécution 3464, type de données incompatibles dans l'expression du critère". Je crois comprendre que le WHERE pose problème, cependant mes types ne semblent pas incohérents :/ Auriez vous une idée ? D'avance merci !
virtual_bug est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2011, 17h26   #2
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,

Commence par ajouter la ligne "debug.print SQL" avant d'exécuter ta requête, cela te permettra de vérifier que ta variable SQL est bien celle que tu attends.
Francesco34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2011, 17h45   #3
Invité régulier
 
Inscription : juin 2011
Messages : 33
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 33
Points : 6
Points : 6
Bonjour, et merci pour ta réponse. J'ai ajouté la ligne que tu m'as suggéré, mais cela ne change absolument rien, à aucun moment ma requête ne s'affiche.
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
Private Sub Commande17_Click()
        Dim SQL As String
 
        Dim cde As Integer
            cde = Me!CODE_ARTICLE
        Dim prix As Single
            prix = Me!PRIX_ARTICLE
        Dim stock As Integer
            stock = Me!STOCK_ARTICLE
        Dim design As String
            design = Me!NOM_ARTICLE
        Dim stock_s As Integer
            stock_s = Me!STOCK_SECURITE_ARTICLE
        Dim etat As Boolean
            etat = Me!ETAT_ARTICLE
        Dim cat As Integer
            stock_s = Me!NUMERO_CATEGORIE
        Dim four As Integer
            four = Me!CODE_FOURNISSEUR
 
 
        SQL = "UPDATE ARTICLE SET ARTICLE.PRIX_ARTICLE = '" & prix & "',  ARTICLE.STOCK_ARTICLE='" & stock & "',  ARTICLE.NOM_ARTICLE='" & design & "',  ARTICLE.STOCK_SECURITE_ARTICLE='" & stock_s & "',  ARTICLE.ETAT_ARTICLE='" & etat & "',  ARTICLE.NUMERO_CATEGORIE='" & cat & "',  ARTICLE.CODE_FOURNISSEUR= '" & four & "' "
        SQL = SQL & "WHERE ARTICLE.CODE_ARTICLE = '" & cde & "';"
    Debug.Print SQL
    'Dim intReponse As Integer
   ' intReponse = MsgBox("Voulez vous vraiment modifier l'article en cours ?", vbQuestion + vbYesNo, "Annuler la saisie")
    'If intReponse = vbYes Then
    '    Debug.Print SQL
    '    DoCmd.RunSQL (SQL)
   ' End If
End Sub
Aurais je oublié quelque chose ?
virtual_bug est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2011, 17h59   #4
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
Quand tu es dans VBA, tu dois avoir une fenêtre nommée exécution en bas de l'écran; c'est dans cette fenêtre que s'affichera la requête. Si jamais tu n'as pas cette fenêtre, tu peux l'afficher depuis le menu "Affichage" ou tout simplement en faisant "gtrl + G".
Francesco34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2011, 18h25   #5
Invité régulier
 
Inscription : juin 2011
Messages : 33
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 33
Points : 6
Points : 6
j'obtiens la requête suivante, qui me semble tout a fait correcte :
Code :
UPDATE ARTICLE SET ARTICLE.PRIX_ARTICLE = '13',  ARTICLE.STOCK_ARTICLE='10',  ARTICLE.NOM_ARTICLE='désignation article 2',  ARTICLE.STOCK_SECURITE_ARTICLE='3',  ARTICLE.ETAT_ARTICLE='Faux',  ARTICLE.NUMERO_CATEGORIE='0',  ARTICLE.CODE_FOURNISSEUR= '1' WHERE ARTICLE.CODE_ARTICLE = '2';
Le seul petit doute que j'ai concerne ETAT_ARTICLE='Faux', dans ma table c'est un booléen oui/non, mais ça me semble tout de même assez cohérent.
virtual_bug est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2011, 18h29   #6
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
Tu as le doute au bon endroit. La présence de guillemets autour de FAUX signifie qu'il s'agit d'un type string et non d'un type booléen; d'où l'erreur que tu rencontres.
En enlevant ces guillemets, tu devrais rencontrer un autre problème, VBA accepte true ou false mais pas vrai ou faux. Pour contourner cela, il faut déclarer ta variable en integer et elle prendra alors la valeur 0 ou -1.
Francesco34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2011, 18h35   #7
Invité régulier
 
Inscription : juin 2011
Messages : 33
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 33
Points : 6
Points : 6
J'ai effectué les modifs comme indiqué, j'obtiens la requête suivante :
Code :
UPDATE ARTICLE SET ARTICLE.PRIX_ARTICLE = '18',  ARTICLE.STOCK_ARTICLE='10',  ARTICLE.NOM_ARTICLE='désignation article 2',  ARTICLE.STOCK_SECURITE_ARTICLE='3',  ARTICLE.ETAT_ARTICLE=0,  ARTICLE.NUMERO_CATEGORIE='0',  ARTICLE.CODE_FOURNISSEUR= '1' WHERE ARTICLE.CODE_ARTICLE = '2';
Cependant, je suis gratifié du même message d'erreur

Dois je retirer les guillemets pour tous les types numériques ?
virtual_bug est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2011, 18h41   #8
Invité régulier
 
Inscription : juin 2011
Messages : 33
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 33
Points : 6
Points : 6
C'était bien ça. Merci !
virtual_bug est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2011, 18h46   #9
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
En effet, ce que je disais pour les guillemets au sujet des booléens vaut aussi pour les entiers.
Francesco34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2011, 18h52   #10
Invité régulier
 
Inscription : juin 2011
Messages : 33
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 33
Points : 6
Points : 6
Bon, c'est reparti, maintenant j'obtiens que Access n'a pas mis a jour un enregistrement suite à une violation de clé
Comment puis-je faire une violation de clé alors que je me contente de mettre à jour la ligne en question ?
virtual_bug est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2011, 20h00   #11
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
Quelle est la structure de ta table ARTICLE ?
Francesco34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2011, 20h30   #12
Invité régulier
 
Inscription : juin 2011
Messages : 33
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 33
Points : 6
Points : 6
Ci joint une capture d'écran de ma table

sans titre3.jpg
virtual_bug est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 20h38   #13
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
Et quelles sont les intégrités référentielles entre cette table et les tables liées ?
Est-il prévu que les champs numero_categorie et code_fournisseur soit modifiés ?
Francesco34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 14h00   #14
Invité régulier
 
Inscription : juin 2011
Messages : 33
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 33
Points : 6
Points : 6
Je me suis débrouillé autrement, et je n'ai plus ce problème à présent. Merci de ton aide en tout cas. (je poste cependant un autre sujet concernant un autre problème).
virtual_bug 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 01h29.


 
 
 
 
Partenaires

Hébergement Web