2016-07-03 12 views
-1

I journals_data Tabelle haben, die enthält:Wie kann ich ein Datum Zeile auswählen, der größer ist als Benutzereingabe und niedriger als Benutzereingabe

ID | Name | Input_date 
001 | Example | 02/06/2016 
002 | Example2 | 15/06/2016 
003 | Example3 | 02/06/2016 

Und ich habe eine vb.net Form zeigt eine Benutzereingabe.

Select Period 

     Month :  Year : 
From : <cboMonth> <cboYear> 
To : <cboMonth> <cboYear> 

<OKButton> <CancelButton> 

<cboMonth> Elemente enthält Monatsname January-Desember als string.

<cboYear> Artikel enthält Jahr von der Input_date Spalte in journals_data.

Ich möchte alle Zeilen von journals_data auswählen, deren Monat größer ist als der Wert "Von Monat" im Formular und niedriger als der Wert "Zu Monat", auch für Jahr.

Ich habe Problem in dem sql Code, in dem der Benutzer Eingabewert für Monat ist string (wie January) nicht 01. die January zu 01 und kombinierte es mit dem <cboYear> Wert zu konvertieren und das Hinzufügen der 01 und 31 als Tageswert

Ich habe DateTime.ParseExact() und ToString("00") Technik verwendet. Aber es wird nicht funktionieren, es zeigt alle Zeilen in der journals_data ohne Filterung der Input_date.

Gibt es eine andere Möglichkeit, um mein Problem zu beheben?

+1

Speichern Sie zunächst Daten mit einem Datumsdatentyp – Strawberry

+0

. Verwenden Sie dazu die DateTimePicker-Steuerelemente. – dbasnett

+0

Berechne Monatszahlen - Jahr * 12 + Monat und vergleiche –

Antwort

0

Ich versuche herauszufinden, was zu tun ist, und ich habe das und es funktioniert!

' To indicates the first day of the month 
Dim dayFrom As String = "01" 
' To indicates the last day of its month I count the days of its month 
Dim dayTo As String 
dayTo = DateTime.DaysInMonth(CInt(cboYear.Text), Month(CDate(cbomonthFrom.Text + cboYear.Text)).ToString("00")) 
Connect() 
DA = New OleDbDataAdapter("select * from journals_data where Input_date >= #" & _ 
           Format(DateTime.ParseExact(dayFrom + " " + cbomonthFrom.Text + " " + cboYear.Text, "dd MMMM yyyy", CultureInfo.InvariantCulture), "dd/MM/yyyy") & "# and Input_date <= #" & _ 
           Format(DateTime.ParseExact(dayTo + " " + cbomonthTo.Text + " " + cboYear.Text, "dd MMMM yyyy", CultureInfo.InvariantCulture), "dd/MM/yyyy") & "#", Conn) 
DS = New DataSet 
DS.Clear() 
DA.Fill(DS, "journals") 
dgv.DataSource = DS.Tables("journals") 
Conn.Close() 

Ich verwende MS-Access Datenbank.

Dank all Ihren Tipps Jungs.

Verwandte Themen