Avatar billede jesperthomsen1980 Nybegynder
14. marts 2005 - 16:46 Der er 5 kommentarer og
1 løsning

Where statement med dato

Hej eksperter.

Jeg skal i en sql sætning have alle de poster hvor dato feltet er større eller lig med en valgt dato.

Dato kommer fra en kalende hvor brugeren vælger en dato.

WHERE Tilbud.Dato >= Dato"

Dette virker dog ikke og jeg er i tvivl om hvordan man anvender sammenligninger på dato...

VH Jesper
Avatar billede arne_v Ekspert
14. marts 2005 - 16:50 #1
Dato/tid konstanter er altid en pest.

Den bedste løsning er at bruge parameters og et DateTime objekt.
Avatar billede jesperthomsen1980 Nybegynder
14. marts 2005 - 16:55 #2
ok det vil jeg gøre i stedet. Det er ikke så vigtigt, så hvis det er noget bøvl at lave, behøver jeg ikke denne funktionalitet.
Tak for hjælpen - smid lige et svar...
Avatar billede arne_v Ekspert
14. marts 2005 - 17:42 #3
parameters er en glimrende løsning

jeg kan godt lave et lille eksempel

og svar
Avatar billede arne_v Ekspert
14. marts 2005 - 17:42 #4
om igen
Avatar billede jesperthomsen1980 Nybegynder
14. marts 2005 - 18:07 #5
Hvis du har et eksempel på parameters vil jeg gerne have det...! Ikke lige noget jeg umiddelbart kender til, men det kunne jo være det var noget jeg kunne bruge...
Avatar billede arne_v Ekspert
14. marts 2005 - 18:41 #6
Imports System
Imports System.Threading
Imports System.Data.OleDb

Class MainClass
    Public Shared Sub Main(ByVal args As String())
        Dim con As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Database\MSAccess\Test.mdb")
        con.Open
        Dim cre As OleDbCommand = New OleDbCommand("CREATE TABLE dtest (i INTEGER PRIMARY KEY, d DATETIME)", con)
        cre.ExecuteNonQuery
        Dim ins As OleDbCommand = New OleDbCommand("INSERT INTO dtest VALUES (?, ?)", con)
        ins.Parameters.Add("@i", OleDbType.Integer)
        ins.Parameters.Add("@d", OleDbType.Date)
        Dim i As Integer
        For i = 0 To 9
            ins.Parameters("@i").Value = i
            ins.Parameters("@d").Value = DateTime.Now
            ins.ExecuteNonQuery
            Thread.Sleep(1000)
        Next
        Console.WriteLine("All rows :")
        Dim sel As OleDbCommand = New OleDbCommand("SELECT * FROM dtest", con)
        Dim rdr As OleDbDataReader = sel.ExecuteReader
        While rdr.Read
            Dim iv As Integer = CType(rdr(0), Integer)
            Dim dv As DateTime = CType(rdr(1), DateTime)
            Console.WriteLine(iv & " " & dv)
        End While
        rdr.Close
        Console.WriteLine("Rows last 5 seconds since " + DateTime.Now + " :")
        Dim sel2 As OleDbCommand = New OleDbCommand("SELECT * FROM dtest WHERE d > ?", con)
        sel2.Parameters.Add("@d", OleDbType.Date)
        sel2.Parameters("@d").Value = DateTime.Now.AddSeconds(-5)
        Dim rdr2 As OleDbDataReader = sel2.ExecuteReader
        While rdr2.Read
            Dim iv As Integer = CType(rdr2(0), Integer)
            Dim dv As DateTime = CType(rdr2(1), DateTime)
            Console.WriteLine(iv & " " & dv)
        End While
        rdr2.Close
        Dim drp As OleDbCommand = New OleDbCommand("DROP TABLE dtest", con)
        drp.ExecuteNonQuery
        con.Close
    End Sub
End Class
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester