Avatar billede fredd Nybegynder
22. december 2004 - 15:41 Der er 19 kommentarer og
2 løsninger

Dato problem

Hej Eksperter..

Jeg har en form, som brugere kan bruge til at indsætte noget i Acess database. Jeg kunne godt tænke mig at få serveren til selv at udfylde et dato-felt, som beskriver hvornår formen er "posted".

Har en dansk access db og felt felt ved navn "datetime", som skal udfyldes med serveren aktulle dato og tid. Ex. 22-12-2004 15:41:32

På forhånd tak!
Avatar billede tjaz Nybegynder
22. december 2004 - 15:45 #1
Enten kan du sætte en standard værdi i din database med Now() eller også kan du når du indsætter dit indlæg i databasen skrive:

rs("datetime") = Now()
Avatar billede fredd Nybegynder
22. december 2004 - 15:48 #2
Ja, men skal bruge den i en sql-streng.. Så det skal være noget Request ??? et eller andet...

Har forsøgt med Now() men det virker ikke..
Avatar billede apo Praktikant
22. december 2004 - 20:52 #3
Måske kan denne bruges:

Format$([date],'dd/mm/yyyy') AS FormDate, Format$([date],'hh:mm:ss') AS FormTime

Apo
Avatar billede fredd Nybegynder
22. december 2004 - 22:53 #4
Vil have et "Request", der henter den aktulle dato og tid.
Avatar billede tjaz Nybegynder
23. december 2004 - 00:22 #5
Du henter serverens tid ved at udskrive now

<%=now()%>
Avatar billede fredd Nybegynder
23. december 2004 - 11:59 #6
Mit script ser sådan ud:

strSQL = "Insert into log (ip, datetime, user, site, action, alarm) values('" & Request.ServerVariables("REMOTE_ADDR") & "', '" & Now() & "', 'Unauthorized', '" & Session("side") & "', 'tried acces to a restricted page', '3')"

- men jeg få denne fejl:

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

[Microsoft][ODBC Microsoft Access Driver] Syntax error in INSERT INTO statement.

I stedet for '" & Now() & "', tror jeg man skal lave et "Request" af servers tid, men ved ikkew hvordan ejg skal gøre det.

Kan det også have noget at gøre med dato-feltet i access databasen?
Avatar billede tjaz Nybegynder
23. december 2004 - 14:47 #7
Hvilke typer af felter er de i din database?

ip = tekst
datetime = ?
user = tekst
site = tekst
action = tekst
alarm = tal

eller hvordan ?
Avatar billede apo Praktikant
23. december 2004 - 20:16 #8
Det eksempel jeg gav er fra et ASP-forum, hvor tid og klokkeslet hentes i databasen og derefter formateres.

Ellers kan du måske anvende følgende til at smide dato og klokkeslet i databasen:

<%
' Datoformater
  ShortDate = FormatDateTime(Now, vbShortDate) ' Eks. 23-12-2004
  LongTime = FormatDateTime(Now, vbLongTime) ' Eks. 20:11:07

' Formater dato (dato-feltet i Access skal kunne håndtere både tal og tekst)
  datetime = ShortDate & " " & LongTime

  strSQL = "Insert into log (ip, datetime, user, site, action, alarm) values('" & Request.ServerVariables("REMOTE_ADDR") & "', '" & Now() & "', 'Unauthorized', '" & Session("side") & "', 'tried acces to a restricted page', '3')"
%>

Mon ikke det virker?

Apo
Avatar billede apo Praktikant
23. december 2004 - 20:22 #9
Jeg fik ikke rettet din SQL...

<%
' Datoformater
  ShortDate = FormatDateTime(Now, vbShortDate) ' Eks. 23-12-2004
  LongTime = FormatDateTime(Now, vbLongTime) ' Eks. 20:11:07

' Formater dato (dato-feltet i Access skal kunne håndtere både tal og tekst)
  DateTime = ShortDate & " " & LongTime

  strSQL = "Insert into log (ip, datetime, user, site, action, alarm) values('" & Request.ServerVariables("REMOTE_ADDR") & "', '" & DateTime & "', 'Unauthorized', '" & Session("side") & "', 'tried acces to a restricted page', '3')"
%>

Sådan :-)

Apo
Avatar billede fredd Nybegynder
24. december 2004 - 11:45 #10
Apo:
Jeg får stadig samme fejl (Syntax error in INSERT INTO statement). Tror du ikke det har noget med felterne i min database at gøre. Skal de evt. have en standard-værdi?

Tjaz:
Felterne i min database ser sådan ud:
id = Autonummerering
ip = tekst
datetime = Dato og klokkeslet
user = tekst
site = tekst
action = notat
alarm = tekst
Avatar billede apo Praktikant
24. december 2004 - 12:22 #11
Jo, hvis feltet i databasen ikke er af en type der understøtter både tal og tekst, vil du få en fejl. Jeg skrev jo følgende i eksemplet ( ;-) ):

<%
...
' Formater dato (dato-feltet i Access skal kunne håndtere både tal og tekst)
...
%>

Jeg har selv en log-database, hvor jeg bruger præcis samme fremgangsmetode til at logge dato og tidspunkt (det virker hos mig). Derfor bør mit eksempel virke, hvis du ændrer feltets type.

Apo
Avatar billede apo Praktikant
24. december 2004 - 12:24 #12
Du skal altså ændre feltet således:

datetime = tekst

Apo
Avatar billede fredd Nybegynder
24. december 2004 - 12:30 #13
Jamen kan man så sortere og hente dato-udtræk, når det ikke er et dato-felt?
Avatar billede fredd Nybegynder
24. december 2004 - 12:30 #14
Altså regne (matematik) med datoerne?
Avatar billede tjaz Nybegynder
24. december 2004 - 12:37 #15
Smid lige din kode, hvor du indsætter en ny post i databasen.
Avatar billede apo Praktikant
24. december 2004 - 12:46 #16
Ja, du kan stadig foretage beregninger af datoerne.

Hvis du får problemer med at din server ikke genkender indholdet som danske datoer, kan du skrive dette øverst på dine sider:

<% Session.LCID = 1030 %>

Apo
Avatar billede fredd Nybegynder
26. december 2004 - 11:08 #17
' Databaseforbindelse - husk at angive sti til din database
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("settings.mdb")
Conn.Open DSN
strSQL = "Insert into log (ip, user, site, action, alarm) values('" & Request.ServerVariables("REMOTE_ADDR") & "', 'Unauthorized', '" & Session("side") & "', 'tried acces to a restricted page', '3')"
Conn.Execute(strSQL)

Session("login-access") = ""
Session("side") = ""

Response.Write "<p class=""error"">Du har ikke rettigheder til at vise denne side. Dit forsøg på indtrængen er blevet logget!</p>"

' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing

end if
Avatar billede fredd Nybegynder
26. december 2004 - 11:44 #18
Efter at have leget lidt med det i en times tid nu, har jeg fundet ud af at "datetime", "date-time", "date" osv. er reserverede ord - derfor virker det ikke. Jeg har nu ændret felt-navnet til "dato" og typen tilbage til Dato og Klokkeslet - ved ikke om denne felt type bare gør det hele sværere, men den er vel lavet for at skulle bruges til dette formål.

Hvis i begge smider i svar, kan i dele pointene...

Fredd
Avatar billede apo Praktikant
26. december 2004 - 19:23 #19
Så får du et svar :-)

Men fik du det til at virke?

Apo
Avatar billede fredd Nybegynder
28. december 2004 - 16:54 #20
Jaja..

Takker for hjælpen!.. :-)
Avatar billede apo Praktikant
28. december 2004 - 18:34 #21
Så lidt, og tak for points :-)

Apo
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