05. april 2016 - 13:20Der er
2 kommentarer og 1 løsning
compare table date with form date
Datoer giver mig altid udfordringer, og nu er jeg desværre på den igen. Det er ikke lykkedes mig at finde lignende sammenligninger noget andet sted, og det er også muligt, det er aldeles banalt, men...
Jeg har et problem i Access 2007 med at sammenligne to datoer, hvor den ene hentes i en tabel, og den anden hentes fra en formular (textfield). Tilsyneladende er tabel datoen altid større (senere) end datoen som er indtastet i tekstfeltet.
Dim db As Database Dim rs As Recordset Dim FromDate As Date: FromDate = Me.txtFromDate.Value
Dim strSQL As String: strSQL = "SELECT * from Table WHERE " & FromDate & " > FraDato"
Set db = CurrentDb Set rs = db.OpenRecordset(strSQL)
If rs.RecordCount <> 0 Then getTestResult = False Else getTestResult = True End If
rs.Close o.s.v....
"FromDate" (fra formen) og FraDato (fra tabellen) er i kort datoformat, FraDato har desuden inputmasken "00-00-0000;0;" (Jeg ved ikke om det har noget at sige?)
Når jeg sammenligner med >, tæller RecordCount samtlige poster i tabellen. Bruger jeg < (eller =), bliver RecordCount 0, uanset hvilken dato jeg skriver i tekstfeltet.
Hvad er det, jeg overser?
Meningen med alt dette er, at jeg vil kunne sikre min systembruger imod at kunne reservere en genstand til flere brugere på samme dato. Men det kræver at jeg kan sammenligne de indtastede datoer med eksisterende poster.
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
"Datoer giver mig altid udfordringer ..." And to many others too :-)
"FromDate" (fra formen) og FraDato (fra tabellen) er i kort datoformat,"
The database Date/Time data type, as the name suggest, contains a date and a time. You may have formatted the field to show only the date part (or short format) but there will very likely be a date part too. And the way you view (what you see) is NOT what is in the dB. No matter how you format dates they are always stored in the same way.
So you need to take this into account when you make your queries.
Try something like this, I've changed the SQl so that the Criteria is AFTER the field name.
IE FraDato < Criteria instead of Criteria > FraDato (its easier to read I think)
Dim strSQL As String: strSQL = "SELECT * from Table WHERE FraDato < #" & Format(FromDate, "YYYY-MM-DD") & "#"
Ah - det anede mig at det var i den retning, svaret var gemt. Og ja, jeg synes jo godt jeg har hørt andre sukke over dato-problemer ;o) Og tak især for det uddybende svar! Håber andre kan få nytte af det
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.