/ 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
"Strengkonstanten er afsluttet"
Fra : David Trasbo


Dato : 28-05-05 09:28

Hvad betyder denne fejl? Jeg får den i forbindelse med tilføjelse af data
til database. Den fejl jeg får ser sådan her ud:

Fejltype:
Der opstod en Microsoft VBScript-kompileringsfejl (0x800A0409)
Strengkonstanten er uafsluttet
/login/newmessage2.asp, line 41, column 74
strSQL = "Insert into personer (Til) values('" & Request.Form("Til") & "')

Linjen med fejlen ser sådan her ud:

strSQL = "Insert into personer (Til) values('" & Request.Form("Til") & "')
(Emne) values('" & Request.Form("Emne") & "')
(Afsender) values('" & Request.Querystring("name") & "')
(Besked) values('" & Request.Form("Besked") & "')"

Jeg forstår ikke fejlen men jeg er sikker på at det er der andre der gør.

--
David Trasbo.
Vær en god Usenet bruger. Læs http://usenet.dk/netikette.



 
 
Tomasz Otap (28-05-2005)
Kommentar
Fra : Tomasz Otap


Dato : 28-05-05 10:13

David Trasbo wrote:
> Strengkonstanten er uafsluttet
> /login/newmessage2.asp, line 41, column 74
> strSQL = "Insert into personer (Til) values('" & Request.Form("Til") & "')
>
> Linjen med fejlen ser sådan her ud:
>
> strSQL = "Insert into personer (Til) values('" & Request.Form("Til") & "')
> (Emne) values('" & Request.Form("Emne") & "')
> (Afsender) values('" & Request.Querystring("name") & "')
> (Besked) values('" & Request.Form("Besked") & "')"
>
> Jeg forstår ikke fejlen men jeg er sikker på at det er der andre der gør.

Fejlen betyder, at ASP ser en uafsluttet streng dvs. en strSQL = "
....... " uden den afsluttende ". Det lader til, at du har indsat
linieskift i din kode umiddelbart efter Request.Form("Til") & "').

Det må du ikke. Linieskift i ASP separerer ordrer og ASP opfatter det,
som om du har afsluttet et kommando og starter på et nyt - uden af
afslutte din tekststreng.

Du kan bruge underscore _ for at fortsætte koden på næste linie:

.... (Til) values('" & Request.Form("Til") & "') " &_
"(Emne) values('" & Request.Form("Emne") & "') " &_
.... osv


Alternativt kan du bruge string concatenation til at dele koden op i
flere linier, f.eks.:

strSQL = "Insert into .......... "
strSQL = strSQL & " (Emne) values (............. "

ASP har dog meget ringe ydelse på string concatenations og jeg vil
derfor ikke anbefale den metode til store operationer.

t

David Trasbo (28-05-2005)
Kommentar
Fra : David Trasbo


Dato : 28-05-05 10:41

> Det må du ikke. Linieskift i ASP separerer ordrer og ASP opfatter det,
> som om du har afsluttet et kommando og starter på et nyt - uden af
> afslutte din tekststreng.

Nu har jeg sat hele SQL-sætningen på èn linje. Nu får jeg fejlen:

Microsoft OLE DB Provider for ODBC Drivers fejl '80040e14'
[Microsoft][ODBC Microsoft Access-driver] Der mangler et semikolon (;) i
slutningen af SQL-sætningen.

/login/newmessage2.asp, line 44

Jeg ved umiddelbart godt hvad den betyder, men hvor skal jeg sætte
semikollonet?

--

David Trasbo.

Vær en god Usenet bruger. Læs http://usenet.dk/netikette.





Tomasz Otap (28-05-2005)
Kommentar
Fra : Tomasz Otap


Dato : 28-05-05 12:28

David Trasbo wrote:
> Nu har jeg sat hele SQL-sætningen på èn linje. Nu får jeg fejlen:
>
> Microsoft OLE DB Provider for ODBC Drivers fejl '80040e14'
> [Microsoft][ODBC Microsoft Access-driver] Der mangler et semikolon (;) i
> slutningen af SQL-sætningen.
>
> /login/newmessage2.asp, line 44
>
> Jeg ved umiddelbart godt hvad den betyder, men hvor skal jeg sætte
> semikollonet?

Udskriv din SQL-sætning, så vi kan se den. Jeg er ikke sikker på, at du
kan lave en insert med separate feltangivelser og værdier, som du gør.
Normalt skrives insert således:

INSERT INTO minTabel (feltnavn1, feltnavn2, feltnavn3)
VALUES ('værdi for felt1', 'værdi for felt2', 'værdi for felt3')

t

David Trasbo (31-05-2005)
Kommentar
Fra : David Trasbo


Dato : 31-05-05 12:06

> > Jeg ved umiddelbart godt hvad den betyder, men hvor skal jeg sætte
> > semikollonet?

> Udskriv din SQL-sætning, så vi kan se den.

Min SQL-sætning ser således ud:

strSQL = Insert into personer (Til) values('gaest')(Emne)
values('hej')(Afsender) values('Datra')(Besked) values('hej');

Skrevet på en linje.

Og til det sidste indlæg virker synstaksen stadig ikke med semikollonet, Jeg
får samme fejl.



Søren Reinke (31-05-2005)
Kommentar
Fra : Søren Reinke


Dato : 31-05-05 12:16

>
> Min SQL-sætning ser således ud:
>
> strSQL = Insert into personer (Til) values('gaest')(Emne)
> values('hej')(Afsender) values('Datra')(Besked) values('hej');

prøv med "" rundt om altså:
strSQL = "Insert into personer (Til) values('gaest')(Emne)
values('hej')(Afsender) values('Datra')(Besked) values('hej')";

--
Søren Reinke
www.Xray-Mag.com/ - Your free diving magazin on the net.
Current issue Diving in North America, 99 pages.
Download it in PDF

>
> Skrevet på en linje.
>
> Og til det sidste indlæg virker synstaksen stadig ikke med semikollonet,
> Jeg
> får samme fejl.
>
>



Jens Gyldenkærne Cla~ (31-05-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 31-05-05 13:34

David Trasbo skrev:

> Min SQL-sætning ser således ud:
>
> strSQL = Insert into personer (Til) values('gaest')(Emne)
> values('hej')(Afsender) values('Datra')(Besked) values('hej');

Den er helt gal. Syntaksen for INSERT er som følger:

INSERT INTO tabelnavn (felt1, felt2, felt3, ...)
   VALUES (værdi1, værdi2, værdi3, ...)

(der er en anden syntaks hvor man henter værdier med en select-liste,
men det skal ikke bruges her).

Du skal altså skrive noget i retning af:

INSERT INTO personer (Til, Emne, Afsender, Besked)
   VALUES ('gaest', 'hej', 'Datra', 'hej')

Se også siden her: <http://html.dk/tutorials/asp/lektion20.asp>.

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

David Trasbo (31-05-2005)
Kommentar
Fra : David Trasbo


Dato : 31-05-05 14:25

Nu ser min SQL-sætning med ASP sådan her ud:

strSQL = "Insert into tblMessages (Afsender, Til, Emne, Besked) values('" &
Request.Querystring("name") & ", " & Request.Form("Til") & ", " &
Request.Form("Emne") & ", " & Request.Form("besked") & "')"

og uden ASP:

strSQL = Insert into tblMessages (Afsender, Til, Emne, Besked)
values('gaest, Datra, hej, hej')

og fejlen er:

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

[Microsoft][ODBC Microsoft Access-driver] Antallet af forespørgselsværdier
og destinationsfelter er ikke det samme.

/login/newmessage2.asp, line 45

--

David Trasbo.

Vær en god Usenet bruger. Læs <http://usenet.dk/netikette>.



Jens Gyldenkærne Cla~ (31-05-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 31-05-05 14:56

David Trasbo skrev:

> strSQL = Insert into tblMessages (Afsender, Til, Emne, Besked)
> values('gaest, Datra, hej, hej')

Vi nærmer os - men du har i ovenstående kun én værdi - nemlig værdien:
"gaest, Datra, hej, hej". Der skal anførselstegn (apostroffer) omkring
alle tekstværdier:

Insert into tblMessages (Afsender, Til, Emne, Besked)
   values('gaest', 'Datra', 'hej', 'hej')

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

David Trasbo (31-05-2005)
Kommentar
Fra : David Trasbo


Dato : 31-05-05 15:26

Nu ser min SQL-sætning med ASP sådan her ud:

strSQL = "Insert into tblMessages ('Afsender', 'Til', 'Emne', 'Besked')
values('" & Request.Querystring("name") & "', '" & Request.Form("Til") & "',
'" & Request.Form("Emne") & "', '" & Request.Form("besked") & "')"

Og uden ASP:

strSQL = Insert into tblMessages ('Afsender', 'Til', 'Emne', 'Besked')
values('Datra', 'Datra', 'hej', 'hej')

Og fejlen jeg får er:

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

[Microsoft][ODBC Microsoft Access-driver] INSERT INTO-sætningen indeholder
det ukendte feltnavn "'Afsender'". Kontroller, at du har skrevet navnet
korrekt, og forsøg derefter at udføre handlingen igen.

/login/newmessage2.asp, line 45

Hvad går der galt nu?

--

David Trasbo.

Vær en god Usenet bruger. Læs <http://usenet.dk/netikette>.





Casper Bang (31-05-2005)
Kommentar
Fra : Casper Bang


Dato : 31-05-05 16:17

> strSQL = Insert into tblMessages ('Afsender', 'Til', 'Emne', 'Besked')
> values('Datra', 'Datra', 'hej', 'hej')

Der skal ikke abostroffer om attributternes navne :)

strSQL = Insert into tblMessages (Afsender, Til, Emne, Besked)
values('Datra', 'Datra', 'hej', 'hej')



David Trasbo (31-05-2005)
Kommentar
Fra : David Trasbo


Dato : 31-05-05 16:32

> Der skal ikke abostroffer om attributternes navne :)
>
> strSQL = Insert into tblMessages (Afsender, Til, Emne, Besked)
> values('Datra', 'Datra', 'hej', 'hej')

