Syntaxe de requete en vb6

yousou Messages postés 4 Statut Membre -  
yousou Messages postés 4 Statut Membre -
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
Configuration: Windows 2000
Internet Explorer 6.0

1 réponse

  1. Reivax962 Messages postés 3742 Statut Membre 1 011
     
    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
    1. yousou Messages postés 4 Statut Membre
       
      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