Avatar billede Hejren Nybegynder
05. april 2016 - 13:20 Der 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.
Avatar billede terry Ekspert
05. april 2016 - 15:38 #1
"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") & "#"
Avatar billede Hejren Nybegynder
05. april 2016 - 21:29 #2
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
Avatar billede terry Ekspert
06. april 2016 - 09:39 #3
Thanks for the points
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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