/ 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
Datediff problem
Fra : Henrik Nygaard


Dato : 01-06-04 10:30

Problem.

Jeg har 2 forskellige doc som indsætter dato i 2 forskellige
tabeller i samme database. Begge tabeller og datofelter er ens,
men indholder forskellige data.
Jeg har 1 htm side som indsætter datoen korrekt i den ene tabel.
Jeg har desuden 1 asp side som ikke indsætter datoen korrekt i
den anden tabel selvom koden omkring dato er den samme i begge
dokumenter. Mit problem er åbenbart dato i asp dokumenter.

Jeg har så prøvet med artiklen
http://asp-faq.dk/article/?id=98

Jeg har lavet lavet min 1 asp side om til 2. Den første som
indholder form og en som sender til databasen. formen ser sådan
ud
..
<td>&nbsp;&nbsp;<input type="date" name="startdato"
size="15">&nbsp;&nbsp;dd-mm-åååå</td>

Det går fint.

Når jeg trykker på opdater og den skal hentes siden som opdatere
skriver den følgende:

Microsoft VBScript runtime (0x800A000D)
Type mismatch: '[string: " & Dag & "]'
/tidupdate.asp, line 47

Teksten omkring line 47 er:

if Request.form("startdato") <> "" THEN
(line 47) strSQL = strSQL & ", " & DateSerial(" & Aar & ", " &
Maaned & ", " & Dag & ")
Else
End if

Nogen som har en ide til have der er galt?


--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Jens Gyldenkærne Cla~ (01-06-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 01-06-04 10:51

Henrik Nygaard skrev:

> Jeg har 2 forskellige doc som indsætter dato i 2 forskellige
> tabeller i samme database. Begge tabeller og datofelter er ens,
> men indholder forskellige data.
> Jeg har 1 htm side som indsætter datoen korrekt i den ene tabel.

Hm - en htm-side kan ikke indsætte noget i en database.


> <td>&nbsp;&nbsp;<input type="date" name="startdato"
> size="15">&nbsp;&nbsp;dd-mm-åååå</td>

Der findes ikke nogen type="date" for input-felter - brug
type="text" i stedet.



> Microsoft VBScript runtime (0x800A000D)
> Type mismatch: '[string: " & Dag & "]'
> /tidupdate.asp, line 47
>
> Teksten omkring line 47 er:
>
> if Request.form("startdato") <> "" THEN
> (line 47) strSQL = strSQL & ", " & DateSerial(" & Aar & ", " &
> Maaned & ", " & Dag & ")

Du har placeret DateSerial forkert i forhold til anførselstegnene.
DateSerial skal sendes som en funktion til databasen - ikke
behandles af asp-parseren. Prøv med følgene ændring:

If Request.form("startdato") <> "" THEN
   strSQL = strSQL & ", DateSerial(" & Aar & ", " &
Maaned & ", " & Dag & ")


Det er dog ikke sikkert at det er nok til at få dit program til at
køre. Her er et par opfølgende spørgsmål:

a) Hvordan lægger du data i variablene Aar, Maaned og Dag?

b) Husker du at tilpasse feltlisten efter om der er indhold i
startdato? (du er nødt til at have en ekstra If-linje tidligere i
opbygningen af sql-strengen).
--
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

Henrik Nygaard (01-06-2004)
Kommentar
Fra : Henrik Nygaard


Dato : 01-06-04 11:26

Hej Jens,

Tak for hurtigt svar.

> Hm - en htm-side kan ikke indsætte noget i en database.

Min htm's form sender til en asp side.

> > <td> <input type="date" name="startdato"
> > size="15"> dd-mm-åååå</td>
>
> Der findes ikke nogen type="date" for input-felter - brug
> type="text" i stedet.

Retter den lige med det vums...

> > Microsoft VBScript runtime (0x800A000D)
> > Type mismatch: '[string: " & Dag & "]'
> > /tidupdate.asp, line 47
> >
> If Request.form("startdato") <> "" THEN
>    strSQL = strSQL & ", DateSerial(" & Aar & ", " &
> Maaned & ", " & Dag & ")

Det hjalp desværre ikke noget.


> a) Hvordan lægger du data i variablene Aar, Maaned og Dag?

'Opsætning af startdato
Dag = Day(Request.form("startdato"))
Maaned = Month(Request.form("startdato"))
Aar = Year(Request.form("startdato"))

> b) Husker du at tilpasse feltlisten efter om der er indhold i
> startdato? (du er nødt til at have en ekstra If-linje tidligere i
> opbygningen af sql-strengen).

Jeg har If sætningerne med, så den kontrollere på om den er tom
eller ej.

