27. marts 2001 - 22:17Der er
27 kommentarer og 1 løsning
format - dato til sqlstring - haster
Jeg har en tekstboks der indeholde en dato med inputmaske kort datoformat.
Jeg skal bruge den i en sqlstring i min where clause, men kan ikke få det til at virke. Den accepterer data når jeg foranstiller den med #\" & mydate & \"#, men jeg får \'no record found\'
Det er den jeg sidder og bokser med. har nu konstateret noget meget pudsigt. hvis jeg i min sqlstring spørger med = får jeg ikke noget hit. hvis jeg sætter datoen i tekstboksen en ned og ændrer sqlstringen til > (større end) får jeg et hit. det fatter jeg ikke en brik af :-(
Private Sub opretendag() Dim dbs As Database Dim rs As Recordset Dim strsql As String Dim counter As Integer counter = 0 Dim today As Date today = Date Dim mydate As Date
mydate = Format(startdato, \"dd-mm-yy\")
Set dbs = CurrentDb
strsql = \" select aktuelfravaer_ID, dato, fravaertype_id from aktuelfravaer \" _ & \" where medarbejder_ID = \" + Str(ID) + \" \" _ & \" and dato = #\" & startdato & \"#\"
If startdato < today Then MsgBox \"Der kan ikke oprettes fravær tilbage i tiden!\" DoCmd.CancelEvent Else Set rs = dbs.OpenRecordset(strsql) rs.MoveFirst MsgBox rs(counter)
Format skal dy passe på med... F.eks. vil en tysk maskine ikke forstå yyyymmdd, men istedet jjjjmmtt (jahr monat tag).
Du kan evt. skrive en hjælpefunktion
Function fstrIsoDate(tDate As Date) As String Dim strMonth As String, strDay As String strMonth=Month(tDate) strDay=Day(tDate) If Len(strMonth)=1 Then strMonth=\"0\" & strMonth If Len(strDay)=1 Then strDay=\"0\" & strDay fstrIsoDate=Year(tDate) & strMonth & strDay End Function
Regionale indstillinger er noget skod. Der burde være dødstraf for at bruge andet end iso-standarden!
Function fstrIsoDate(tDate As Date) As String Dim strMonth As String, strDay As String strMonth=Month(tDate) strDay=Day(tDate) If Len(strMonth)=1 Then strMonth=\"0\" & strMonth If Len(strDay)=1 Then strDay=\"0\" & strDay fstrIsoDate=Year(tDate) & strMonth & strDay End Function
Private Sub opretendag() Dim dbs As Database Dim rs As Recordset Dim strsql As String Dim counter As Integer counter = 0 Dim mydate As String \'<- nyt
mydate = fstrIsoDate(Now()) \'<- også nyt :o)
Set dbs = CurrentDb
strsql = \" select aktuelfravaer_ID, dato, fravaertype_id from aktuelfravaer \" _ & \" where medarbejder_ID = \" + Str(ID) + \" \" _ & \" and dato = \'\" & startdato & \"\'\" \'<- ligeledes nyt :o)
If startdato < today Then MsgBox \"Der kan ikke oprettes fravær tilbage i tiden!\" DoCmd.CancelEvent Else Set rs = dbs.OpenRecordset(strsql) rs.MoveFirst MsgBox rs(counter)
Det er bare for sejt - det spiller første gang. jeg vælger at give proaccess alle pointene for en nem og forståelig løsning (jeg ved ikke om det er den eneste.) Alle andre - tak for indsatsen.
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.