Erreur de syntaxe dans la Clause FROM

Bonjour,

j'ai fais un petit programe en VB6 avec une base Access apres l'execution il m'affiche un message d'Erreur comme suite : [Microsoft][Pilote ODBC Access]Erreur de Syntaxe dans la Clause FROM. et La méthode 'Refresh' de l'objet 'Adodc' a echoué.
et le corp du programme comme suite:

Private Sub cmd_chercher_Click()

If Me.Tcode.Text = "" Then

   t = MsgBox("il faut saisir le code d'abord ", vbExclamation + vbOKOnly, "information")
   Exit Sub
   End If
   

  Adodc_maj_clients.RecordSource = " SELECT maj_clients.*  From maj_clients WHERE ( maj_clients.code = '" & Me.Tcode & "') "
  Adodc_maj_clients.Refresh
  If Me.Adodc_maj_clients.Recordset.RecordCount <> 0 Then

    Me.Text11.Text = Me.Adodc_maj_clients.Recordset!nom
    Me.Text9.Text = Me.Adodc_maj_clients.Recordset!Date_N
    Me.Text6.Text = Me.Adodc_maj_clients.Recordset!Etat
    Me.Text5.Text = Me.Adodc_maj_clients.Recordset!Date_RDV
  '' Me.Text4.Text = Me.Adodc_maj_client.Recordset!Date_Paiement
    Me.Text3.Text = Me.Adodc_maj_clients.Recordset!N_Recu
    Me.Text2.Text = Me.Adodc_maj_clients.Recordset!N_reg
    Me.Text12.Text = Me.Adodc_maj_clients.Recordset!Agence
    Me.Text3.Text = Me.Adodc_maj_clients.Recordset!Date_Paiement
  
Else
   p = MsgBox(" Recherche non aboutie ", vbOKOnly + vbInformation, "information")
       Exit Sub
 End If
End 


vraiment j'arrive pas a résoudre le problem , je vous remercie d'avance et bonne journée

