/ 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
Kombinere dato og tid
Fra : Skunsen


Dato : 08-09-08 21:24

Hej!
Jeg har en fotodagbog, hvor jeg registrerer dato og tid for
indlæg (med mulighed for at redigere datoen) i hver sit felt via
dateserial og timeserial i en MS Access database

Jeg vil gerne kombinere felterne Dato og Tid til et felt med
standarddatoformat, så jeg kan sortere på det.

Kan det lade sig gøre?

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

 
 
Skunsen (08-09-2008)
Kommentar
Fra : Skunsen


Dato : 08-09-08 22:10

Her er koden:

<%
'-- Date/TimeToSql start --
Function DateToSql(Value)
DateToSql = "DateSerial(" & Year(Value) & ", " & _
Month(Value) & ", " & _
Day(Value) & ")"
End Function

Function TimeToSql(Value)
TimeToSql = "TimeSerial(" & Hour(Value) & ", " & _
Minute(Value) & ", " & _
Second(Value) & ")"
End Function
         ' -- DateTimeToSql slut --

   strSQL = "SELECT * FROM indhold"
   Set rsindhold = Conn.Execute (strSQL)

Do while not rsindhold.eof
DatDato = rsindhold("dato")
'DatDato = DateToSQL(StrDato)
DatTid = rsindhold("tid")
'DatTid = TimeToSQL(StrTid)
strID = rsindhold("indhold_ID")
DatDatoTid = DatDato + DatTid

   strSQL2 = "Update indhold set "
   strSQL2 = strSQL2 & "datotitel= " & DatDatoTid & " "
   strSQL2 = strSQL2 & "Where indhold_ID = " & strID & ""
   conn.execute(strSQL2)

rsindhold.movenext
loop
%>

... og denne fejlmeddelelse

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing
operator) in query expression '25-05-2007 13:02:00'.

/maj07/test.asp, line 35

På forhånd tak

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

Jørn Andersen (09-09-2008)
Kommentar
Fra : Jørn Andersen


Dato : 09-09-08 16:25

On 08 Sep 2008 21:09:47 GMT, Skunsen <skunsen@gmail.com> wrote:

>DatDatoTid = DatDato + DatTid

Hertil er det vist OK. Men du har brug for at omfrme din dato-tid-værdi
til noget forståeligt SQL. Du kan fx bruge funktionen her:

Function DateToSql(Value)
DateToSql = "DateSerial(" & Year(Value) & ", " & _
Month(Value) & ", " & _
Day(Value) & ") + " & _
"TimeSerial(" & Hour(Value) & ", " & _
Minute(Value) & ", " & _
Second(Value) & ")"
End Function

strSqlDatDatoTid = DateToSql(DatDatoTid)

strSQL2 = "UPDATE indhold SET " & _
" datotitel= " & strSqlDatDatoTid & _
" WHERE indhold_ID = " & strID

conn.execute(strSQL2)


Good luck!

--
Jørn Andersen,
Brønshøj

Skunsen (09-09-2008)
Kommentar
Fra : Skunsen


Dato : 09-09-08 21:33

> >DatDatoTid = DatDato + DatTid
>
> Hertil er det vist OK. Men du har brug for at omfrme din dato-tid-værdi
> til noget forståeligt SQL. Du kan fx bruge funktionen her:
>
> Function DateToSql(Value)
> DateToSql = "DateSerial(" & Year(Value) & ", " & _
> Month(Value) & ", " & _
> Day(Value) & ") + " & _
> "TimeSerial(" & Hour(Value) & ", " & _
> Minute(Value) & ", " & _
> Second(Value) & ")"
> End Function
>
> strSqlDatDatoTid = DateToSql(DatDatoTid)
>
> strSQL2 = "UPDATE indhold SET " & _
> " datotitel= " & strSqlDatDatoTid & _
> " WHERE indhold_ID = " & strID
>
> conn.execute(strSQL2)

