Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Variable déclarée, mais non trouvée

4 réponses
Avatar
Guy FALESSE
Bonjour à tous,

La recherche s'effecture dans la table nommée nativement tblDépenses2009,
mais dans le but de faire des recherches dans d'autres années, j'ai donc
créé la variable ChCritères = l'année en cours
J'ai aussi remplacé tblDépenses2009 par Latable="tblDépenses" & chCritères
LaTable est bien remplacée par tblDépenses2009 ...sauf que cela ne
fonctionne pas, j'ai l'erreur 3078, le moteur...ne peut pas trouver la
table...source.
Alors que si j'écris en "dur" FROM tblDépenses2009 WHERE tblDépenses2009
etc. la fonction s'exécute bien.

Alors, que peut-il bien se passer?

Public Function Mag_DateDépenses()
Dim maBD As Database, rst As Recordset, leNbre As Long, monSQL As
String, meF As Form, meS As Form
Dim ChCritères As String, LaTable As String
Set maBD = CurrentDb
Set meF = Forms!frmRechComplexe
ChCritères = DatePart("yyyy", Date)
LaTable = "tbldépenses" & ChCritères
Ceuro = 40.3399
leNbre = 0
If meF!ListeEndroits = "(tous)" Then
monSQL = "SELECT * " _
& " FROM LaTables WHERE LaTable.DateAchat =#" &
Format$(meF!ListeDate, "mm/dd/yyyy") & "#"
monSQL = "SELECT * " _
& " FROM latable WHERE latable.DateAchat =#" &
Format$(meF!ListeDate, "mm/dd/yyyy") & "#" _
& " AND latable.LieuAchat= '" & meF!ListeEndroits & "'"
Debug.Print LaTable 'donne bien tbldépenses2009
End If
'
Set rst = maBD.OpenRecordset(monSQL) 'ici donne laTable =
introuvable
leNbre = rst.RecordCount
If leNbre = 0 Then
Beep
MsgBox "Il n'existe pas encore d'achat dans ce magasin ",
vbCritical, "Recherche par magasin"
Exit Function
Else
'DoCmd.OpenForm "StatDépenses" 'frmTableauParMagasin
'Set meS = Forms!StatDépenses 'frmTableauParMagasin

DoCmd.OpenForm "frmVérification" 'frmTableauParMagasin
Set meS = Forms!frmVérification 'frmTableauParMagasin
meS.RecordSource = monSQL
End If
rst.Close
Set maBD = Nothing
Set meF = Nothing
Set meS = Nothing
Set rst = Nothing
End Function

D'avance merci

Guy FALESSE

4 réponses

Avatar
Gilbert
Bonjour

Ta variable LaTable est une chaîne de caractères dans laquelle tu mets le
nom d'une table.
Elle n'est pas le nom d'une table existant dans la base.
Tu dois donc l'utiliser comme une chaîne de caractères dans la construction
de la chaîne SQL

monSQL = "SELECT * " _
& " FROM " & LaTable & " WHERE " & LaTable & ".DateAchat =#" &
Format$(meF!ListeDate, "mm/dd/yyyy") & "#"



--
Cordialement,

Gilbert


"Guy FALESSE" a écrit dans le message de
news:
Bonjour à tous,

La recherche s'effecture dans la table nommée nativement tblDépenses2009,
mais dans le but de faire des recherches dans d'autres années, j'ai donc
créé la variable ChCritères = l'année en cours
J'ai aussi remplacé tblDépenses2009 par Latable="tblDépenses" & chCritères
LaTable est bien remplacée par tblDépenses2009 ...sauf que cela ne
fonctionne pas, j'ai l'erreur 3078, le moteur...ne peut pas trouver la
table...source.
Alors que si j'écris en "dur" FROM tblDépenses2009 WHERE tblDépenses2009
etc. la fonction s'exécute bien.

Alors, que peut-il bien se passer?

Public Function Mag_DateDépenses()
Dim maBD As Database, rst As Recordset, leNbre As Long, monSQL As
String, meF As Form, meS As Form
Dim ChCritères As String, LaTable As String
Set maBD = CurrentDb
Set meF = Forms!frmRechComplexe
ChCritères = DatePart("yyyy", Date)
LaTable = "tbldépenses" & ChCritères
Ceuro = 40.3399
leNbre = 0
If meF!ListeEndroits = "(tous)" Then
monSQL = "SELECT * " _
& " FROM LaTables WHERE LaTable.DateAchat =#" &
Format$(meF!ListeDate, "mm/dd/yyyy") & "#"
monSQL = "SELECT * " _
& " FROM latable WHERE latable.DateAchat =#" &
Format$(meF!ListeDate, "mm/dd/yyyy") & "#" _
& " AND latable.LieuAchat= '" & meF!ListeEndroits & "'"
Debug.Print LaTable 'donne bien tbldépenses2009
End If
'
Set rst = maBD.OpenRecordset(monSQL) 'ici donne laTable > introuvable
leNbre = rst.RecordCount
If leNbre = 0 Then
Beep
MsgBox "Il n'existe pas encore d'achat dans ce magasin ",
vbCritical, "Recherche par magasin"
Exit Function
Else
'DoCmd.OpenForm "StatDépenses" 'frmTableauParMagasin
'Set meS = Forms!StatDépenses 'frmTableauParMagasin

DoCmd.OpenForm "frmVérification" 'frmTableauParMagasin
Set meS = Forms!frmVérification 'frmTableauParMagasin
meS.RecordSource = monSQL
End If
rst.Close
Set maBD = Nothing
Set meF = Nothing
Set meS = Nothing
Set rst = Nothing
End Function

D'avance merci

Guy FALESSE




Avatar
Guy FALESSE
Merci Gilbert pour ta réponse.

Je viens de tester:

If meF!ListeEndroits = "(tous)" Then
monSQL = "SELECT * " _
& " FROM " & LaTable & " WHERE" & LaTable & " .DateAchat =#" &
Format$(meF!ListeDate, "mm/dd/yyyy") & "#"
monSQL = "SELECT * " _
& " FROM " & LaTable & " WHERE" & LaTable & ".DateAchat =#" &
Format$(meF!ListeDate, "mm/dd/yyyy") & "#" _
& " AND " & LaTable & ".LieuAchat= '" & meF!ListeEndroits & "'"
Debug.Print LaTable 'donne bien tbldépenses2009
End If

Malheureusement, cela ne fonctionne pas plus, même message d'erreur.
Il me semble pas avoir fait d'erreur.
Peut-être y-a-t-il une autre manière de faire.
Merci :-)
Guy FALESSE

"Gilbert" a écrit dans le message de news:
%23Re$
Bonjour

Ta variable LaTable est une chaîne de caractères dans laquelle tu mets le
nom d'une table.
Elle n'est pas le nom d'une table existant dans la base.
Tu dois donc l'utiliser comme une chaîne de caractères dans la
construction
de la chaîne SQL

monSQL = "SELECT * " _
& " FROM " & LaTable & " WHERE " & LaTable & ".DateAchat =#" &
Format$(meF!ListeDate, "mm/dd/yyyy") & "#"



--
Cordialement,

Gilbert


"Guy FALESSE" a écrit dans le message de
news:
Bonjour à tous,

La recherche s'effecture dans la table nommée nativement tblDépenses2009,
mais dans le but de faire des recherches dans d'autres années, j'ai donc
créé la variable ChCritères = l'année en cours
J'ai aussi remplacé tblDépenses2009 par Latable="tblDépenses" &
chCritères
LaTable est bien remplacée par tblDépenses2009 ...sauf que cela ne
fonctionne pas, j'ai l'erreur 3078, le moteur...ne peut pas trouver la
table...source.
Alors que si j'écris en "dur" FROM tblDépenses2009 WHERE tblDépenses2009
etc. la fonction s'exécute bien.

Alors, que peut-il bien se passer?

Public Function Mag_DateDépenses()
Dim maBD As Database, rst As Recordset, leNbre As Long, monSQL As
String, meF As Form, meS As Form
Dim ChCritères As String, LaTable As String
Set maBD = CurrentDb
Set meF = Forms!frmRechComplexe
ChCritères = DatePart("yyyy", Date)
LaTable = "tbldépenses" & ChCritères
Ceuro = 40.3399
leNbre = 0
If meF!ListeEndroits = "(tous)" Then
monSQL = "SELECT * " _
& " FROM LaTables WHERE LaTable.DateAchat =#" &
Format$(meF!ListeDate, "mm/dd/yyyy") & "#"
monSQL = "SELECT * " _
& " FROM latable WHERE latable.DateAchat =#" &
Format$(meF!ListeDate, "mm/dd/yyyy") & "#" _
& " AND latable.LieuAchat= '" & meF!ListeEndroits & "'"
Debug.Print LaTable 'donne bien tbldépenses2009
End If
'
Set rst = maBD.OpenRecordset(monSQL) 'ici donne laTable >> introuvable
leNbre = rst.RecordCount
If leNbre = 0 Then
Beep
MsgBox "Il n'existe pas encore d'achat dans ce magasin ",
vbCritical, "Recherche par magasin"
Exit Function
Else
'DoCmd.OpenForm "StatDépenses" 'frmTableauParMagasin
'Set meS = Forms!StatDépenses 'frmTableauParMagasin

DoCmd.OpenForm "frmVérification" 'frmTableauParMagasin
Set meS = Forms!frmVérification 'frmTableauParMagasin
meS.RecordSource = monSQL
End If
rst.Close
Set maBD = Nothing
Set meF = Nothing
Set meS = Nothing
Set rst = Nothing
End Function

D'avance merci

Guy FALESSE








Avatar
Gilbert
Quand tu dis que cela ne fonctionne pas plus, est-ce que ça ne te donne pas
le résultat que tu attends ou bien que tu as un message d'erreur?
Dans ce dernier cas, lequel?

Sinon je pense qu'il manque un espace après les Where et peut-être un ELSE
au milieu

If meF!ListeEndroits = "(tous)" Then
monSQL = "SELECT * " _
& " FROM " & LaTable & " WHERE " & LaTable & " .DateAchat =#" &
Format$(meF!ListeDate, "mm/dd/yyyy") & "#"

Else
monSQL = "SELECT * " _
& " FROM " & LaTable & " WHERE " & LaTable & ".DateAchat =#" &
Format$(meF!ListeDate, "mm/dd/yyyy") & "#" _
& " AND " & LaTable & ".LieuAchat= '" & meF!ListeEndroits & "'"
Debug.Print LaTable 'donne bien tbldépenses2009
End If



--
Cordialement,

Gilbert


"Guy FALESSE" a écrit dans le message de
news:
Merci Gilbert pour ta réponse.

Je viens de tester:

If meF!ListeEndroits = "(tous)" Then
monSQL = "SELECT * " _
& " FROM " & LaTable & " WHERE" & LaTable & " .DateAchat =#" &
Format$(meF!ListeDate, "mm/dd/yyyy") & "#"
monSQL = "SELECT * " _
& " FROM " & LaTable & " WHERE" & LaTable & ".DateAchat =#" &
Format$(meF!ListeDate, "mm/dd/yyyy") & "#" _
& " AND " & LaTable & ".LieuAchat= '" & meF!ListeEndroits &


"'"
Debug.Print LaTable 'donne bien tbldépenses2009
End If

Malheureusement, cela ne fonctionne pas plus, même message d'erreur.
Il me semble pas avoir fait d'erreur.
Peut-être y-a-t-il une autre manière de faire.
Merci :-)
Guy FALESSE

"Gilbert" a écrit dans le message de


news:
%23Re$
> Bonjour
>
> Ta variable LaTable est une chaîne de caractères dans laquelle tu mets


le
> nom d'une table.
> Elle n'est pas le nom d'une table existant dans la base.
> Tu dois donc l'utiliser comme une chaîne de caractères dans la
> construction
> de la chaîne SQL
>
> monSQL = "SELECT * " _
> & " FROM " & LaTable & " WHERE " & LaTable & ".DateAchat =#"


&
> Format$(meF!ListeDate, "mm/dd/yyyy") & "#"
>
>
>
> --
> Cordialement,
>
> Gilbert
>
>
> "Guy FALESSE" a écrit dans le message de
> news:
>> Bonjour à tous,
>>
>> La recherche s'effecture dans la table nommée nativement


tblDépenses2009,
>> mais dans le but de faire des recherches dans d'autres années, j'ai


donc
>> créé la variable ChCritères = l'année en cours
>> J'ai aussi remplacé tblDépenses2009 par Latable="tblDépenses" &
>> chCritères
>> LaTable est bien remplacée par tblDépenses2009 ...sauf que cela ne
>> fonctionne pas, j'ai l'erreur 3078, le moteur...ne peut pas trouver la
>> table...source.
>> Alors que si j'écris en "dur" FROM tblDépenses2009 WHERE


tblDépenses2009
>> etc. la fonction s'exécute bien.
>>
>> Alors, que peut-il bien se passer?
>>
>> Public Function Mag_DateDépenses()
>> Dim maBD As Database, rst As Recordset, leNbre As Long, monSQL As
>> String, meF As Form, meS As Form
>> Dim ChCritères As String, LaTable As String
>> Set maBD = CurrentDb
>> Set meF = Forms!frmRechComplexe
>> ChCritères = DatePart("yyyy", Date)
>> LaTable = "tbldépenses" & ChCritères
>> Ceuro = 40.3399
>> leNbre = 0
>> If meF!ListeEndroits = "(tous)" Then
>> monSQL = "SELECT * " _
>> & " FROM LaTables WHERE LaTable.DateAchat =#" &
>> Format$(meF!ListeDate, "mm/dd/yyyy") & "#"
>> monSQL = "SELECT * " _
>> & " FROM latable WHERE latable.DateAchat =#" &
>> Format$(meF!ListeDate, "mm/dd/yyyy") & "#" _
>> & " AND latable.LieuAchat= '" & meF!ListeEndroits & "'"
>> Debug.Print LaTable 'donne bien tbldépenses2009
>> End If
>> '
>> Set rst = maBD.OpenRecordset(monSQL) 'ici donne laTable > >> introuvable
>> leNbre = rst.RecordCount
>> If leNbre = 0 Then
>> Beep
>> MsgBox "Il n'existe pas encore d'achat dans ce magasin ",
>> vbCritical, "Recherche par magasin"
>> Exit Function
>> Else
>> 'DoCmd.OpenForm "StatDépenses" 'frmTableauParMagasin
>> 'Set meS = Forms!StatDépenses 'frmTableauParMagasin
>>
>> DoCmd.OpenForm "frmVérification" 'frmTableauParMagasin
>> Set meS = Forms!frmVérification 'frmTableauParMagasin
>> meS.RecordSource = monSQL
>> End If
>> rst.Close
>> Set maBD = Nothing
>> Set meF = Nothing
>> Set meS = Nothing
>> Set rst = Nothing
>> End Function
>>
>> D'avance merci
>>
>> Guy FALESSE
>>
>>
>
>




Avatar
Guy FALESSE
Bonjour Gilbert,
J'ai en effet rajouté un espace après le WHERE et un Else, qui était passé à
la trappe et ça fonctionne comme il le faut.
Décidément, je ne m'y ferai jamais avec ces espaces ou les apostrophes et
les guillemets.:-(
Encore un grand merci pour ton aide et bon W-E

Guy FALESSE

"Gilbert" a écrit dans le message de news:

Quand tu dis que cela ne fonctionne pas plus, est-ce que ça ne te donne
pas
le résultat que tu attends ou bien que tu as un message d'erreur?
Dans ce dernier cas, lequel?

Sinon je pense qu'il manque un espace après les Where et peut-être un ELSE
au milieu

If meF!ListeEndroits = "(tous)" Then
monSQL = "SELECT * " _
& " FROM " & LaTable & " WHERE " & LaTable & " .DateAchat =#" &
Format$(meF!ListeDate, "mm/dd/yyyy") & "#"

Else
monSQL = "SELECT * " _
& " FROM " & LaTable & " WHERE " & LaTable & ".DateAchat =#" &
Format$(meF!ListeDate, "mm/dd/yyyy") & "#" _
& " AND " & LaTable & ".LieuAchat= '" & meF!ListeEndroits & "'"
Debug.Print LaTable 'donne bien tbldépenses2009
End If



--
Cordialement,

Gilbert


"Guy FALESSE" a écrit dans le message de
news:
Merci Gilbert pour ta réponse.

Je viens de tester:

If meF!ListeEndroits = "(tous)" Then
monSQL = "SELECT * " _
& " FROM " & LaTable & " WHERE" & LaTable & " .DateAchat =#" &
Format$(meF!ListeDate, "mm/dd/yyyy") & "#"
monSQL = "SELECT * " _
& " FROM " & LaTable & " WHERE" & LaTable & ".DateAchat =#" &
Format$(meF!ListeDate, "mm/dd/yyyy") & "#" _
& " AND " & LaTable & ".LieuAchat= '" & meF!ListeEndroits &


"'"
Debug.Print LaTable 'donne bien tbldépenses2009
End If

Malheureusement, cela ne fonctionne pas plus, même message d'erreur.
Il me semble pas avoir fait d'erreur.
Peut-être y-a-t-il une autre manière de faire.
Merci :-)
Guy FALESSE

