/ 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
Indsættelse af dato i database..
Fra : Mikkel Sandø Larsen


Dato : 16-12-04 22:36

Jeg har et problem med indsættelsen af dato i en database. Jeg
har tidligere oplevet problemer med dato'er, men denne gang kan
jeg ganske simpelt ikke se hvad problemet er.

Der indsættes naturligvis en del forskellige værdier i databasen,
men det er kun dato-felterne der volder mig problemer.

Jeg har i forvejen "Session.LCID = 1030" indsat for at sikre det
danske dato-format.

Selve den streng der skal indsættes, ser sådan her ud:
strSQL = "Insert into opslag (UpDate) values('" &
DateSerial(Dato(2), Dato(1), Dato(0)) & "')"

Ved at bruge Response.Write(strSQL) får jeg (fx):
Insert into opslag (UpDate) values('04-01-2005')

Fejlmeldingen er naturligvis "Syntax error in INSERT INTO
statement" - men hvorfor, kan jeg ikke forstå..

Nogen der har en ide til hvad problemet kan væ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

 
 
Jens Gyldenkærne Cla~ (16-12-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 16-12-04 22:53

Mikkel Sandø Larsen skrev:

> Selve den streng der skal indsættes, ser sådan her ud:
> strSQL = "Insert into opslag (UpDate) values('" &
> DateSerial(Dato(2), Dato(1), Dato(0)) & "')"

Klassisk fejl. Brug databasens datofunktion - ikke asp's
datofunktion. Kun på den måde kan du sikre dig helt mod
konverteringsfejl.

Hvis du bruger Access, virker DateSerial også der. Den skal bare
ind i sql-strengen som funktion:

strSQL = "Insert into opslag (UpDate) values(
DateSerial(" & Dato(2) & "," & Dato(1) & "," & Dato(0) & "))"


> Fejlmeldingen er naturligvis "Syntax error in INSERT INTO
> statement" - men hvorfor, kan jeg ikke forstå..

Fordi din LCID-kommando kun påvirker hvordan asp fortolker datoer -
ikke hvordan databaser fortolker tekstudgaver af datoer.
--
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

Mikkel Sandø Larsen (16-12-2004)
Kommentar
Fra : Mikkel Sandø Larsen


Dato : 16-12-04 23:18

Jens GyldenkærneClausen skrev:
> Klassisk fejl. Brug databasens datofunktion - ikke asp's
> datofunktion. Kun på den måde kan du sikre dig helt mod
> konverteringsfejl.

Bare for min forståelses skyld, spørger jeg så om det vil sige at
funktionen er den samme, men at Access skal fortolke den istedet for
asp?

> Hvis du bruger Access, virker DateSerial også der. Den skal bare
> ind i sql-strengen som funktion:
>
> strSQL = "Insert into opslag (UpDate) values(
> DateSerial(" & Dato(2) & "," & Dato(1) & "," & Dato(0) & "))"

Jeg har prøvet ovenstående foreslag. Men fejlmeldingen er stadig den
samme. I tabellen er desuden en kolonne med et klokkeslet. Det
indsættes efter samme princip (men selvfølgelig med TimeSerial) og
fungerer uden problemer.

--
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

Jens Gyldenkærne Cla~ (16-12-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 16-12-04 23:53

Mikkel Sandø Larsen skrev:

> Bare for min forståelses skyld, spørger jeg så om det vil sige
> at funktionen er den samme, men at Access skal fortolke den
> istedet for asp?

Præcis. Formålet er at undgå tekstrepræsentationer af datoen så
længe som muligt.


> Jeg har prøvet ovenstående foreslag. Men fejlmeldingen er
> stadig den samme.

Hvordan ser din sql-sætning ud hvis du udskriver den nu?
--
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

Mikkel Sandø Larsen (17-12-2004)
Kommentar
Fra : Mikkel Sandø Larsen


Dato : 17-12-04 00:03

Jens GyldenkærneClausen skrev:
> Hvordan ser din sql-sætning ud hvis du udskriver den nu?

Den ser sådan her ud (datoen er bare et eksempel):
Insert into opslag (UpDate) values(DateSerial(2004,12,16))

--
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

Jens Gyldenkærne Cla~ (17-12-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 17-12-04 00:23

Mikkel Sandø Larsen skrev:

> Den ser sådan her ud (datoen er bare et eksempel):
> Insert into opslag (UpDate) values(DateSerial(2004,12,16))

Og det er præcis den sætning der fejler? Har du prøvet at køre den
direkte i Access?
--
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

Mikkel Sandø Larsen (17-12-2004)
Kommentar
Fra : Mikkel Sandø Larsen


Dato : 17-12-04 00:46

Jens GyldenkærneClausen skrev:

> Og det er præcis den sætning der fejler?
Ja det er det.. Jeg kan heller ikke forstå hvorfor..

>Har du prøvet at køre den direkte i Access?
Nej, for jeg må indrømme at jeg ikke ved hvordan man gør..

--
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

Jens Gyldenkærne Cla~ (17-12-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 17-12-04 01:00

Mikkel Sandø Larsen skrev:

>>Har du prøvet at køre den direkte i Access?

> Nej, for jeg må indrømme at jeg ikke ved hvordan man gør..

Åbn databasen i Access
Vælg forespørgsler i databasevinduet
Vælg opret ny forespørgsel
Vælg "luk" i dialogboksen "Vælg tabel"
Klik på sql-ikonet øverst til venstre
Indsæt den udskrevne sql-sætning
Vælg kør (udråbstegnet)

(ovenstående frit efter hukommelsen i Access 2000)
--
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

Mikkel Sandø Larsen (17-12-2004)
Kommentar
Fra : Mikkel Sandø Larsen


Dato : 17-12-04 01:38

Efter at prøve lidt forskellige ting af, fandt jeg problemet..
Access vil ikke acceptere kolonnens navn "UpDate"..
Efter at rette det til "UppDate" fungerede sætningen uden
problemer..

Typisk sql-fejl.. Hehe

--
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

JH (17-12-2004)
Kommentar
Fra : JH


Dato : 17-12-04 09:29

Mikkel Sandø Larsen wrote:
> Efter at prøve lidt forskellige ting af, fandt jeg problemet..
> Access vil ikke acceptere kolonnens navn "UpDate"..
> Efter at rette det til "UppDate" fungerede sætningen uden
> problemer..

Visse ord er reserverede i SQL, og du kan kantede parenteser så ved
SQL-fortolkeren at der er tale om et kolonnenavn, fx:

Insert into opslag ([UpDate]) values(DateSerial(2004,12,16))

Men, man slipper for hovedbrud ved at bruge ord, der ikke er
reserverede. Man kunne præfix'e sine tabeller, forespørgsler, views
osv., fx kalde alle sine tabeller tblTabelnavn (fx tblUpDate), stored
procedures stpStoredprocedurenavn osv.

--
Mvh
Jeppe

We have unmistakable proof that throughout all past time, there has been
a ceaseless devouring of the weak by the strong.

Søg
Reklame
Statistik
Spørgsmål : 177548
Tips : 31968
Nyheder : 719565
Indlæg : 6408803
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste