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   -
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

  1. nephou Messages postés 247 Statut Membre 25
     
    Bonjour,

    Je crois que tu as oublié de déclarer sql en tant que variable
    0
    1. wytek Messages postés 13 Statut Membre
       
      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
    2. nephou Messages postés 247 Statut Membre 25
       
      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
    3. wytek Messages postés 13 Statut Membre
       
      ça ne fonctionne pas :'(
      0
    4. nephou Messages postés 247 Statut Membre 25
       
      sans le point virgule à la fin de ma phrase my bad je suis en plein java la lol. Toujours la même erreur ?
      0
    5. wytek Messages postés 13 Statut Membre
       
      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
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    1. wytek Messages postés 13 Statut Membre
       
      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
  3. wytek Messages postés 13 Statut Membre
     
    --------------------------------------------------------------------------
    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
  4. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Manque un espace devant le WHERE TD_MargeOnline

    et votre erreur est sur quelle ligne (si ligne surlignee)
    0
    1. wytek Messages postés 13 Statut Membre
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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