Det giver følgende fejl:
Microsoft OLE DB Provider for ODBC Drivers error '80040e10'
[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

på linien med conn.execute(strSQL2)

Jeg har ændret linien " WHERE indhold_ID = " & strID
til " WHERE indhold_ID = " & strID & ""

men får samme fejl


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

Skunsen (09-09-2008)
Kommentar
Fra : Skunsen


Dato : 09-09-08 21:47

> > > DatDatoTid = DatDato + DatTid
> >
> > Function DateToSql(Value)
> > DateToSql = "DateSerial(" & Year(Value) & ", " & _
> > Month(Value) & ", " & _
> > Day(Value) & ") + " & _
> > "TimeSerial(" & Hour(Value) & ", " & _
> > Minute(Value) & ", " & _
> > Second(Value) & ")"
> > End Function
> >
> > strSqlDatDatoTid = DateToSql(DatDatoTid)
> >
> > strSQL2 = "UPDATE indhold SET " & _
> > " datotitel= " & strSqlDatDatoTid & _
> > " WHERE indhold_ID = " & strID
> >
> > conn.execute(strSQL2)
>
> Jeg har ændret linien " WHERE indhold_ID = " & strID
> til " WHERE indhold_ID = " & strID & ""
>
> men får samme fejl

Hvis jeg udskriver StrQL2 får jeg følgende:
UPDATE indhold SET datotitel= DateSerial(2007, 5, 25) + TimeSerial(13, 2, 0)
WHERE indhold_ID = 1

Der er en post i tabellen indhold med indhold_ID = 1
og feltet i databasen står til dato/tid

Hvis jeg prøver følgende

if isdate(StrSQLDatoTid) = true then
response.write("True")
else
response.write("False")
end if
response.end

bliver resultatet False

Hvis jeg prøver det samme på DatDatoTid (istedet for StrSQLDatoTid)
bliver resultatet True

SUK :o/

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

Jørn Andersen (09-09-2008)
Kommentar
Fra : Jørn Andersen


Dato : 09-09-08 22:25

On 09 Sep 2008 20:46:37 GMT, Skunsen <skunsen@gmail.com> wrote:


>Hvis jeg udskriver StrQL2 får jeg følgende:
>UPDATE indhold SET datotitel= DateSerial(2007, 5, 25) + TimeSerial(13, 2, 0)
>WHERE indhold_ID = 1

Ser rigtigt ud.

>Der er en post i tabellen indhold med indhold_ID = 1

- og indhold_ID er et tal-felt?

>og feltet i databasen står til dato/tid
>
>Hvis jeg prøver følgende
>
>if isdate(StrSQLDatoTid) = true then
>response.write("True")
>else
>response.write("False")
>end if
>response.end
>
>bliver resultatet False

Skal det også.
"DateSerial(2007, 5, 25) + TimeSerial(13, 2, 0)" er en streng, som ikke
(uden videre) kan blive til en dato.

>Hvis jeg prøver det samme på DatDatoTid (istedet for StrSQLDatoTid)
>bliver resultatet True

Korrekt - datDatoTid er en dato.

>SUK :o/

Et skud i tågen: Jeg har ikke styr på reserverede ord i Access (fx
indhold -?). Du kunne prøve at sætte alle feltnavne i
firkant-paranteser:
UPDATE [indhold] SET [datotitel] = ...
WHERE [indhold_ID] = 1

Et nyttigt link: Hvis du vil have hjælp til fejlnumre, så prøv:
<url: http://www.aspfaq.com/>
- bare copy-paste nummeret ind i søgefeltet.

Good luck!

--
Jørn Andersen,
Brønshøj

Jørn Andersen (09-09-2008)
Kommentar
Fra : Jørn Andersen


Dato : 09-09-08 22:04

On 09 Sep 2008 20:32:34 GMT, Skunsen <skunsen@gmail.com> wrote:

>> strSqlDatDatoTid = DateToSql(DatDatoTid)
>>
>> strSQL2 = "UPDATE indhold SET " & _
>> " datotitel= " & strSqlDatDatoTid & _
>> " WHERE indhold_ID = " & strID
>>
>> conn.execute(strSQL2)
>
>Det giver følgende fejl:
>Microsoft OLE DB Provider for ODBC Drivers error '80040e10'
>[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.
>
>på linien med conn.execute(strSQL2)
>
>Jeg har ændret linien " WHERE indhold_ID = " & strID
>til " WHERE indhold_ID = " & strID & ""
>
>men får samme fejl

1) Prøv at udskrive SQL-strengen ved at indsætte:
Response.Write strSQL2
Response.End
- *før*:
conn.execute(strSQL2)

2) Er du sikker på, at der er dato/tid-værdier for alle poster?

