Avatar billede cygnet Praktikant
23. oktober 2002 - 22:22 Der er 17 kommentarer og
1 løsning

Sammensæt og gem dato

Hejsa Experts

Jeg skal have gemt en dato som man vælge udfra 3 dropdowns i en Access database.

Altså DD-MM-ÅÅÅÅ ud fra 

<select name="dato">
<select name="maned">
<select name="ar">

Håber der er en der kan hjælpe.
Avatar billede thomas_regin Nybegynder
23. oktober 2002 - 22:33 #1
Hejsa,

Hvis du vil være helt sikker på, at Databasen forstår din hensigt, så skal du bruge 3-karakter måneder. F.eks jan, feb, mar, apr og så videre.

Men problemet er, at det kan ASP ikke bare gøre! Derfor bliver du nødt til at konvertere din måneds-dropdown på følgende måde:

myMonthName = left(monthname(Request.Form("maned")),3)

Ergo skal du skrive følgende for at samle dine datoer:

myDate = Request.Form("dato") & "-" & left(monthname(Request.Form("maned")),3) & "-" & Request.Form("ar")

Herefter burde du være istand til at sætte myDate ind i databasen uden problemer!

Mvh,

Thomas Regin.
Avatar billede cygnet Praktikant
23. oktober 2002 - 22:38 #2
Arh - det passer ikke helt ind i det jeg har lavet indtil nu som fungerer fint.

Jeg vil gerne have lavet en streng der laver noget ala

strdato = Trim(Request.Form("dag-maned-ar"))

Kan du ikke hjælpe mig med det ?
Avatar billede thomas_regin Nybegynder
23. oktober 2002 - 22:46 #3
Hejsa igen.

Problemet er, at Databasen kræver en MEGET specifik sætning for at virke optimalt. Uanset hvordan du vender og drejer det, så vil databasen ha' en engelsk formateret dato. Uagtet om du har sat den til Dansk eller serbokroatisk sprog. Sådan er databasen lavet for at undgå misforståelser.

Hvilken dato er dette f.eks: 04/05/2002 ? Er det 4. maj 2002 eller 5. april 2002 ?

Databasen vil tro, at det er 5. april.

Hvis du vil være helt sikker på, at alting virker optimalt, så skal du lave de ændringer i din kode, som gør, at du kan bruge mit eksempel ovenover.

Hvis du skriver din kode, så skal jeg gerne prøve at lave nogle tilrettelser, så det kommer til at virke.

Mvh,

Thomas Regin.
Avatar billede koldy Nybegynder
23. oktober 2002 - 22:50 #4
du kan bruge CDate til at gøre en text variable til en dato.

myMonth = "29-03-2010"

If isDate(myMonth) = true Then
  myMonth = CDate(myMonth)
End If
Avatar billede cygnet Praktikant
23. oktober 2002 - 22:51 #5
Syntes det virker helt perfekt nu :

http://www.styrebrev.dk/admin.asp

Gjodre det således :

strdato = Trim(Request.Form("dag") & "-" & Request.Form("maned") & "-" & Request.Form("ar"))

Virker det ikke som det skal ?

/cygnet
Avatar billede koldy Nybegynder
23. oktober 2002 - 22:52 #6
If sættningen er der kun så der ikke kommer en fejl hvis en bruger intaster noget der ikke er en dato

der kan du jo eks. sende brugeren tilbage og fortælle at der skal intastes en dato i det felt.. :)
Avatar billede thomas_regin Nybegynder
23. oktober 2002 - 22:53 #7
Det ser ud som om det virker! :)

Herligt!

/thomas
Avatar billede koldy Nybegynder
23. oktober 2002 - 22:54 #8
jo det ser sådan ud, men hvorfor ikke lade asp finde ud af ugedagen?.. istedet for at du selv skal taste den ind ?
Avatar billede thomas_regin Nybegynder
23. oktober 2002 - 22:55 #9
Koldy >>

CDate er en dårlig idé, da denne formaterer datoen efter system-indstillingerne og ikke databasens indstillinger.