Det virker desværre ikke endnu.

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jens Gyldenkærne Cla~ (01-06-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 01-06-04 11:42

Henrik Nygaard skrev:

>> Hm - en htm-side kan ikke indsætte noget i en database.
>
> Min htm's form sender til en asp side.

O.k. - men det er så stadig asp-siden der indsætter datoen.


>> If Request.form("startdato") <> "" THEN
>> strSQL = strSQL & ", DateSerial(" & Aar & ", " &
>> Maaned & ", " & Dag & ")
>
> Det hjalp desværre ikke noget.

Nej, men det fører dig alligvel lidt nærmere målet.



> 'Opsætning af startdato
> Dag = Day(Request.form("startdato"))
> Maaned = Month(Request.form("startdato"))
> Aar = Year(Request.form("startdato"))

Det er usikkert - fordi du her forlader dig på at asp's håndtering
af din startdatoværdi er den samme som du forventer. På denne måde
vinder du faktisk intet ved at bruge dateserial, du har blot
flyttet usikkerheden ved datoformatet fra selve sql-sætningen til
din opbygning af dateserial.

Hvis du bruger et fast datoformat (fx dd-mm-yyyy), så brug
tekstfunktioner til at trække de tre datoled ud herfra og læg så
bagefter værdierne ind i DateSerial.

Eksempel:

' Hent startdato:
Dim sdato
sdato = Request.Form("startdato")

' Find de enkelte dele
Dim sdatoArray
sdatoArray = Split(sdato, "-")

If Ubound(sdatoArray) = 2 Then
   ' Tre elementer i datoen, fortsæt behandlingen
   Dag = sdatoArray(0)
   Maaned = sdatoArray(1)
   Aar = sdatoArray(2)
Else
   ' Forkert dato - udskriv fejlmeddelelse
   ...
End If
--
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

Henrik Nygaard (01-06-2004)
Kommentar
Fra : Henrik Nygaard


Dato : 01-06-04 13:01

Får stadig fejlen:

Microsoft VBScript runtime (0x800A000D)
Type mismatch: '[string: " & Aar & "]'
/marrigeupdate.asp, line 63

De data jeg overføre fra min form side er f.eks 01-01-1991. Kan det
betyde noget at der er - i når jeg bruger Ubound?

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jens Gyldenkærne Cla~ (01-06-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 01-06-04 13:16

Henrik Nygaard skrev:

> Microsoft VBScript runtime (0x800A000D)
> Type mismatch: '[string: " & Aar & "]'
> /marrigeupdate.asp, line 63

Og linje 63 er?


> De data jeg overføre fra min form side er f.eks 01-01-1991.
> Kan det betyde noget at der er - i når jeg bruger Ubound?

Nej - men det betyder noget om du bruger Split korrekt.

Helt generelt - udskriv variable til skærmen hvis de volder
problemer. Se hvordan her: <http://asp-faq.dk/article/?id=41>.


NB: Læs gerne min signatur. Det er svært at se hvad du svarer på
når du ikke citerer noget.
--
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

Henrik Nygaard (01-06-2004)
Kommentar
Fra : Henrik Nygaard


Dato : 01-06-04 13:24

> > Microsoft VBScript runtime (0x800A000D)
> > Type mismatch: '[string: " & Aar & "]'
> > /marrigeupdate.asp, line 63
>
> Og linje 63 er?

Her er linie 63. Beklager.

strSQL = strSQL & ", DateSerial(" & Aar & ", " & Maaned & ", " &
Dag & ") "



--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jens Gyldenkærne Cla~ (01-06-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 01-06-04 13:33

Henrik Nygaard skrev:

> Her er linie 63. Beklager.
>
> strSQL = strSQL & ", DateSerial(" & Aar & ", " & Maaned & ", " &
> Dag & ") "

Måske brokker parseren sig fordi Aar er et tal. Du kan eksplicit
caste det som en streng med funktionen Cstr:

strSQL = strSQL & ", DateSerial(" & _
   Cstr(Aar) & ", " & _
   Cstr(Maaned) & ", " & _
   Cstr(Dag) & ") "

Men det er stadig en god ide at udskrive variable der volder
problemer.

Prøv fx med følgende:

Response.write "Datoværdier: År: " & Cstr(aar) & _
       ", Måned: " & Cstr(maaned) & _
       ", Dag: " & Cstr(Dag)
--
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

Henrik Nygaard (01-06-2004)
Kommentar
Fra : Henrik Nygaard


Dato : 01-06-04 13:48

Så virker det bare. Tak for hjælpen.

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jens Gyldenkærne Cla~ (01-06-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 01-06-04 14:30

Henrik Nygaard skrev:

> Så virker det bare. Tak for hjælpen.

Velbekomme.

NB: Selv om du bare siger tak, er det stadig en god ide at citere
en smule, så man kan se hvilken tråd det hører til.
--
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 : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408941
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste