Avatar billede disdis Nybegynder
16. november 2003 - 00:38 Der er 14 kommentarer og
1 løsning

"dagbog" (ASP/access)

Jeg har problemer med dato i en "dagbog" (ASP/access)

Når jeg kigger i databasen er alle dato'er ikke OK.
F.eks. denne:
11-12-2003 skal være 12-11-2003 (12.november)
Jeg har uden held forsøgt at korrigere, kommer til at stå: 11/12/2003
Andre er OK:
12-12-2003 dato OK = 12. desember
13-11-2003 dato OK = 13. november


Filen til oprettelse hedder dagbog.asp og datoen blir sat med denne:
<% = indlaeg.Fields ("dato")%)

Er det muligt at få hjælp til forbedring af koden, har selv ikke de store erfaringer.

På forhånd tak :)
Avatar billede eagleeye Praktikant
16. november 2003 - 00:47 #1
"Fejlen" skyldes at Access bruger US eller UK dato format som er yyyy-mm-dd eller mm-dd-yyyy via SQL. Når man så indsætter en dato i dansk dato format, hvor dagen er først så vil den for nogle datoer bytter rundt på månede og dag i datoen.

Der er en løsning og det er at bruge dato funktionerne Year, Month og Day til at formatere din dato til yyyy-mm-dd inden de ligges i databasen med SQL:

<%
dato = "04-06-2003"
strDato = Year(dato) & "-" & Month(dato) & "-" & Day(dato)
SQL = "INSERT INTO tablenavn (datokol) VALUES (#" & strDato & "#)"
%>
Avatar billede disdis Nybegynder
16. november 2003 - 00:53 #2
Må tilføje at filen opet.asp ser såden ud:
<%@LANGUAGE="VBSCRIPT"%>

<%
If Session("validering") <> "valid" Then Response.Redirect("dagbog.asp")

If Request.QueryString("Submit") <> "" Then

set JMail = Server.CreateObject("JMail.Speedmailer")

Set database = Server.CreateObject("ADODB.Connection")
database.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\inetpub\db\dagbog.mdb")

Set indlaeg = Server.CreateObject("ADODB.Recordset")
indlaeg.Open "dagbogsindlaeg", database, 2, 2

indlaeg.AddNew
    indlaeg("overskrift") = Request.QueryString("overskrift")
    indlaeg("dato") = Request.QueryString("dato")
    indlaeg("indlaeg") = Request.QueryString("indlaeg")
    If Request.QueryString("link") <> "" then
        indlaeg("link") = Request.QueryString("link")
    End If
indlaeg.Update

Set emailadr = Server.CreateObject("ADODB.Recordset")
emailadr.Open "SELECT * FROM mailingliste", database

While NOT emailadr.EOF

JMail.SendMail "afsender@mail.dk", emailadr.Fields("email"), "Så er det nyt i dagbogen!", "Hej, smut lige forbi www.mitwebsted.dk/dagbog.asp, og se det nye indlæg", "mail.tele.dk"

emailadr.MoveNext

Wend

Response.Redirect("dagbog.asp")

End If
%>

<html><title>Opret</title>
<body bgcolor="#FFFFFF">
<form name="form1" method="get" action="opret.asp">
  Overskrift:
  <input type="text" name="overskrift">
  <br>
  Dato:
  <input type="text" name="dato">
  (22-03-2002)<br>
  Indlæg.:
  <textarea name="indlaeg" rows="8"></textarea>
  <br>
  Link:
  <input type="text" name="link">
  (www.cnn.dk)<br>
  <br>
  <input type="submit" name="Submit" value="Opret">
</form>

</body>
</html>
Avatar billede disdis Nybegynder
16. november 2003 - 00:56 #3
eagleeye > er det muligt at få dit forslag til ændring plaseret i koden ovenfor :)
Avatar billede eagleeye Praktikant
16. november 2003 - 00:57 #4
Så prøv at lave denne linje om:

indlaeg("dato") = Request.QueryString("dato")


til den dette:

dato = Request.QueryString("dato")
strDato = Year(dato) & "-" & Month(dato) & "-" & Day(dato)
indlaeg("dato") = strDato
Avatar billede disdis Nybegynder
16. november 2003 - 01:03 #5
Takker eagleeye
Skal jeg så ikke korigere alle filer, f.eks. denne (dagbog.asp)
<%@LANGUAGE="VBSCRIPT"%>

<!--#include file="forbindelse.asp" -->

<%
tid = Request.QueryString("tid")
If Request.QueryString("Submit") = "" Then
    If tid = "" Then
        tid = "DESC"
    ElseIf tid = "DESC" Then
        tid = "ASC"
    Else
    tid = "DESC"
    End If
End If

soeg = Request.QueryString("soeg")
If soeg = "" Then
    soegestreng = "'%'"
Else
    soegestreng = "'%" & soeg & "%'"
End If

Set indlaeg = Server.CreateObject ("ADODB.Recordset")
indlaeg.Open "SELECT * FROM dagbogsindlaeg WHERE overskrift LIKE " & soegestreng & " OR indlaeg LIKE " & soegestreng & " ORDER BY dato " & tid, database
%>

<html>
<head>
<title>Kære Dagbog</title>
</head>

<body bgcolor="#FFFFFF" text="#000000" link="#000000" vlink="#000000" alink="#000000">

<form name="form1" method="get" action="dagbog.asp">

<table width="95%" border="0" cellspacing="0" cellpadding="20" align="center">

<tr><td bgcolor="#999999">
<div align="center"><font face="Arial" size="5"><b>Kære Dagbog</b></font></div>
</td></tr>

<tr><td bgcolor="#CCCCCC">

<div align="center"><b><font face="Arial, Helvetica, sans-serif" size="2"><a href="mailingliste.asp" target="_blank">Tilmeld dig mailinglisten, og få besked, når der kommer nye indlæg i dagbogen.</a></font></b></div>

<br>

<table width="95%" border="0" cellspacing="0" cellpadding="0" align="center">

<tr><td><font face="Arial" size="2">
Søg i indlæg:

<input type="text" name="soeg" value="<% = soeg%>" size="20">
<input type="submit" name="Submit" value="Søg">

<%
If soeg <> "" Then Response.Write("<br>Hvis du vil se alle indlæg, skal du slette indholdet i søgefeltet og klikke på Søg.")
%>
</font></td>

<td>
<div align="right"><font face="Arial" size="2"><a href="validering.asp?funktion=opret">Opret nyt indlæg</a><br>

<a href="dagbog.asp?tid=<% = tid%>&soeg=<% = soeg%>">Vis

<%
If tid = "DESC" Then Response.Write("ældste") else Response.Write("nyeste")
%>

først</a></font></div>
</td></tr>

</table>

<br>

<%
While NOT indlaeg.EOF
%>

<table width="80%" border="0" cellspacing="0" cellpadding="0" align="center">
<tr><td>

<table width="100%" border="0" cellspacing="0" cellpadding="0" bgcolor="#666666">
<tr><td width="66%">
<div align="center"><font face="Arial" size="2" color="#FFFFFF"><% = indlaeg.Fields("overskrift")%></font></div>
</td><td width="34%">
<div align="right"><font face="Arial" size="2" color="#FFFFFF"><% = indlaeg.Fields("dato")%></font></div>
</td></tr>
</table>

</td></tr>
<tr><td>
<hr noshade size="1"><font face="Arial" size="2"><% = indlaeg.Fields("indlaeg")%></font>

<%
If indlaeg.Fields("link") <> "" then Response.Write("<br><br><font face='Arial' size='2'>Dagens link: " & "<a href='http://" & indlaeg.Fields("link") & "' target='_blank'>" & indlaeg.Fields("link") & "</a>")
%>

</td></tr>
<tr><td>
<div align="center">
<hr size="1" noshade>
<font face="Arial" size="2">
<a href="validering.asp?funktion=opdater&id=<% = indlaeg.Fields("id")%>">Opdater indlæg</a>&nbsp; &nbsp;&nbsp;
<a href="validering.asp?funktion=slet&id=<% = indlaeg.Fields("id")%>">Slet indlæg</a></font>
<hr size="1" noshade>
</div>
</td></tr>
</table>

<br>
<br>

<%
indlaeg.MoveNext
Wend
%>

</td></tr>

</table>

<input type="hidden" name="tid" value="<% = tid%>">

</form>

</body>
</html>
Avatar billede eagleeye Praktikant
16. november 2003 - 01:08 #6
jeg er ikke helt med på det sidste??
Den side er der umiddelbart ikke noget galt med. Der hvor det skal rettes er når man ligger dato'er i databasen eller laver en SELECT SQL som hendter poster bestemt ud fra datoen.
SQL = " .... WHERE dato >= #2003-11-14#"
Avatar billede disdis Nybegynder
16. november 2003 - 01:31 #7
Har ændret indlaeg("dato") = Request.QueryString("dato")

Men 14. desember blir til 12/14/2003
Avatar billede eagleeye Praktikant
16. november 2003 - 01:35 #8
Når du udskriver??
Er dato af typen Date/Time i Access?
Køre serveren med DK dato format?
Avatar billede eagleeye Praktikant
16. november 2003 - 01:38 #9
Det kunne nemlig tyde på at serveren køre med US dato format..
Du kan prøve bare at udskrive Date og de hvordan det står:
Response.Write Date
Avatar billede eagleeye Praktikant
16. november 2003 - 01:41 #10
Du kan jo altid prøve at tilføje denne linje i toppen for at formater til DK format..:
Session.LCID = 1030

Nå godnat og sov godt, jeg går i seng nu.
Avatar billede disdis Nybegynder
16. november 2003 - 01:43 #11
Response.Write Date gir 11/16/2003
Avatar billede eagleeye Praktikant
16. november 2003 - 01:44 #12
Ja så det serveren som er sat til US så prøv som vist i 16/11-2003 01:41:38 med denne linje i toppen af dine filer som gemmer datoen og udskriver datoen.

Session.LCID = 1030
Avatar billede disdis Nybegynder
16. november 2003 - 01:58 #13
Har sat Session.LCID = 1030
ind
og nu blir 16. november til 16-11-2003, så den er fin, men

Men 4.november blir nu til 11-04-2003
inden jeg satte Session.LCID = 1030 var denne dato OK
Avatar billede eagleeye Praktikant
16. november 2003 - 12:07 #14
ja det fordi daoterne i databasen er gemt forkert og dem som før så rigtige ud er nu forkerte. Du nød til at rette i databasen sådan datoen står rigtigt.
Avatar billede disdis Nybegynder
16. november 2003 - 18:08 #15
eagleeye > takker meget for god løsning
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