Erreur de syntaxe dans la Clause FROM

Fermé
dormdaz Messages postés 306 Date d'inscription lundi 18 décembre 2006 Statut Membre Dernière intervention 31 août 2023 - Modifié par pijaku le 19/11/2014 à 10:53
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 20 nov. 2014 à 11:13
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 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié par f894009 le 19/11/2014 à 14:12
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 393 Date d'inscription mercredi 26 mars 2014 Statut Membre Dernière intervention 7 mars 2019 26
Modifié par PlacageGranby le 19/11/2014 à 14:20
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 306 Date d'inscription lundi 18 décembre 2006 Statut Membre Dernière intervention 31 août 2023
19 nov. 2014 à 15:04
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 26006 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 25 avril 2024 3 289
19 nov. 2014 à 15:35
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 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
19 nov. 2014 à 15:40
Bonjour Blux,

en VB6.0 y a pas de requery pour le datacontrol adodc
0
blux Messages postés 26006 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 25 avril 2024 3 289
19 nov. 2014 à 16:16
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 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
19 nov. 2014 à 16:20
Re,

me.tcode est une textbox je suppose, donc chaine de caracteres
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié par f894009 le 19/11/2014 à 15:29
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 306 Date d'inscription lundi 18 décembre 2006 Statut Membre Dernière intervention 31 août 2023
19 nov. 2014 à 22:12
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 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
Modifié par pijaku le 20/11/2014 à 07:49
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 306 Date d'inscription lundi 18 décembre 2006 Statut Membre Dernière intervention 31 août 2023
20 nov. 2014 à 10:17
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 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
20 nov. 2014 à 11:13
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