OVH Cloud OVH Cloud

Probleme Erreur de compilation constante requise

2 réponses
Avatar
francisco
Bonjour tout le monde


J'ai defini ma requete de maniere à ce que je puisse l'appeler de n'importe
quel module. Le probleme est comment je dois definir CritereCodeProduct pour
que je puisse l'appeler à partir du module connexion.Je souhaite définir
CritereCodeProduct t dans le module ModConnexion comme variable public mais
je ne sais pas declarer CritereCodeProduct car quand j'essaie de faire
tourner ma requête qui est defini comme public je rencontre le probleme
suivant CritereCodeProduct Erreur de compilation constante requise
CritereCodeProduct est un combobox qui est defini dans un formulaire appelé
Frmsaisie
CritereCodeProduct = FrmSaisie.CboListeCodeProduct.Value

Merci tout le monde pour vos reponses
Voici mon code :
------------------------------------------------------------
ModDeclarationVariable
------------------------------------------------------------
Public Const Rsql = "Select Ventes1999.CodeProduct FROM Ventes1999 WHERE
((Ventes1999.LibelleCodeProduct)= '" & CritereCodeProduct & "') ;"
Comment je dois definir CritereCodeProduct dans mon module
ModDeclarationVariable de manière à ce qu'elle puiisse être appelé à partit
du ModConnexion
------------------------------------------------------------
ModConnexion
------------------------------------------------------------
Sub EtablirConnexion(OuvrirFichier)

Dim cnt As New ADODB.Connection
Dim rst As New ADODB.Recordset-
'----------------------------------------------------
'à ouvrir une seule fois
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=
c:\psm_analyse_formulaire.mdb ;"
'------------------------------------------------------------
'Alimentation CODEPRODUCT
'------------------------------------------------------------
rst.Open Rsql, cnt

Columns("A").Clear
Range("A4") = "Type de produit"
Range("A4").Font.Bold = True
i = 4
While Not rst.EOF
i = i + 1
Sheets("Feuil1").Range("A" & i).Value = rst!CodeProduct
rst.MoveNext
Wend

rst.Close
Set rst = Nothing

2 réponses

Avatar
francisco
Merci MichDenis pour ta solution et pour le temps que tu me consacres cela
me fait progresser

Amicalement Francisco
"michdenis" a écrit dans le message de
news:OiYO3F%
Bonjour Francisco,

La déclaration d'une constante signifie que la valeur associée à la
constante demeure "constante" durant tout le

programme ... c'est pourquoi que ça s'appelle une constante. Tu ne peux
pas modifier une partie de la constante ...

comme si c'était une fonction !


Je te fais une simple suggestion :
`
à mettre dans un module standard
'---------------------------
Public Function Rsql(CritereCodeProduct As String)

Rsql = "Select Ventes1999.CodeProduct FROM Ventes1999 WHERE " & _
"Ventes1999.LibelleCodeProduct= '" & CritereCodeProduct & "' "

End Function
'---------------------------

Et voici ce que pourrait avoir l'air ta procédure ....
'---------------------------
Sub CodePourExécuterRequête()

Dim CritereCodeProduct As String

'Cela suppose que tu as une connexion ouverte
'vers une base de donnée

'Que l'usager a renseigner ton combobox...avant
'l'exécution du code

If CritereCodeProduct <> "" Then
CritereCodeProduct = FrmSaisie.CboListeCodeProduct.Value
rst.Open Rsql(CritereCodeProduct), cnt, adOpenStatic
Else
MsgBox "Sélectionner une valeur dans le combobox"
End If

End Sub
'---------------------------



Salutations!








"francisco" a écrit dans le message de
news:c8n3o3$uoe$

Bonjour tout le monde


J'ai defini ma requete de maniere à ce que je puisse l'appeler de
n'importe

quel module. Le probleme est comment je dois definir CritereCodeProduct
pour

que je puisse l'appeler à partir du module connexion.Je souhaite définir
CritereCodeProduct t dans le module ModConnexion comme variable public
mais

je ne sais pas declarer CritereCodeProduct car quand j'essaie de faire
tourner ma requête qui est defini comme public je rencontre le probleme
suivant CritereCodeProduct Erreur de compilation constante requise
CritereCodeProduct est un combobox qui est defini dans un formulaire
appelé

Frmsaisie
CritereCodeProduct = FrmSaisie.CboListeCodeProduct.Value

Merci tout le monde pour vos reponses
Voici mon code :
------------------------------------------------------------
ModDeclarationVariable
------------------------------------------------------------
Public Const Rsql = "Select Ventes1999.CodeProduct FROM Ventes1999 WHERE
((Ventes1999.LibelleCodeProduct)= '" & CritereCodeProduct & "') ;"
Comment je dois definir CritereCodeProduct dans mon module
ModDeclarationVariable de manière à ce qu'elle puiisse être appelé à
partit

du ModConnexion
------------------------------------------------------------
ModConnexion
------------------------------------------------------------
Sub EtablirConnexion(OuvrirFichier)

Dim cnt As New ADODB.Connection
Dim rst As New ADODB.Recordset-
'----------------------------------------------------
'à ouvrir une seule fois
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source > c:psm_analyse_formulaire.mdb ;"
'------------------------------------------------------------
'Alimentation CODEPRODUCT
'------------------------------------------------------------
rst.Open Rsql, cnt

Columns("A").Clear
Range("A4") = "Type de produit"
Range("A4").Font.Bold = True
i = 4
While Not rst.EOF
i = i + 1
Sheets("Feuil1").Range("A" & i).Value = rst!CodeProduct
rst.MoveNext
Wend

rst.Close
Set rst = Nothing





Avatar
michdenis
Bonjour Francisco,

La déclaration d'une constante signifie que la valeur associée à la constante demeure "constante" durant tout le
programme ... c'est pourquoi que ça s'appelle une constante. Tu ne peux pas modifier une partie de la constante ...
comme si c'était une fonction !


Je te fais une simple suggestion :
`
à mettre dans un module standard
'---------------------------
Public Function Rsql(CritereCodeProduct As String)