3) Da det er en Access-database, så er det måske lettere bare at
downloade den og så lave kombinationen af de to felter direkte i
databasen - ?
(Du har jo ikke brug for adskilte felter fremover, så det er vel en
éngangs-foreteelse ...)

Good luck!

--
Jørn Andersen,
Brønshøj

Skunsen (09-09-2008)
Kommentar
Fra : Skunsen


Dato : 09-09-08 22:19

> >> strSQL2 = "UPDATE indhold SET " & _
> >> " datotitel= " & strSqlDatDatoTid & _
> >> " WHERE indhold_ID = " & strID & " "

Jeg lavede StrID = Cint(StrID)
og fik igen en fejlmeddelelse med too few parameters expected 1

Så kiggede jeg nærmere på koden og nu sidder jeg så med røde ører!!!

datotitel skulle have været datotid! :o/

Så nu virker det

Tusind tak for hjælpen
Jeg blev en del klogere!!!

Her er den færdige kode, der virker hvis der skulle være andre med lignende
problem

<%
'-- Date/TimeToSql start --
Function DateToSql(Value)
DateToSql = "DateSerial(" & Year(Value) & ", " & _
Month(Value) & ", " & _
Day(Value) & ") + " & _
"TimeSerial(" & Hour(Value) & ", " & _
Minute(Value) & ", " & _
Second(Value) & ")"
End Function

' -- DateTimeToSql slut --

strSQL = "SELECT * FROM indhold"
Set rsindhold = Conn.Execute (strSQL)

Do while not rsindhold.eof
DatDato = rsindhold("dato")
DatTid = rsindhold("tid")
strID = rsindhold("indhold_ID")
indholdID = Cint(strID)

datDatoTid = DatDato + DatTid
StrSQLDatoTid = DateToSql(DatDatoTid)

strSQL2 = "UPDATE indhold SET " & _
" datotid= " & StrSQLDatoTid & _
" WHERE indhold_ID = " & indholdID & " "
conn.execute(strSQL2)

rsindhold.movenext
loop
%>

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

Jørn Andersen (09-09-2008)
Kommentar
Fra : Jørn Andersen


Dato : 09-09-08 22:28

On 09 Sep 2008 21:18:39 GMT, Skunsen <skunsen@gmail.com> wrote:

>Jeg lavede StrID = Cint(StrID)
>og fik igen en fejlmeddelelse med too few parameters expected 1
>
>Så kiggede jeg nærmere på koden og nu sidder jeg så med røde ører!!!
>
>datotitel skulle have været datotid! :o/

Passer meget godt med fejlkoden:

This error is due to one of the following things:

1. A field name was spelled incorrectly.
2. One or more of the values was blank.
3. You tried to insert the wrong datatype (e.g. surrounded a numeric
value with quotes, or forgot to put quotes around a string).

<url:
http://tutorials.aspfaq.com/8000xxxxx-errors/why-do-i-get-80040e10-errors.html>


Mvh. Jørn

--
Jørn Andersen,
Brønshøj

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste