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