Rsql = "Select Ventes1999.CodeProduct FROM Ventes1999 WHERE " & _
"Ventes1999.LibelleCodeProduct= '" & CritereCodeProduct & "' "

End Function
'---------------------------

Et voici ce que pourrait avoir l'air ta procédure ....
'---------------------------
Sub CodePourExécuterRequête()

Dim CritereCodeProduct As String

'Cela suppose que tu as une connexion ouverte
'vers une base de donnée

'Que l'usager a renseigner ton combobox...avant
'l'exécution du code

If CritereCodeProduct <> "" Then
CritereCodeProduct = FrmSaisie.CboListeCodeProduct.Value
rst.Open Rsql(CritereCodeProduct), cnt, adOpenStatic
Else
MsgBox "Sélectionner une valeur dans le combobox"
End If

End Sub
'---------------------------



Salutations!








"francisco" a écrit dans le message de news:c8n3o3$uoe$
Bonjour tout le monde


J'ai defini ma requete de maniere à ce que je puisse l'appeler de n'importe
quel module. Le probleme est comment je dois definir CritereCodeProduct pour
que je puisse l'appeler à partir du module connexion.Je souhaite définir
CritereCodeProduct t dans le module ModConnexion comme variable public mais
je ne sais pas declarer CritereCodeProduct car quand j'essaie de faire
tourner ma requête qui est defini comme public je rencontre le probleme
suivant CritereCodeProduct Erreur de compilation constante requise
CritereCodeProduct est un combobox qui est defini dans un formulaire appelé
Frmsaisie
CritereCodeProduct = FrmSaisie.CboListeCodeProduct.Value

Merci tout le monde pour vos reponses
Voici mon code :
------------------------------------------------------------
ModDeclarationVariable
------------------------------------------------------------
Public Const Rsql = "Select Ventes1999.CodeProduct FROM Ventes1999 WHERE
((Ventes1999.LibelleCodeProduct)= '" & CritereCodeProduct & "') ;"
Comment je dois definir CritereCodeProduct dans mon module
ModDeclarationVariable de manière à ce qu'elle puiisse être appelé à partit
du ModConnexion
------------------------------------------------------------
ModConnexion
------------------------------------------------------------
Sub EtablirConnexion(OuvrirFichier)

Dim cnt As New ADODB.Connection
Dim rst As New ADODB.Recordset-
'----------------------------------------------------
'à ouvrir une seule fois
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source c:psm_analyse_formulaire.mdb ;"
'------------------------------------------------------------
'Alimentation CODEPRODUCT
'------------------------------------------------------------
rst.Open Rsql, cnt

Columns("A").Clear
Range("A4") = "Type de produit"
Range("A4").Font.Bold = True
i = 4
While Not rst.EOF
i = i + 1
Sheets("Feuil1").Range("A" & i).Value = rst!CodeProduct
rst.MoveNext
Wend

rst.Close
Set rst = Nothing