Erreur de syntaxe dans la Clause FROM

dormdaz Messages postés 361 Statut Membre -  
pijaku Messages postés 13513 Statut Modérateur -
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


A voir également:

4 réponses

f894009 Messages postés 17414 Date d'inscription   Statut Membre Dernière intervention   1 715
 
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
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
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
blux Messages postés 27843 Date d'inscription   Statut Modérateur Dernière intervention   3 360
 
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
f894009 Messages postés 17414 Date d'inscription   Statut Membre Dernière intervention   1 715
 
Bonjour Blux,

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

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