Det er bestemt anbefalelsesværdigt, at skrive funktioner, som virker på alle styresystemer, alle local settings og så videre.

Mvh

Thomas Regin.
Avatar billede cygnet Praktikant
23. oktober 2002 - 22:57 #10
koldy >

Fordi jeg ikke er en haj til ASP og derfor må løsningen være dette.
Avatar billede cygnet Praktikant
23. oktober 2002 - 22:59 #11
Men tak for hjælpen - du er vist lidt i haj til det her shit....
Avatar billede koldy Nybegynder
23. oktober 2002 - 23:02 #12
Thomas >

Når jeg skriver til database bruger jeg eks. Session.LCID = 3084 (den som passer til mySQL og sætter den bagefter tilbage til dansk dato format, Session.LCID = 1030.

På den måde behøver jeg ikke nogen vanskelig kode for at omsætte dato fra computer indstillinger, til database format.
Avatar billede thomas_regin Nybegynder
23. oktober 2002 - 23:02 #13
Gu' er jeg så! ;=)

Du må skrive hvis du oplever problemer med det dato-gylle. Jeg ved hvor ulideligt det kan blive. I særdeleshed, når man skriver enterprise systemer, som skal køre på mange forskellige platforme. Det kan meget hurtigt gå hen og blive forvirrende, hvis man ikke holder tungen lige i munden, og skriver nogle funktioner, som virker på alle maskiner!

Ha' en god aften,

/thomas
Avatar billede koldy Nybegynder
23. oktober 2002 - 23:03 #14
cygnet, det er helt oki.. spørg bare hvorfor gøre det besværligt for brugeren når asp'en kan klare det :)
Avatar billede thomas_regin Nybegynder
23. oktober 2002 - 23:04 #15
Koldy >>

Lad os så antage, at dit firma's paraguyanske afdeling skal ha' en kopi af dit software. Hva' så?.. Når du pludselig skal arbejde med distribuerede systemer, som skal kunne afvikles på en masse forskellige servere, som alle kører forskellige sprog og så videre.

Jeg ved godt, at disse ting nok er overkill i denne sammenhæng, men man kan lige så godt tage tyren ved hornene første gang, da man senere vil få det meget nemmere, hvis man har tænkt over tingene. :)

/thomas
Avatar billede koldy Nybegynder
23. oktober 2002 - 23:19 #16
Thoams > tja.. der er nok noget om det du siger, men så vil jeg mene at det bare er at ændre session.LCID fra dansk og til det andet land som jeg skal sælge det til, LCID nummrene har jeg i forvejen lagt i en configurations fil fordi, jeg har både kørt mySQL og msSQL nu køre jeg dog kun mySQL, men nogle af de sider jeg laver er sproget engelsk så derfor kan jeg ændre LCID til 1033 som er det engelske LCID. det er meget simpelt..
Avatar billede koldy Nybegynder
23. oktober 2002 - 23:22 #17
detsuden, vil dato'en aligvel blive udskrevet i den format som serveren er sat op til, med mindre du ændre LCID til at passe sammen med brugerens systems dato format.
Avatar billede thomas_regin Nybegynder
24. oktober 2002 - 00:07 #18
Koldy >>

For at undgå at dette udvikler sig til en strid på ord, vil jeg sige, at det er en personlig ting. Jeg ved hvad jeg synes bedst om, og det er at kunne slippe for at ændre så meget som et komma i min kode, efter den er skrevet færdig. Om det så kun er LCID koden..

Jeg er enig i, at ASP er et scripting sprog, hvor det er forholdsvis nemt at efterjustere, men jeg laver enormt mange kompilerede applikationer, hvor man ikke "bare" kan efterjustere uden at skulle recomile og distribuere igen. Derfor er det en fantastisk god idé, synes jeg, at gøre tingene nemmest for sig selv i længden, istedet for at springe over hvor gærdet er lavest, selvom det virker nemt i starten!

Men som sagt, så er det en personlig ting, og jeg respekterer fuldt ud din måde at gøre tingene på, og det skal du blive ved med, hvis det virker for dig.

Med venlig hilsen,

Thomas Regin.
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