"Gilbert" a écrit dans le message de


news:
%23Re$
> Bonjour
>
> Ta variable LaTable est une chaîne de caractères dans laquelle tu mets


le
> nom d'une table.
> Elle n'est pas le nom d'une table existant dans la base.
> Tu dois donc l'utiliser comme une chaîne de caractères dans la
> construction
> de la chaîne SQL
>
> monSQL = "SELECT * " _
> & " FROM " & LaTable & " WHERE " & LaTable & ".DateAchat
> =#"


&
> Format$(meF!ListeDate, "mm/dd/yyyy") & "#"
>
>
>
> --
> Cordialement,
>
> Gilbert
>
>
> "Guy FALESSE" a écrit dans le message de
> news:
>> Bonjour à tous,
>>
>> La recherche s'effecture dans la table nommée nativement


tblDépenses2009,
>> mais dans le but de faire des recherches dans d'autres années, j'ai


donc
>> créé la variable ChCritères = l'année en cours
>> J'ai aussi remplacé tblDépenses2009 par Latable="tblDépenses" &
>> chCritères
>> LaTable est bien remplacée par tblDépenses2009 ...sauf que cela ne
>> fonctionne pas, j'ai l'erreur 3078, le moteur...ne peut pas trouver la
>> table...source.
>> Alors que si j'écris en "dur" FROM tblDépenses2009 WHERE


tblDépenses2009
>> etc. la fonction s'exécute bien.
>>
>> Alors, que peut-il bien se passer?
>>
>> Public Function Mag_DateDépenses()
>> Dim maBD As Database, rst As Recordset, leNbre As Long, monSQL As
>> String, meF As Form, meS As Form
>> Dim ChCritères As String, LaTable As String
>> Set maBD = CurrentDb
>> Set meF = Forms!frmRechComplexe
>> ChCritères = DatePart("yyyy", Date)
>> LaTable = "tbldépenses" & ChCritères
>> Ceuro = 40.3399
>> leNbre = 0
>> If meF!ListeEndroits = "(tous)" Then
>> monSQL = "SELECT * " _
>> & " FROM LaTables WHERE LaTable.DateAchat =#" &
>> Format$(meF!ListeDate, "mm/dd/yyyy") & "#"
>> monSQL = "SELECT * " _
>> & " FROM latable WHERE latable.DateAchat =#" &
>> Format$(meF!ListeDate, "mm/dd/yyyy") & "#" _
>> & " AND latable.LieuAchat= '" & meF!ListeEndroits & "'"
>> Debug.Print LaTable 'donne bien tbldépenses2009
>> End If
>> '
>> Set rst = maBD.OpenRecordset(monSQL) 'ici donne laTable >> >> introuvable
>> leNbre = rst.RecordCount
>> If leNbre = 0 Then
>> Beep
>> MsgBox "Il n'existe pas encore d'achat dans ce magasin ",
>> vbCritical, "Recherche par magasin"
>> Exit Function
>> Else
>> 'DoCmd.OpenForm "StatDépenses" 'frmTableauParMagasin
>> 'Set meS = Forms!StatDépenses 'frmTableauParMagasin
>>
>> DoCmd.OpenForm "frmVérification" 'frmTableauParMagasin
>> Set meS = Forms!frmVérification 'frmTableauParMagasin
>> meS.RecordSource = monSQL
>> End If
>> rst.Close
>> Set maBD = Nothing
>> Set meF = Nothing
>> Set meS = Nothing
>> Set rst = Nothing
>> End Function
>>
>> D'avance merci
>>
>> Guy FALESSE
>>
>>
>
>