Erreur de syntaxe dans la Clause FROM

dormdaz Messages postés 361 Statut Membre -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
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. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  2. PlacageGranby Messages postés 402 Statut Membre 26
     
    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. dormdaz Messages postés 361 Statut Membre
       
      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. blux Messages postés 5031 Date d'inscription   Statut Modérateur Dernière intervention   3 455
       
      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. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Bonjour Blux,

      en VB6.0 y a pas de requery pour le datacontrol adodc
      0
    4. blux Messages postés 5031 Date d'inscription   Statut Modérateur Dernière intervention   3 455
       
      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. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,

      me.tcode est une textbox je suppose, donc chaine de caracteres
      0
  3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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. dormdaz Messages postés 361 Statut Membre
       
      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
  4. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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. dormdaz Messages postés 361 Statut Membre
       
      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. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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