1
votes

Comment trouver un champ avec une plage de dates?

J'essaye donc de sélectionner un enregistrement avec une plage de dates spécifique ex. 21/05/2019 - 30/05/2019 et mettez les enregistrements dans un datagridview.

J'utilise Ms. Access et je ne sais pas grand chose sur SQL.

DA = New OleDb.OleDbDataAdapter("SELECT * FROM table where date >= " & DateValue(FirstDate) & " AND date <= " & DateValue(SecondDate) & "", conn)  
DS = New DataSet
DS.Clear()
DA.Fill(DS, "table")
DataGridView1.DataSource = DS.Tables("table")


0 commentaires

3 Réponses :


-1
votes

SELECT ID FROMTestInfo WHERE CapturedDate ENTRE "2012-03-27" ET "2012-03-28"


2 commentaires

vous utilisez une mauvaise manière dans la requête SQL. veuillez essayer de cette façon.


passez par le lien pour plus d'informations codeproject.com/Tips/355235/…



1
votes

Dans MS Access, le délimiteur de date est un hachage (#).

Vous devez donc changer votre requête en:

"Select * FROM table WHERE [Date] Between #" & DateValue(FirstDate) & "# and #" & DateValue(SecondDate) & "#";

Ou vous utilisez l'opérateur between:

"SELECT * FROM table where date >= #" & DateValue(FirstDate) & "# AND date <= #" & DateValue(SecondDate) & "#"


0 commentaires

0
votes

Une meilleure façon de gérer cela est d'utiliser simplement des paramètres qui sont généralement recommandés par de nombreux programmeurs.

    da = New OleDb.OleDbDataAdapter("SELECT * FROM table where date >= @StartDate AND date <= @EndeDate ", conn)
    'If you show how you declare and set FirstDate and SecondDate we can drop the DateValue function'
    da.SelectCommand.Parameters.Add("@StartDate", OleDb.OleDbType.Date).Value = DateValue(FirstDate)
    da.SelectCommand.Parameters.Add("@EndeDate", OleDb.OleDbType.Date).Value = DateValue(SecondDate)
    ds = New DataSet
    DS.Clear()
    DA.Fill(DS, "table")
    DataGridView1.DataSource = DS.Tables("table")


0 commentaires