webForumDet fria alternativet

ddl-val till sql-fråga, kolla datum

.NETur .NET

2 svar · 278 visningar · startad av laidback

Medlem sedan maj 2001797 inlägg
Frågan#1

På sidan default.aspx ska de poster i en tabell som är skickade idag hämtas per automatik (dvs däre messageDate är samma som dagens datum), men det ska även gå att välja att visa tidigare dagars poster.

Just nu har jag en Sub som ser ut så här:

Public Sub getMessages()

	objCmd = New SqlCommand("SELECT * FROM m_messages WHERE messageDate>'" & Today & "' ORDER BY messageDate DESC", objConn)
	objConn.Open()
	objRdr = objCmd.ExecuteReader()
	dgMessages.Datasource = objRdr
	dgMessages.DataBind()
	objRdr.Close()
	objConn.Close()
	
End Sub

Jag tänkte använda en dropdownlist (eller något annat, om det är bättre) för att välja dag.

Välj dag
Idag
Igår (1 dag sedan)
Två dagar sedan
Tre dagar sedan
... osv

Hur ska jag överföra det valet till min sql-fråga på ett bra sätt? Antar att man kan använda antalet dagar och subtrahera på något fint sätt, eller så. Idéer?

Antar att man kan göra det valda antal dagarna till en variabel och sedan stoppa in den variabeln i sqlfrågan och därefter kolla den mot datumet?

Medlem sedan juni 2004533 inlägg
#2

Om du lägger in hur många dagar bakåt du vill visa som värde i dropdownlistan, alltså Idag=0, Igår=1 och så vidare, så kan du enkelt dra ifrån det antalet dagar ifrån dagens datum:

objCmd = New SqlCommand("SELECT * FROM m_messages WHERE messageDate>'" & DateTime.Today.AddDays(-Int32.Parse(fldSelectDays.SelectedValue)).ToString() & "' ORDER BY messageDate DESC", objConn)

Medlem sedan maj 2001797 inlägg
#3

Okej, det ser ju lovande ut!

Tanken är att när sidan laddas ska dagens poster hämtas automatiskt, så jag tänkte så här:
använda en ifsats för att kolla om det finns något val från ddlistan, om inte så ska dagens hämtas, men om det finns något så ska din sql fråga köras i stället. Verkar det vettigt?

Dock så funkar inte min ifsats (föga förvånande kanske :r ). Någon som orkar ta sig en titt?
Default så hämtas inga inlägg alls, vid val med ddl'en så hämtas dock dagens oavsett vad man väljer.

Public Sub getMessages(Source As Object, E As EventArgs)
    if Request.Form("ddlSelectDays.SelectedValue") = ""	
	objCmd = New SqlCommand("SELECT * FROM m_messages WHERE messageDate>'" & Today & "' ORDER BY messageDate DESC", objConn)
	objConn.Open()
	objRdr = objCmd.ExecuteReader()
	dgMessages.Datasource = objRdr
	dgMessages.DataBind()
	objRdr.Close()
	objConn.Close()
    else 
	objCmd = New SqlCommand("SELECT * FROM m_messages WHERE messageDate>'" & DateTime.Today.AddDays(-Int32.Parse(ddlSelectDays.SelectedValue)).ToString() & "' ORDER BY messageDate DESC", objConn)
	objConn.Open()
	objRdr = objCmd.ExecuteReader()
	dgMessages.Datasource = objRdr
	dgMessages.DataBind()
	objRdr.Close()
	objConn.Close()
    End if
	
End Sub

r. /snurrig formulering

129 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)