4 réponses

  1. Bonjour,

    essayez ceci

    Tcode est une chaine de caracteres

    Adodc_maj_clients.RecordSource = "SELECT maj_clients.*  From maj_clients WHERE maj_clients.code = " & Me.Tcode
    0
    1. Plutôt difficile à tester.
      Si tu commences par
      " SELECT maj_clients.* From maj_clients"

      Est-ce que l'erreur se produit ?
      Si oui, on sait que le nom de table, ou la connexion à la BD cause le problème.

      Si non, bien on sait que c'est : WHERE ( maj_clients.code = '" & Me.Tcode & "')
      qui cause le problème.

      Simplifier le code jusqu'à ce que ça marche, et rajouter les complexités une par une pour cerner quel morceau cause le problème.
      0
      1. Merci quand même le problème n'est pas résolu voila quand j'exécute mon programme ou exactement s'arrête come suite :
        Adodc_maj_clients.RecordSource = " SELECT maj_clients.* From maj_clients WHERE ( maj_clients.code = '" & Me.Tcode & "') "
        Adodc_maj_clients.Refresh <----------- ( il s'affice la le probleme )
        If Me.Adodc_maj_clients.Recordset.RecordCount <> 0 Then
        .
        .
        .
        j'arrive pas a resoudre le problème , je te remercie infiniment
        Dorm.
        0
      2. Modérateur
        Salut,

        ça serait pas un requery plutôt qu'un refresh ?

        Et si maj_clients.code est numérique pas besoin de mettre des simples quotes...
        0
      3. Bonjour Blux,

        en VB6.0 y a pas de requery pour le datacontrol adodc
        0
      4. Modérateur
        Connais pas VB6.0 :-(

        Par contre, il serait intéressant de vérifier le contenu de la requête en mettant tout ça dans un msgbox, l'explication est sans doute là (me.tcode avec une valeur farfelue (voire non renseigné...), maj_clients.code numérique...)
        0
      5. Re,

        me.tcode est une textbox je suppose, donc chaine de caracteres
        0
    2. Re,

      la syntaxe de le requete est bonne, mais avec votre projet VB6 et la base a dispo sur https://www.cjoint.com/ ce serait plus facile
      0
      1. Je vous remercie mais le problème je l'ai localisé d'abord quand j'utilise Adodc seule avec des éditeur de texte pour récupérer les données. Et quand je l'exécute toute est bon mais quand quand j'utilise l' Éditeur de texte pour récupérer le code pour faire la recherche dans la table donc je suis obligé de faire ces instruction :
        Adodc_maj_clients.RecordSource = " SELECT maj_clients.* From maj_clients
        WHERE ( maj_clients.code = '" & Me.Tcode & "') "
        Adodc_maj_clients.Refresh <--- ( il s'affiche l'erreur ici )
        et quand j'execute le programme il m'affiche message d'erreur :
        [Microsoft][Pilote ODBC Access]Erreur de Syntaxe dans la Clause FROM. et La méthode 'Refresh' de l'objet 'Adodc' a echoué.
        s'il vous plais est ce que il existe une autre méthode de faire récupérer le donnée et il les affiche. Je vous remercie infiniment .
        Dorm.
        0
    3. Modérateur
      Bonjour,

      N'y connaissant rien, je me permet mon grain de sel.
      Désolé du dérangement si ce n'est pas ça, considérez que je n'ai fait que passer...

      Vu sur Microsoft.com :
      Si la CommandType du contrôle ADO Data est définie à
      adCmdTable, l'instruction "SELECT * From" est automatiquement ajoutée à
      la valeur RecordSource. Le fait de définir RecordSource à une instruction SQL de type SELECT, telle que Select * From Nom_table, aboutit à une instruction SQL
      incorrecte du type Select * From Select * From Nom_table.


      A tester donc :

      Adodc_maj_clients.CommandType = adCmdText 'ou mieux : adCmdUnknown
      Adodc_maj_clients.RecordSource = " SELECT maj_clients.* From maj_clients
      WHERE ( maj_clients.code = '" & Me.Tcode & "') " 
      Adodc_maj_clients.Refresh


      Sources : Cette très mauvaise traduction...

      🎼 Cordialement,
      Franck 🎶
      0
      1. Je te remercie infiniment , y'a un petit truc comment definir le texte de la commande (SQL) ? ilme fais sortir message d'erreur Adodc1 : [ADODC]: Pas de ressource specifier [Ado]:Aucun texte de commande n'a été defini pour l'objet de commande .
        je suis vraiment navrer pour le derangement
        cordialement.
        Dorm
        0
      2. Modérateur
        Comme dit précédemment, je n'y connais rien...
        Personnellement je pensais qu'il fallait toujours déclarer la "connexion". Un peu comme cet exemple :

        Private Sub DataGrid1_Error(ByVal DataError As Integer, Response As Integer)
        
        Dim MaComm As ADODB.Command, Recup
        
        If DataError = 6153 Then
            Set MaComm = New ADODB.Command 'CONNEXION !!!
            With MaComm
                .ActiveConnection = Adodc1.Recordset.ActiveConnection
                .CommandText = "INSERT INTO Publishers (Name,[Company Name]) VALUES('" & Adodc1.Recordset!Name & "','" _ 
        			& Adodc1.Recordset![Company Name] & "')"
                .Execute
                .CommandText = "SELECT @@IDENTITY"
                Recup = .Execute
                .CommandText = "INSERT INTO Titles (Title,ISBN,[Year Published],PubId) VALUES('" & Adodc1.Recordset!Title & _
        			 "','" & Adodc1.Recordset!ISBN & "','" & Adodc1.Recordset![Year Published] & "','" & Recup(0).Value & "')"
                .Execute
            End With
            Set DataGrid1.DataSource = Nothing
            Adodc1.Recordset.CancelUpdate
            Adodc1.Recordset.Requery
            Set DataGrid1.DataSource = Adodc1
            Response = 0
        End If
        
        End Sub
        


        Mais, ce lien peut s'avérer utile...
        0