Avatar billede Slettet bruger
14. august 2005 - 23:31 Der er 20 kommentarer og
1 løsning

Dato function problem.

Ved ikke om jeg skriver det rigtige sted men her kommer det.

Jeg har følgende på min ASP side(er).

på min data_add.asp side har jeg:

Response.Write("Dato: <input type=""text"" name=""Date"" size=""10"" maxlength=""100"">")
============================================
Den skal køre igennem denne funktion:

Function ConvertDate(dtmDate,intFormat)
OutDate = DatePart("yyyy", dtmDate) & "-" & DatePart("m", dtmDate) & "-" & DatePart("d", dtmDate)
If intFormat = 0 Then
    strOut = OutDate
End If

ConvertDate = strOut
End Function

============================================

Og skal så indsættes i Date feltet i databasen:
Gøres som følger i filen data_create.asp:

intDate        =    ConvertDate(request.querystring("Date"),0)

så åbner jeg min database og indæstter:
SQL = "INSERT INTO DATA(Date) Values (" & intDate & ")


Men det virker ikke hvad kan fejlen være?
Avatar billede nielle Nybegynder
15. august 2005 - 07:50 #1
Du skriver ikke noget om hvilken type database du bruger. Hvis det f.eks. er Access eller MS SQL så skal der #-tegn rundt om datoer:

SQL = "INSERT INTO DATA(Date) Values (#" & intDate & "#)

I 9 ud af 10 tilfælde skyldes "underlige ting med databasen" at din SQL indeholder noget andet end det du forventer. Derfor er det i den slags situationer altid en god idet lige at skrive SQL'en ud før at man forsøger at køre den:

SQL = "INSERT INTO DATA(Date) Values (#" & intDate & "#)
Response.Write "DEBUG: " & SQL & "<br>"
Avatar billede busschou Praktikant
15. august 2005 - 07:55 #2
det er den ene ting, den anden kunne være at Date er et reserveret ord og det derfor skal være [Date], men ja en fejlmedelelse hjælper altid ;o)
Avatar billede Slettet bruger
15. august 2005 - 16:40 #3
Har sat den til at skrive det ud det gør jeg med det samme det lærte du mig sidst nielle.

Det er en MySQL database og uanset hvilken dato jeg skriver
(2005-01-03, 2005-1-3, 3-1-2005, 03-01-2005)
Så skriver den altid 1899-12-30 ind.

Det udskriver DEBUG'en
Jeg prøver lige med de der horsens-vinduer.
Avatar billede busschou Praktikant
15. august 2005 - 16:44 #4
hvis det er mysql skal du ikke have # omkring
Avatar billede Slettet bruger
15. august 2005 - 16:45 #5
DEBUG #1: INSERT INTO DATA(date) Values (#1899-12-30#)

Virker slet ikke.

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

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Prøver lige dit forslag Busschou
Avatar billede busschou Praktikant
15. august 2005 - 16:46 #6
jeg ved ikke om man putter [] omkring reserverede ord i mysql ...måske
Avatar billede Slettet bruger
15. august 2005 - 16:49 #7
Har ændret intDate til intDato men det virker stadig ikke.

TDS
Avatar billede Slettet bruger
15. august 2005 - 16:51 #8
Jeg prøver lige at rette database feltet til dato også.
Avatar billede Slettet bruger
15. august 2005 - 16:59 #9
Stadig virker det ikke :S
Avatar billede Slettet bruger
15. august 2005 - 17:21 #10
Hmm da jeg ikke kan få denne funktion til at virke må jeg prøve noget andet.
Er der så en der kan fortælle mig hvordan jeg kan skrive en dato ind i et input flet og så sende det til min database??
Avatar billede busschou Praktikant
15. august 2005 - 17:32 #11
1) jeg synes du skal overveje kalde dit felt for "dato" frem for "Date" eftersom Date i mange sprog er reserveret så der undgåes misforståelser
2) Du hiver bare feltet ud og bruger CDate på det, mig bekendt er det mest access som har problemer med dato formatet (men er ikke 100), så altså
dato = CDate(request.form("dato"))
og så indsætter du bare dato i databasen
Avatar billede Slettet bruger
15. august 2005 - 17:45 #12
Joooo nu skriver den godt nok at den indsætte data'en

DEBUG #1: INSERT INTO DATA(dato) Values (01-01-2005)

Det passer med det jeg skrev.
Men når jeg går ind i databasen står der istedet: (0000-00-00).
Avatar billede busschou Praktikant
15. august 2005 - 17:47 #13
hmm det lyder underligt
Avatar billede Slettet bruger
15. august 2005 - 17:49 #14
Ja det lyder meget underligt.
Avatar billede busschou Praktikant
15. august 2005 - 17:51 #15
har du prøvet med ' omkring, altså
INSERT INTO DATA(dato) Values ('01-01-2005')
Avatar billede Slettet bruger
15. august 2005 - 17:55 #16
Ja

Har lige lavet det om til
strDato og så sendte den
DEBUG #1: INSERT INTO DATA(dato) Values ('01-01-2005')

Men stadig intet i databasen.

Hvis jeg laver feltet i databasen om fra Date-type til en varchar-type.
Kan man så stadig sotere efter dato???
Avatar billede busschou Praktikant
15. august 2005 - 17:56 #17
det bliver noget rod at sortere så
Den står ikke til en og anden dum standard overrule værdi eller noget..hmm
Avatar billede Slettet bruger
15. august 2005 - 17:58 #18
Jo der står jo den der 0000-00-00 og den sender det jo modsat.
Også selvom jeg skriver 2005-01-01 så sender det 01-01-2005
Avatar billede busschou Praktikant
15. august 2005 - 18:00 #19
jeg har desværre ikke flere ideer
Du kan evt vente om andre har ideer
hvis ikke så kunne du overveje stille spørgsmålet i mysql kategorien da det givetvis er der der sker ting og sager, jeg mener når den printer datoen rigtig ud inden indsættelse så kan det kun være sql/mysql der sker ting i
Avatar billede Slettet bruger
15. august 2005 - 18:02 #20
Hmm det vil jeg prøve hvis jeg ikke har fået svar her om en times tid.

Men tak for hjælpen da. Vi kom et skridt vidre.
Avatar billede Slettet bruger
15. august 2005 - 19:04 #21
Sååå lukker vi og flytter spørgsmålet igen :S.
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