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

Le
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 moteurne peut pas trouver la
tablesource.
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Gilbert
Le #18409921
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" 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




Guy FALESSE
Le #18410191
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" %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" 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








Gilbert
Le #18410181
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" 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"

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" > 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
>>
>>
>
>




Guy FALESSE
Le #18410451
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"
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" 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"

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" > 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
>>
>>
>
>








Publicité
Poster une réponse
Anonyme