OVH Cloud OVH Cloud

Erreur d'exécution 3129

11 réponses
Avatar
Nathalie Lebas
Bonjour à tous,

J'ai reçu une erreur d'exécution 3129 sur un delete, savez-vous pourquoi ?
Dans certains formulaires, cette ligne ne pose pas de problème, dans
d'autres si !
Voici la ligne en question :
DoCmd.RunSQL ("DELETE FROM Etiquettes_Tailles where eti_uti = """ + codeuti
+ """;")
Merci de votre aide
--
Nathalie

10 réponses

1 2
Avatar
Raymond [mvp]
Bonjour.
remplace les + par des &, et les " par des ' :
DoCmd.RunSQL "DELETE FROM Etiquettes_Tailles where eti_uti = '" & codeuti &
"';"

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Nathalie Lebas" a écrit dans le
message de news:
Bonjour à tous,

J'ai reçu une erreur d'exécution 3129 sur un delete, savez-vous pourquoi ?
Dans certains formulaires, cette ligne ne pose pas de problème, dans
d'autres si !
Voici la ligne en question :
DoCmd.RunSQL ("DELETE FROM Etiquettes_Tailles where eti_uti = """ +
codeuti
+ """;")
Merci de votre aide
--
Nathalie


Avatar
Eric
Bonjour ,

et en complément de la réponse donnée par Raymond, la valeur de codeuti
devait être Null, ce qui faisait qu'avec le + utilisé comme opérateur de
concaténation tu obtenais un Null, car Access faisait une addition.

d'où le message : Instruction SQL Non valide: DELETE, INSERT ... attendus


A+
Eric

Bonjour à tous,

J'ai reçu une erreur d'exécution 3129 sur un delete, savez-vous pourquoi ?
Dans certains formulaires, cette ligne ne pose pas de problème, dans
d'autres si !
Voici la ligne en question :
DoCmd.RunSQL ("DELETE FROM Etiquettes_Tailles where eti_uti = """ + codeuti
+ """;")
Merci de votre aide


Avatar
Nathalie Lebas
Bonjour,

Merci Raymond et Eric de vos réponses. En vérité pour ne plus avoir de
message d'erreur, j'ai du écrire :
DoCmd.RunSQL ("DELETE FROM Etiquettes_Tailles where eti_uti = "" & codeuti &
"";")
Là, plus d'anomalie mais cela ne fonctionne pas pour autant. En effet, ma
variable codeuti est une variable globale déclarée en string dans un module.
Cette variable est garnie par l'utilisateur lors de son entrée dans
l'application, c'est son login. Malheureusement quand j'utilise cette
variable globale dans cette instruction sont contenu est null alors que le
login a bien été saisi puisque je gére l'affichage des formulaires avec ce
login et que cela fonctionne ! Je ne sais pas pourquoi ma variable globale
est soudainement à null. D'autant plus que dans un autre formulaire, je
l'utilise et qu'elle n'est pas à null, je n'y comprends rien.
Si vous avez une idée, elle sera la bienvenue, je cherche depuis 2 heures !!
Merci encore
Nathalie



Bonjour.
remplace les + par des &, et les " par des ' :
DoCmd.RunSQL "DELETE FROM Etiquettes_Tailles where eti_uti = '" & codeuti &
"';"

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Nathalie Lebas" a écrit dans le
message de news:
Bonjour à tous,

J'ai reçu une erreur d'exécution 3129 sur un delete, savez-vous pourquoi ?
Dans certains formulaires, cette ligne ne pose pas de problème, dans
d'autres si !
Voici la ligne en question :
DoCmd.RunSQL ("DELETE FROM Etiquettes_Tailles where eti_uti = """ +
codeuti
+ """;")
Merci de votre aide
--
Nathalie







Avatar
Raymond [mvp]
Ta commande n'est pas bonne avec les guillemets que tu as mis. pour entrer
un guillemet il faut le doubler.
as-tu essayer ma proposition avec les ' c'est plus facile ?

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Nathalie Lebas" a écrit dans le
message de news:
Bonjour,

Merci Raymond et Eric de vos réponses. En vérité pour ne plus avoir de
message d'erreur, j'ai du écrire :
DoCmd.RunSQL ("DELETE FROM Etiquettes_Tailles where eti_uti = "" & codeuti
&
"";")
Là, plus d'anomalie mais cela ne fonctionne pas pour autant. En effet, ma
variable codeuti est une variable globale déclarée en string dans un
module.
Cette variable est garnie par l'utilisateur lors de son entrée dans
l'application, c'est son login. Malheureusement quand j'utilise cette
variable globale dans cette instruction sont contenu est null alors que le
login a bien été saisi puisque je gére l'affichage des formulaires avec ce
login et que cela fonctionne ! Je ne sais pas pourquoi ma variable globale
est soudainement à null. D'autant plus que dans un autre formulaire, je
l'utilise et qu'elle n'est pas à null, je n'y comprends rien.
Si vous avez une idée, elle sera la bienvenue, je cherche depuis 2 heures
!!
Merci encore
Nathalie


Avatar
Nathalie Lebas
Que je mets des " ou des ', le résultat est le même.
Cette commande fonctionne aussi :
DoCmd.RunSQL ("DELETE FROM Etiquettes_Tailles where eti_uti = '' & codeuti &
'';")
Je pense que mon problème comme je te l'écrivais ce matin, est ma variable
globale codeuti qui est à null. Ce que je ne comprends pas c'est que je
l'utilise plus loin et qu'elle n'est pas null !
Si tu as une idée.
Bonsoir
Nathalie


Ta commande n'est pas bonne avec les guillemets que tu as mis. pour entrer
un guillemet il faut le doubler.
as-tu essayer ma proposition avec les ' c'est plus facile ?

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Nathalie Lebas" a écrit dans le
message de news:
Bonjour,

Merci Raymond et Eric de vos réponses. En vérité pour ne plus avoir de
message d'erreur, j'ai du écrire :
DoCmd.RunSQL ("DELETE FROM Etiquettes_Tailles where eti_uti = "" & codeuti
&
"";")
Là, plus d'anomalie mais cela ne fonctionne pas pour autant. En effet, ma
variable codeuti est une variable globale déclarée en string dans un
module.
Cette variable est garnie par l'utilisateur lors de son entrée dans
l'application, c'est son login. Malheureusement quand j'utilise cette
variable globale dans cette instruction sont contenu est null alors que le
login a bien été saisi puisque je gére l'affichage des formulaires avec ce
login et que cela fonctionne ! Je ne sais pas pourquoi ma variable globale
est soudainement à null. D'autant plus que dans un autre formulaire, je
l'utilise et qu'elle n'est pas à null, je n'y comprends rien.
Si vous avez une idée, elle sera la bienvenue, je cherche depuis 2 heures
!!
Merci encore
Nathalie








Avatar
Raymond [mvp]
tu as supprimé les " ou les ', c'est donc que codeuti est numérique ?sinon
ça ne peut pas marcher.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Nathalie Lebas" a écrit dans le
message de news:
Que je mets des " ou des ', le résultat est le même.
Cette commande fonctionne aussi :
DoCmd.RunSQL ("DELETE FROM Etiquettes_Tailles where eti_uti = '' & codeuti
&
'';")
Je pense que mon problème comme je te l'écrivais ce matin, est ma variable
globale codeuti qui est à null. Ce que je ne comprends pas c'est que je
l'utilise plus loin et qu'elle n'est pas null !
Si tu as une idée.
Bonsoir
Nathalie


Avatar
Eric
Bonjour Nathalie,

Dans un de tes modules de portée globale, ta variable est bien déclarée
par un *PUBLIC* codeuti as String ?
Si oui, alors tu dois avoir une proc qui la réinitialise.

A+
Eric

Bonjour,

Merci Raymond et Eric de vos réponses. En vérité pour ne plus avoir de
message d'erreur, j'ai du écrire :
DoCmd.RunSQL ("DELETE FROM Etiquettes_Tailles where eti_uti = "" & codeuti &
"";")
Là, plus d'anomalie mais cela ne fonctionne pas pour autant. En effet, ma
variable codeuti est une variable globale déclarée en string dans un module.
Cette variable est garnie par l'utilisateur lors de son entrée dans
l'application, c'est son login. Malheureusement quand j'utilise cette
variable globale dans cette instruction sont contenu est null alors que le
login a bien été saisi puisque je gére l'affichage des formulaires avec ce
login et que cela fonctionne ! Je ne sais pas pourquoi ma variable globale
est soudainement à null. D'autant plus que dans un autre formulaire, je
l'utilise et qu'elle n'est pas à null, je n'y comprends rien.
Si vous avez une idée, elle sera la bienvenue, je cherche depuis 2 heures !!
Merci encore
Nathalie




Bonjour.
remplace les + par des &, et les " par des ' :
DoCmd.RunSQL "DELETE FROM Etiquettes_Tailles where eti_uti = '" & codeuti &
"';"

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Nathalie Lebas" a écrit dans le
message de news:

Bonjour à tous,

J'ai reçu une erreur d'exécution 3129 sur un delete, savez-vous pourquoi ?
Dans certains formulaires, cette ligne ne pose pas de problème, dans
d'autres si !
Voici la ligne en question :
DoCmd.RunSQL ("DELETE FROM Etiquettes_Tailles where eti_uti = """ +
codeuti
+ """;")
Merci de votre aide
--
Nathalie









Avatar
Nathalie Lebas
Bonjour,

Non, c'est de l'alpha.
J'ai comme suit, mais peut-être est faux !
J'ai déclaré dans un module :
Global codeuti As String
Ensuite lorsque l'utilisateur se connecte à la base, il tape son login qui
est récupéré dans codeuti. A partir de codeuti, je lis la table des
utilisateurs afin de vérifier s'il existe et si le mot de passe est le bon.
Si c'est OK, j'affiche les formulaires menus en gérant les boutons que peut
voir l'utilisateur en fonction du paramètrage que je lui ai attribué et de
codeuti. Tout cela fonctionne depuis bien longtemps.
Depuis quelques jours, je souhaite, à partir de codeuti, écrire et supprimer
des enregistrements dans des tables. Ces enregistrements seront écrits avec
en premier champs le code utilisateur, soit codeuti, puis supprimés en les
recherchant à l'aide de codeuti, là, ça ne marche plus !!!
Histoire de savoir ce que contient codeuti, j'ai voulu l'afficher sur un
formulaire et rien ! par contre, mes boutons dans les menus s'affichent ou ne
s'affichent pas suivant codeuti, sans problème.
Plus fort, j'arrive à écrire dans une table avec codeuti, et je constate que
codeuti contient une valeur, mais je n'arrive pas à supprimer, même en
écrivant :
Set r1 = CurrentDb().OpenRecordset("Etiquettes_Tailles")
a = r1.RecordCount
If a <> 0 Then
r1.MoveFirst
While Not r1.EOF
If r1.eti_uti = codeuti Then
r1.Delete
End If
r1.MoveNext
Wend
End If
r1.Close
Il y a quelque chose que je ne saisi pas !
Merci pour vos idées
Nathalie



tu as supprimé les " ou les ', c'est donc que codeuti est numérique ?sinon
ça ne peut pas marcher.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Nathalie Lebas" a écrit dans le
message de news:
Que je mets des " ou des ', le résultat est le même.
Cette commande fonctionne aussi :
DoCmd.RunSQL ("DELETE FROM Etiquettes_Tailles where eti_uti = '' & codeuti
&
'';")
Je pense que mon problème comme je te l'écrivais ce matin, est ma variable
globale codeuti qui est à null. Ce que je ne comprends pas c'est que je
l'utilise plus loin et qu'elle n'est pas null !
Si tu as une idée.
Bonsoir
Nathalie








Avatar
Nathalie Lebas
Bonjour,
Non, je n'ai pas fais comme cela.
Peux-tu regarder la réponse que je viens de faire à Raymond où je m'explique.
Merci
Nathalie


Bonjour Nathalie,

Dans un de tes modules de portée globale, ta variable est bien déclarée
par un *PUBLIC* codeuti as String ?
Si oui, alors tu dois avoir une proc qui la réinitialise.

A+
Eric

Bonjour,

Merci Raymond et Eric de vos réponses. En vérité pour ne plus avoir de
message d'erreur, j'ai du écrire :
DoCmd.RunSQL ("DELETE FROM Etiquettes_Tailles where eti_uti = "" & codeuti &
"";")
Là, plus d'anomalie mais cela ne fonctionne pas pour autant. En effet, ma
variable codeuti est une variable globale déclarée en string dans un module.
Cette variable est garnie par l'utilisateur lors de son entrée dans
l'application, c'est son login. Malheureusement quand j'utilise cette
variable globale dans cette instruction sont contenu est null alors que le
login a bien été saisi puisque je gére l'affichage des formulaires avec ce
login et que cela fonctionne ! Je ne sais pas pourquoi ma variable globale
est soudainement à null. D'autant plus que dans un autre formulaire, je
l'utilise et qu'elle n'est pas à null, je n'y comprends rien.
Si vous avez une idée, elle sera la bienvenue, je cherche depuis 2 heures !!
Merci encore
Nathalie




Bonjour.
remplace les + par des &, et les " par des ' :
DoCmd.RunSQL "DELETE FROM Etiquettes_Tailles where eti_uti = '" & codeuti &
"';"

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Nathalie Lebas" a écrit dans le
message de news:

Bonjour à tous,

J'ai reçu une erreur d'exécution 3129 sur un delete, savez-vous pourquoi ?
Dans certains formulaires, cette ligne ne pose pas de problème, dans
d'autres si !
Voici la ligne en question :
DoCmd.RunSQL ("DELETE FROM Etiquettes_Tailles where eti_uti = """ +
codeuti
+ """;")
Merci de votre aide
--
Nathalie












Avatar
Eric
Bonjour Nathalie,

Je n'arrive pas à reproduire ce qui t'arrive sauf si la variable codeuti
est redéclarée dans un module de formulaire par un Dim codeuti as String
alors qu'elle a été déjà déclarée par Global codeuti as String dans un
module général (Public remplace Global si je ne me trompe depuis A2k)

Tu as une erreur sur la ligne
If r1.eti_uti = codeuti Then

il faut mettre :
If r1!eti_uti = codeuti Then

En ne déclarant qu'une seule fois codeuti dans un module global, je n'ai
pas ce problème.

Désolé de ne pouvoir te donner plus d'infos.

A+
Eric

Bonjour,
Non, je n'ai pas fais comme cela.
Peux-tu regarder la réponse que je viens de faire à Raymond où je m'explique.
Merci
Nathalie



1 2