Avatar billede mvm Nybegynder
27. marts 2001 - 22:17 Der 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\'
Avatar billede prof2 Nybegynder
27. marts 2001 - 22:29 #1
Måske skal du bruge noget med en format dato funktion, men jeg ved det ikke.
Avatar billede mvm Nybegynder
27. marts 2001 - 22:32 #2
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 :-(
Avatar billede kedde65 Praktikant
27. marts 2001 - 22:32 #3
du skal formatere din dato således at formatet er det samme i textboxen som i databasen.
Hvilken database er det du sidder med ?

Er datoen i databasen formateret som et dato felt eller er det en text streng?

kedde
Avatar billede mvm Nybegynder
27. marts 2001 - 22:34 #4
kedde65>
jeg sidder med acces 97. datoen i basen er defineret som date/time med inputmaske kort datoformat.
Avatar billede mvm Nybegynder
27. marts 2001 - 22:35 #5
min kode ser ud som følger:

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)

End If
Avatar billede kedde65 Praktikant
27. marts 2001 - 22:37 #6
Duy skal prøve at bruge SQL kommandoen LIKE istedet for =

kedde
Avatar billede mvm Nybegynder
27. marts 2001 - 22:39 #7
hvis jeg sætter LIKE istedet for = får jeg samme svar.
Avatar billede kedde65 Praktikant
27. marts 2001 - 22:40 #8
hmmmmmm.......tænker lige.......
Avatar billede kedde65 Praktikant
27. marts 2001 - 22:42 #9
strsql = \" select aktuelfravaer_ID, dato, fravaertype_id from aktuelfravaer \" _
& \" where medarbejder_ID = \" + Str(ID) + \" \" _
& \" and dato = \'\" & startdato & \"\'\"

Prøve lige dette istedet for!!       

       
Avatar billede mvm Nybegynder
27. marts 2001 - 22:45 #10
datatype mismatch in criteria .........
Avatar billede kedde65 Praktikant
27. marts 2001 - 22:48 #11
strsql = \" select aktuelfravaer_ID, dato, fravaertype_id from aktuelfravaer \" _
& \" where medarbejder_ID = \" + Str(ID) + \" \" _
& \" and dato = \'#\" & startdato & \"#\'\"

Hvad så dette her????

kedde
Avatar billede mvm Nybegynder
27. marts 2001 - 22:51 #12
datatype mismatch in criteria ......... igen
Avatar billede kedde65 Praktikant
27. marts 2001 - 22:52 #13
Prøv lige at sende mig databasen på kedde65@odense.kollegienet.dk så skal jeg prøve at kigge på problemet.

Kedde
Avatar billede jennemaan Nybegynder
27. marts 2001 - 22:52 #14
lad være med at bruge et regionalt afhængigt datoformat.

Du skal bruge en isodato istedet. Sådan een er _altid_ (uanset hvilke sindsyge indstillinger brugeren har på sin maskine) \"yyyymmdd\".

Dvs.

Select dingdong from bells where belldate=\'20011231\' :o)

/Jennemaan
Avatar billede mvm Nybegynder
27. marts 2001 - 22:53 #15
jeg har prøvet at lave en forespørgsel i designvinduet og indsat datoen som kriterie. Derefter set forespørgslen i sqlview.

den sætter datoen op som følger:
#d/m/yy#
med skråstreger istedet for - men det kan jeg ikke få den til i min format.
Avatar billede mvm Nybegynder
27. marts 2001 - 22:56 #16
Jennemaan>

mener du jeg skal lave en format til YYYYMMDD ?

og skal jeg så også definere feltet om i databasen???
Avatar billede mvm Nybegynder
27. marts 2001 - 22:58 #17
Kedde65>

basen er sendt :-)
Avatar billede jennemaan Nybegynder
27. marts 2001 - 23:01 #18
du lader bare dit felt være en date...

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!

/Jennemaan :o)
Avatar billede mvm Nybegynder
27. marts 2001 - 23:06 #19
>jennemaan

Jeg beklager - jeg er lidt ny og jeg forstår ikke helt hvad det betyder.

kan jeg bare klippe det ud og lave en ny function med ovennævnte. hvordan kalder jeg den så - jeg skal vel sende datoen med ??
Avatar billede jennemaan Nybegynder
27. marts 2001 - 23:18 #20
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)

End If

/Jennemaan
Avatar billede mvm Nybegynder
27. marts 2001 - 23:27 #21
Jennemaan>

skal datoen i strsql så ikke være mydate ??

Avatar billede mvm Nybegynder
27. marts 2001 - 23:29 #22
Jeg har kopieret den direkte ud og lavet en ny funktion med indholdet af det du har skrevet!

udtrykket ved klik gav en fejl. navnet er tvetydigt fstrisodate ??????
Avatar billede jennemaan Nybegynder
27. marts 2001 - 23:54 #23
Jo, datoen i strsql skal være mydate (sorry, så den ikke lige)

Tvetydigt???

fstrIsoDate
f=function
str=string
IsoDate=mnemonic

Standard hungarian notation :o)

/Jennemaan
Avatar billede mvm Nybegynder
27. marts 2001 - 23:59 #24
Jennemaan>

Tja men fejlen får jeg altså.

Jeg kommer slet ikke ned i koden så jeg kan singlesteppe.

Avatar billede proaccess Nybegynder
28. marts 2001 - 07:41 #25
Prøv at ændre følgende 2 ting i din kode til:

Dim mydate As Date => Dim mydate As String

mydate = Format(startdato, \"dd-mm-yy\") => mydate = Month(startdato) & \"-\" & Day(startdato) & \"-\" & Year(startdato)


ProAccess
Avatar billede jennemaan Nybegynder
28. marts 2001 - 09:30 #26
Hvilket miljø arbejder du i? (VB, Access Basic....?)

/Jennemaan
Avatar billede mvm Nybegynder
28. marts 2001 - 23:31 #27
proaccess>

SÅDAN!!!!!!!!!!!!!!!!!!!!!!!!

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.

Avatar billede proaccess Nybegynder
29. marts 2001 - 08:28 #28
bukker og takker ;-)
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