/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Udskrivning af datofelt i drop-down menuer
Fra : Morten Riis


Dato : 10-02-03 17:23

Hej

Jeg forsøger at lave en udskrift af et datofelt fra en Accessdb i 3
drop-down menuer.

Det er meningen at det skal være muligt for brugeren at redigere i en nyheds
dato, ved at vælge datoen i en drop-down fætter. I databasen er datofeltet
formateret til at være en dato. Jeg ønsker derefter at udskrive dato, måned
og år i hver deres drop-down menu, hvorefter brugeren kan vælge en anden
dato, måned og/eller år og gemme disse i databasen.

Spørgsmålene er:

1. Er det sådan man normalt ville gøre det?
2. Hvis ja, hvad er der så galt i nedenstående kode? (fejlen opstår i
linien: IF i = left(rs2("dato"), 2) THEN )


Det ser således ud for den første drop-down, som skal indeholde datoen:

----------------------------------------------------------------------------
-----
<select name='nydato2' class='dropmenu' id='dato2'>
<option>V&aelig;lg dato</option>
<%
IF NOT len(Request.querystring("id")) = 0 THEN
FOR i = 1 TO 31
Response.Write "<option"
IF i = left(rs2("dato"), 2) THEN
Response.Write " selected>"
ELSE
Response.Write ">"
END IF
Response.Write i & "</option>"
NEXT
END IF
%>
</select>
----------------------------------------------------------------------------
-----



Mvh.

/morten



 
 
Jens Gyldenkærne Cla~ (10-02-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 10-02-03 21:40

Morten Riis skrev:

> Det er meningen at det skal være muligt for brugeren at
> redigere i en nyheds dato, ved at vælge datoen i en drop-down
> fætter.

> 1. Er det sådan man normalt ville gøre det?

Jeg ved ikke om det er specielt normalt, men det er en ganske god
ide at gøre sådan.

> 2. Hvis ja, hvad er der så galt i nedenstående kode? (fejlen
> opstår i linien: IF i = left(rs2("dato"), 2) THEN )

Der er det galt at du bruger en strengrepræsentation af din dato
til at finde dagen (og sikkert også måneden og året) med. Der
findes funktioner der gør præcis det du skal bruge - nemlig day,
month og year. De kan bruges såvel i asp (vbscript) som i Access.

Omskrevet bliver din sætning så:

   If i = Day(rs2("dato")) Then

Det er i mine øjne lidt uheldig kodeteknik at lave beregningen
Day(rs2("dato")) i hvert løkkegennemløb (rs2("dato") er jo den
samme i alle 31 gennemløb af din dag-selectboks). Du bør gemme
resultatet i en variabel, så skal beregningen kun udføres én gang.

Du kan, i den løkke hvor rs2 itererer, sætte følgende variable:

   dDag = Day(rs2("dato"))
   dMaaned = Month(rs2("dato"))
   dAar = Year(rs2("dato"))

- og så bruge disse variable når du laver de tre select-bokse.


NB: Når du skal opdatere datoen bør du ubetinget benytte funktionen
DateSerial. Den tager nemlig de tre parametre, dag, måned og år -
præcis de værdier som du får ud fra dine tre select-bokse. Og den
har den store fordel at være totalt uafhængig af datoindstillinger
på serveren og i databasen. DateSerial skal anvendes i Access, ikke
i asp, hvis du skal være sikker på uafhængigheden.

Eksempel:

   strSQL = "UPDATE minTabel SET datofelt = DateSerial(" & _
       wDag & ", " & wMaaned & ", " & wAar & ") " & _
       " WHERE nyhedsID = " & wID

- hvor wDag, wMaaned og wAar er de værdier du modtager fra de tre
bokse.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Søg
Reklame
Statistik
Spørgsmål : 177502
Tips : 31968
Nyheder : 719565
Indlæg : 6408538
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste