424-Objet requis : INSERT/SELECT SQL
wytek
Messages postés
13
Statut
Membre
-
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour a toutes et a tous,
J'ai l'erreur "424-Objet requis" qui ressort lors de l'exécution de ma fonction VBA.
Qui est:
-----------------------------------------------------------------------
-------------------------------------------------------------
Je me remet au savoir infini des utilisateur de ce forum...
Merci a vous par avance a bientôt.
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Merci d'y penser dans tes prochains messages.
.
J'ai l'erreur "424-Objet requis" qui ressort lors de l'exécution de ma fonction VBA.
Qui est:
-----------------------------------------------------------------------
Public Function MAJ_SCAT_Avoirs()
Dim rst As DAO.Recordset
Dim Cible As String
Dim Origine As String
Dim Val As Integer
sql = "SELECT NCMD FROM TD_MargeOnline WHERE TCMD=3 OR TCMD=4 ;"
Set rst = db.OpenRecordset(sql, dbOpenSnapshot)
While Not rst.EOF And rst.BOF
Cible = rst!NCMD
sql = "SELECT NFAR FROM TD_Avoirs WHERE NCMD=" & Cible & ";"
Set rst = db.OpenRecordset(sql, dbOpenSnapshot)
Origine = rst!NFAR
Val = DLookup("[S-CAT]", "TD_MargeOnline", "[NCMD]='" & Origine & "'")
db.Execute "UPDATE TD_MargeOnline SET TD_MargeOnline.S-CAT =" & Val & "WHERE TD_MargeOnline.NCMD=" & Cible & ";"
'passage a la ligne suivante
rst.MoveNext
Wend
End Function
-------------------------------------------------------------
Je me remet au savoir infini des utilisateur de ce forum...
Merci a vous par avance a bientôt.
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Merci d'y penser dans tes prochains messages.
.
5 réponses
-
Bonjour,
Je crois que tu as oublié de déclarer sql en tant que variable-
Voila le code après modif :
---------------------------------------------------------------------------------Public Function MAJ_SCAT_Avoirs() Dim rst As DAO.Recordset Dim Cible As String Dim Origine As String Dim Val As Integer Dim sql As String sql = "SELECT NCMD FROM TD_MargeOnline WHERE TCMD=3 OR TCMD=4 ;" Set rst = db.OpenRecordset(sql, dbOpenSnapshot) While Not rst.EOF And rst.BOF Cible = rst!NCMD sql = "SELECT NFAR FROM TD_Avoirs WHERE NCMD=" & Cible & ";" Set rst = db.OpenRecordset(sql, dbOpenSnapshot) Origine = rst!NFAR Val = DLookup("[S-CAT]", "TD_MargeOnline", "[NCMD]='" & Origine & "'") db.Execute "UPDATE TD_MargeOnline SET TD_MargeOnline.S-CAT =" & Val & "WHERE TD_MargeOnline.NCMD=" & Cible & ";" 'passage a la ligne suivante rst.MoveNext Wend End Function
-----------------------------------------------------------------------------------------
L'erreur ressort toujours :'(
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Merci d'y penser dans tes prochains messages.
. -
-
-
-
-
-
bonjour
syntaxe SQl variable de type string'" &cible & "'
--
soit apostrophe guillemets variable guillemets apostrophe
ou
["cible"]
a voir
en VBA Val est un mot réservé
et si la valeur c'est un nombre tu peux marqué directement
S-CAT =Valeur suivi d'un espace avant where
Michel -
--------------------------------------------------------------------------
Public Function MAJ_SCAT_Avoirs() Dim rst As DAO.Recordset Dim Cible As String Dim Origine As String Dim valeur As Integer Dim sql As String sql = "SELECT NCMD FROM TD_MargeOnline WHERE TCMD=3 OR TCMD=4 ;" Set rst = db.OpenRecordset(sql, dbOpenSnapshot) While Not rst.EOF And rst.BOF Cible = rst!NCMD sql = "SELECT NFAR FROM TD_Avoirs WHERE NCMD=" & Cible & ";" Set rst = db.OpenRecordset(sql, dbOpenSnapshot) Origine = rst!NFAR valeur = DLookup("[S-CAT]", "TD_MargeOnline", "[NCMD]='" & Origine & "'") db.Execute ("UPDATE TD_MargeOnline SET TD_MargeOnline.S-CAT =" & valeur & "WHERE TD_MargeOnline.NCMD='" & Cible & "';") 'passage a la ligne suivante rst.MoveNext Wend End Function
------------------------------------------------------------------------
Voila la dernière version du code.
Si quelqu'un voie la moindre erreur même un simple caractère un espace ou quoi que ce soit , qu'il me le signal.
J'en peut plu de ce problème :'( la solution doit être toute simple mais je ne la vois pas.
Je désespère...
Je vous remercie d'avance
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Merci d'y penser dans tes prochains messages.
. -
Bonjour,
Manque un espace devant le WHERE TD_MargeOnline
et votre erreur est sur quelle ligne (si ligne surlignee) -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bonjour
sql = "SELECT NFAR FROM TD_Avoirs WHERE NCMD=" & Cible & ";"
Cible est du texte donc syntaxe comme tu l'as écrit + plus bas
je ne connais pas ce que tu veux faire mais tu as des relations entre 2 tables margeonline et avoirs: l'emploi des jointures ne pourraient elles pas être utilisées dans ton cas ?
**** Attention ****
Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
.
Michel