Requete et base de données

ddove53 Messages postés 623 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 15 juin 2010 - 28 mai 2008 à 18:06
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 29 mai 2008 à 14:14
Salut j'ai deux tables: Financeur et Financeurs_OP.
Je vérifie que [CPF]est>0, aprés je vérifie si check50 est vrai ou faux.
Si check50=1 je vais chercher des données dans ma table Financeurs_OP sinon je vais chercher des données dans Financeur.
Pouvez-vous me débloquer?Voici ce que j'ai essayé de faire:

Me.Dat_financeurs.DatabaseName = Bdd
   If Rs![CPF] > 0 Then
              sql_glob_rs = "SELECT Financeurs_OP.[Code Sres], [Code OT] & ' - ' & [libellé] AS Macrotaches, Financeurs_OP.CFP"
       Else
            sql_glob_rs = "SELECT Financeurs_OP.[Code Sres], [Code OT] & ' - ' & [libellé] AS Macrotaches, Financeurs_OP.Budget"

       End If   sql1 "SELECT Financeur.[Ref reseau],,[Nom Financeur] as [Financeur(s)], [Part Financeur] as [Part en %],[montant Financeur]as Montant from financeur where [ref reseau]" & glob_sres

If dgsr1.Check50.Value = 1 Then

        Dim sNom() As String
        ReDim sNom(20)
        Set Db = DBEngine.OpenDatabase(Bdd)
        Set Rs = Db.OpenRecordset("SELECT [Nom Financeur],[codeFinanceur] " & _
                   "FROM [Financeur] " & _
                   "WHERE ([Ref reseau]=" & glob_sres & ") " & _
                   "ORDER BY [codeFinanceur] ", dbOpenForwardOnly)
        i = 1
    
   If dgsr1.Check50.Value = 1 Then

        Do Until Rs.EOF
            sNom(i) = Rs![Nom Financeur]
            sql_glob_rs = sql_glob_rs & ", Financeurs_OP.Fin" & i & " as [" & sNom(i) & "]"
            Rs.MoveNext
            i = i + 1
        Loop
        sql_glob_rs = sql_glob_rs & " From Financeurs_OP WHERE (((Financeurs_OP.[Code Sres])=" & glob_sres & "))"
        Me.Dat_financeurs.RecordSource = sql_glob_rs
        Me.Dat_financeurs.Refresh
        Me.Financeurs.MaxRows = Me.Dat_financeurs.Recordset.RecordCount
Else

 Do Until Rs.EOF
            sNom(i) = Rs![Nom Financeur]
            sql1 = sql1 & ", Financeur.Fin" & i & " as [" & sNom(i) & "]"
            Rs.MoveNext
            i = i + 1
        Loop
        sql1 = sql1 & " From Financeur WHERE (((Financeur.[Ref reseau])=" & glob_sres & "))"
        Me.Dat_financeurs.RecordSource = sql1
        Me.Dat_financeurs.Refresh
        Me.Financeurs.MaxRows = Me.Dat_financeurs.Recordset.RecordCount

Me.Financeurs.Col = 1
Me.Financeurs.ColHidden = True
Me.Financeurs.Col = 2
Me.Financeurs.Lock = True
Me.Financeurs.Protect = True

Me.Financeurs.UnitType = UnitTypeTwips '
Me.Financeurs.ColWidth(2) = 2100
Me.Financeurs.ColWidth(3) = 1000
End If

5 réponses

rdrapeau Messages postés 14 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 25 juin 2008
28 mai 2008 à 18:13
Bonjour,

Vuos dîtes : Si check50= 1 je vais chercher des données dans ma table Financeurs_OP

or la requete porte sur la table Financeur

regardez votre code :

If dgsr1.Check50.Value = 1 Then

        Dim sNom() As String
        ReDim sNom(20)
        Set Db = DBEngine.OpenDatabase(Bdd)
        Set Rs = Db.OpenRecordset("SELECT [Nom Financeur],[codeFinanceur] " & _
                   "FROM [ Financeur ] " & _
                   "WHERE ([Ref reseau] =" & glob_sres & ") " & _
                   "ORDER BY [codeFinanceur] ", dbOpenForwardOnly)
        i = 1
    

flaggy
0
ddove53 Messages postés 623 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 15 juin 2010
28 mai 2008 à 18:56
Vous avez raison.
Mais j'ai aussi une ereeur de syntaxe sur la requete qui suit.Tu vois mon erreur ou pas?

Do Until Rs.EOF
            sNom(i) = Rs![Nom Financeur]
            sql1 = sql1 & ", Financeur.Fin" & i & " as [" & sNom(i) & "]"
            Rs.MoveNext
            i = i + 1
        Loop
        sql1 = sql1 & " From Financeur WHERE (((Financeur.[Ref reseau])=" & glob_sres & "))"
        Me.Dat_financeurs.RecordSource = sql1
        Me.Dat_financeurs.Refresh
0
FMatrix07 Messages postés 233 Date d'inscription mercredi 26 février 2003 Statut Membre Dernière intervention 21 février 2009 2
29 mai 2008 à 05:31
Bonjour,

Ca ne serait pas "(" qui serait en trop
sql1 = sql1 & " From Financeur WHERE (((Financeur.[Ref reseau])=" & glob_sres & "))"

@+: SCCréat
Pensez:  Réponse acceptée

Mail:
Stéphan.COCHET
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
29 mai 2008 à 14:11
Salut
Abondance de parentèses nuit à la clarté et à la compréhension. (c'est le dicton du jour)
Erreur de syntaxe : Quelle erreur ? que dit-elle ?
sur quelle ligne exactement ?
que vaut la variable de cette ligne au moment de l'erreur ? (voir fenêtre de debug (Ctrl-G) + "? maVariable" )

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
29 mai 2008 à 14:14
Je vois aussi deux virgules qui se suivent ici :
   sql1 = "SELECT Financeur.[Ref reseau],,[Nom Financeur]
Pas normal

Je te conseille de visualiser le contenu de sql1 avant de le soumettre au moteur SQL :
   Debug.Print sql1
   Me.Dat_financeurs.RecordSource = sql1
et regarde dans la fenêtre de debug (Ctl-G)

Relis la syntaxe générée et trouve les anomalies, tu pourras alors savoir d'où vient le problème

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
Rejoignez-nous