424-Objet requis : INSERT/SELECT SQL

Fermé
wytek Messages postés 13 Date d'inscription mardi 16 juillet 2013 Statut Membre Dernière intervention 11 juin 2015 - Modifié par jordane45 le 11/06/2015 à 12:14
michel_m Messages postés 16602 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 11 juin 2015 à 12:13
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:
-----------------------------------------------------------------------
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

nephou Messages postés 213 Date d'inscription jeudi 28 mai 2015 Statut Membre Dernière intervention 3 juillet 2015 22
2 juin 2015 à 10:12
Bonjour,

Je crois que tu as oublié de déclarer sql en tant que variable
0
wytek Messages postés 13 Date d'inscription mardi 16 juillet 2013 Statut Membre Dernière intervention 11 juin 2015
Modifié par jordane45 le 11/06/2015 à 12:15
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.
.
0
nephou Messages postés 213 Date d'inscription jeudi 28 mai 2015 Statut Membre Dernière intervention 3 juillet 2015 22
2 juin 2015 à 15:13
db.Execute "UPDATE TD_MargeOnline SET TD_MargeOnline.S-CAT =" & Val & "WHERE TD_MargeOnline.NCMD=" & Cible & ";"

c'est pas plutôt :
db.Execute("UPDATE TD_MargeOnline SET TD_MargeOnline.S-CAT =" & Val & "WHERE TD_MargeOnline.NCMD=" & Cible & ";");
0
wytek Messages postés 13 Date d'inscription mardi 16 juillet 2013 Statut Membre Dernière intervention 11 juin 2015
2 juin 2015 à 16:45
ça ne fonctionne pas :'(
0
nephou Messages postés 213 Date d'inscription jeudi 28 mai 2015 Statut Membre Dernière intervention 3 juillet 2015 22
2 juin 2015 à 16:59
sans le point virgule à la fin de ma phrase my bad je suis en plein java la lol. Toujours la même erreur ?
0
wytek Messages postés 13 Date d'inscription mardi 16 juillet 2013 Statut Membre Dernière intervention 11 juin 2015
3 juin 2015 à 10:04
j'avais enlever le ";" et ça n'a pas fonctionner
je ne comprend pas le sens de l'erreur méme dans la doc de microsoft ce n'est pas très clair
0
michel_m Messages postés 16602 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 313
3 juin 2015 à 12:00
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
0
wytek Messages postés 13 Date d'inscription mardi 16 juillet 2013 Statut Membre Dernière intervention 11 juin 2015
4 juin 2015 à 15:31
J'ai revérifier la syntaxe des mes requêtes par rapport a ton conseil mais ça na rien changer toujours la même erreur :/
0
wytek Messages postés 13 Date d'inscription mardi 16 juillet 2013 Statut Membre Dernière intervention 11 juin 2015
Modifié par jordane45 le 11/06/2015 à 12:16
--------------------------------------------------------------------------
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.
.
0
f894009 Messages postés 17268 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 29 mars 2025 1 713
10 juin 2015 à 17:22
Bonjour,

Manque un espace devant le WHERE TD_MargeOnline

et votre erreur est sur quelle ligne (si ligne surlignee)
0
wytek Messages postés 13 Date d'inscription mardi 16 juillet 2013 Statut Membre Dernière intervention 11 juin 2015
11 juin 2015 à 12:02
J'ai ajouter l'espace devant le where.
Lors du plantage il ne propose pas d'accéder au debuggeur :/
L'erreur vient forcement de cette fonction étant donné qu'il n'est survenu qu'apres son implémentation
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
michel_m Messages postés 16602 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 313
Modifié par jordane45 le 11/06/2015 à 12:16
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
0