Nu virker det!

Tak, for hjælpen.

--
David Trasbo.
Vær en god Usenet bruger. Læs http://usenet.dk/netikette.



Tomasz Otap (01-06-2005)
Kommentar
Fra : Tomasz Otap


Dato : 01-06-05 07:53

David Trasbo proclaimed as follows:
>>strSQL = Insert into tblMessages (Afsender, Til, Emne, Besked)
>>values('Datra', 'Datra', 'hej', 'hej')
>
> Nu virker det!
>
> Tak, for hjælpen.

Helt i orden - men prøv at læse vores svar helt igennem næste gang og
teste alle de muligheder, vi nævner - du har faktisk fået løsningen på
dit problem i den fjerde post i tråden. :)

t

David Trasbo (01-06-2005)
Kommentar
Fra : David Trasbo


Dato : 01-06-05 13:27

>teste alle de muligheder, vi nævner - du har faktisk
fået løsningen på
dit problem i den fjerde post i tråden. :)

Jamen, så var det jo netop der det gik galt, for jeg har fået mange fejl.

Er der nogle der ved hvordan man kan gøre hvis der ikke er noget indhold i
en database at vise?

--
David Trasbo.
Vær en god Usenet bruger. Læs <http://usenet.dk/netikette>.



Jens Gyldenkærne Cla~ (01-06-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 01-06-05 13:56

David Trasbo skrev:

> Er der nogle der ved hvordan man kan gøre hvis der ikke er noget indhold i
> en database at vise?

Man tjekker altid for EOF (End Of File) før man udskriver fra et
postsæt:

....
Set rs = Conn.Execute(strSQL)
Do While Not rs.EOF
   Response.write rs("navn") & "<br>"
Loop

- alternativ, hvis man skal udskrive en besked i tilfælde af at der ikke
returneres poster:

Set rs = Conn.Execute(strSQL)
If rs.EOF Then
   Response.write "Ingen poster fundet"
Else
Do While Not rs.EOF
   Response.write rs("navn") & "<br>"
Loop
End If


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

David Trasbo (01-06-2005)
Kommentar
Fra : David Trasbo


Dato : 01-06-05 14:13


> ...
> Set rs = Conn.Execute(strSQL)
> Do While Not rs.EOF
> Response.write rs("navn") & "<br>"
> Loop

Hvor skal jeg placere det?

--
David Trasbo.
Vær en god Usenet bruger. Læs http://usenet.dk/netikette.



Jens Gyldenkærne Cla~ (01-06-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 01-06-05 14:31

David Trasbo skrev:

> Hvor skal jeg placere det?

Der hvor du har brug for at udskrive fra postsættet. Tag evt. en tur på
<http://html.dk/tutorials/asp/lektion19.asp>. Desværre benytter
eksemplet på siden en uheldig struktur:

   Do
    ' Udskriv data
   Loop While Not rs.EOF

- hvor der først tjekkes for EOF *efter* at løkken er løbet igennem
første gang. Det giver fejl hvis der ikke returneres data.

Man bør altid have EOF-tjekket øverst, som her:

   Do While Not rs.EOF
    ' Udskriv data
   Loop

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

Ukendt (28-05-2005)
Kommentar
Fra : Ukendt


Dato : 28-05-05 13:04


"David Trasbo" <datra@mail.dk> wrote in message
news:42983cb7$0$79452$14726298@news.sunsite.dk...
> > Det må du ikke. Linieskift i ASP separerer ordrer og ASP opfatter det,
> > som om du har afsluttet et kommando og starter på et nyt - uden af
> > afslutte din tekststreng.
>
> Nu har jeg sat hele SQL-sætningen på èn linje. Nu får jeg fejlen:
>
> Microsoft OLE DB Provider for ODBC Drivers fejl '80040e14'
> [Microsoft][ODBC Microsoft Access-driver] Der mangler et semikolon (;) i
> slutningen af SQL-sætningen.
>
> /login/newmessage2.asp, line 44
>
> Jeg ved umiddelbart godt hvad den betyder, men hvor skal jeg sætte
> semikollonet?

strSQL = "Insert into personer (Til) values('" & Request.Form("Til") & "')
(Emne) values('" & Request.Form("Emne") & "')
(Afsender) values('" & Request.Querystring("name") & "')
(Besked) values('" & Request.Form("Besked") & "');" <---------------
Semikolon

Virker Insert kommandoen med denne syntax ???
Hilsen
Bjarne



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

Månedens bedste
Årets bedste
Sidste års bedste