Syntaxe de requete en vb6

Fermé
yousou Messages postés 4 Date d'inscription lundi 20 août 2007 Statut Membre Dernière intervention 21 août 2007 - 21 août 2007 à 11:46
yousou Messages postés 4 Date d'inscription lundi 20 août 2007 Statut Membre Dernière intervention 21 août 2007 - 21 août 2007 à 13:22
Salut tout le monde,

J'ai un probleme avec la manipulation d'une requete sql en vb6. La requete est la suivante :

requete = "SELECT [date] ,COUNT(msg)  AS Expr1 FROM (SELECT * From cliensms WHERE date BETWEEN((01/( & nbr & )/( & annee & )) AND ((& jour &)/( & nbr & )/( & annee & ))) AND ligne = '12546' ) DERIVEDTBL GROUP BY [date] ORDER BY [date]"
 


jour, nbr et annee sont des variables

Apparament, il y a une faute de syntaxe que j'ai pas pu résoudre

Je compte sur votre aide.

Merci d'avance

1 réponse

Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
21 août 2007 à 11:57
Bonjour,

Je ne connais pas trop VB6, plutôt vb.net.
Mais j'imagine que dans les deux cas, ta requête pose problème car tu ne "sors" pas de la chaine de caractère pour y coller les variables, qui ne sont donc pas vue comme des variables mais juste comme des bouts de chaines de caractères.

Par ailleurs, je ne comprends pas pourquoi tu effectues une sous requête. Une seule requête ne suffit pas ?

Voilà ce que je mettrais à ta place :

requete = "SELECT [date], COUNT(msg) AS Expr1 FROM cliensms WHERE ([date] BETWEEN (01/" & nbr & "/" & annee & ") AND (" & jour & "/" & nbr & "/" & annee & ")) AND ligne = '12546' GROUP BY [date] ORDER BY [date]"
0
yousou Messages postés 4 Date d'inscription lundi 20 août 2007 Statut Membre Dernière intervention 21 août 2007
21 août 2007 à 13:22
Salut,

Merci pour la réponse, le probleme est résolu mais j'ai un autre probleme maintenant. Le résultat de cette requete normalement devrait être une table à deux colonnes où devant chaque jour du mois spécifié , est affiché le nombre de msg. Le probleme se pose lorsque pour une date donnée il y a zéro msg, dans ce cas la ligne correspondante à cette date ne s'affiche pas. Puis dans la suite de mon application lorsque je veut exporter le résultat de cette requête dans un tableau excel, j'aurais la valeur du jour suivant devant le jour où la valeur vaut zéro càd un décalage, ce qui fausse le résultat.

Voilà le code:

requete = "SELECT [date], COUNT(msg) AS Expr1 FROM cliensms WHERE ([date] BETWEEN '01/" & nbr & "/" & annee & " ' AND ' " & jour & "/" & nbr & "/" & annee & " ') AND ligne = '125483' GROUP BY [date] ORDER BY [date]"
    If TrouverProcessus("EXCEL.EXE") = False Then
            Set frm_Type.appExcel = CreateObject("Excel.Application")
        End If
        Set frm_Type.wbExcel = frm_Type.appExcel.Workbooks.Open(App.Path & "\MODELS\fich.xls")
        Set frm_Type.wsExcel = frm_Type.wbExcel.Worksheets("Feuil1")
            
        frm_Type.wsExcel.Activate
            
        frm_Type.appExcel.Visible = False
            
        With frm_Type.wsExcel
            .Range("A1:E1").Select
            ActiveCell.FormulaR1C1 = Titre
        End With
                
        cellule = 3
                
        Adodc1.RecordSource = requete
        Adodc1.Refresh
        Adodc1.Recordset.MoveFirst
        With Adodc1.Recordset
            Do While (.EOF = False)
                cel1 = "A" & cellule
                cel2 = "B" & cellule
                        
                frm_Type.wsExcel.Range(cel1).Select
                ActiveCell.FormulaR1C1 = .Fields(0)
                 frm_Type.wsExcel.Range(cel2).Select
                               
                ActiveCell.FormulaR1C1 = .Fields(1)
                                  
                cellule = cellule + 1
                  .MoveNext
                Sleep 200
            Loop
        End With
        Adodc1.Recordset.Close



Merci d'avance
0