Avatar billede cape Nybegynder
20. oktober 2000 - 18:22 Der er 38 kommentarer og
2 løsninger

Insert-problem ?

Jeg har et problem !!
Kan ikke finde fejlen - her er koden .-

<% @ LANGUAGE = VBSCRIPT LCID=1030 %>
<% OPTION EXPLICIT %>

<!-- #include file=\"adovbs.inc\" -->


<HTML>
<HEAD><TITLE>Vis indtastede data</TITLE>

</HEAD>

<BODY>
<H2>Du har indtastet følgende oplysninger:</H2>

<%
Dim noegle
For Each noegle In Request.Form
  Response.write(noegle & \" : \" & Request.Form(noegle) & \"<br>\")
Next
%>

<%
dim connectionString
connectionString = \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.MapPath(\"cs2000.mdb\")
dim forbindelse
set forbindelse = Server.CreateObject(\"ADODB.Connection\")    \' Nutshell side 162.
forbindelse.Open(connectionString)


dim command
set command = Server.CreateObject(\"ADODB.Command\")
command.ActiveConnection = connectionString

dim fkundenavn
set fkundenavn=request.form(\"kundenavn\")
dim fkundeadr
set fkundeadr=request.form(\"kundeAdr\")
dim fpostnr
set fpostnr=request.form(\"postnr\")
dim fby
set fby=request.form(\"by\")
dim ftlf
set ftlf=request.form(\"tlf\")
dim femail
set femail=request.form(\"email\")


command.CommandText = \"insert into Kunde (kundenavn, kundeadr, postnr, by, tlf, email) values (\'\"&fkundenavn&\"\',\'\"&fkundeadr&\"\',\'\"&fpostnr&\"\',\'\"&fby&\"\',\'\"&ftlf&\"\',\'\"&femail&\"\')\"
command.CommandType=adCmdText
command.Execute

forbindelse.close()
set forbindelse = Nothing
%>


</BODY>
</HTML>

Fejlen siger : Microsoft OLE DB Provider for ODBC Drivers error \'80040e14\'

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

Hjælp mig !!
Avatar billede thewicked Nybegynder
20. oktober 2000 - 18:29 #1
Prøv med

SqlQ = \"Insert into kunde(kundenavn,.....)values(\"
SqlQ = SqlQ & \"\'\" & RQ_fkundenavn& \"\'\" & \",\"
.
.
SqlQ = SqlQ & \"\'\" & RQ_femail& \"\')\"
connectionString .execute(SqlQ)
Avatar billede stigc Nybegynder
20. oktober 2000 - 18:32 #2
hvilken databse bruger du? \"by\" er ivhertilfalde ikke tilladt i mySql msSql. Men det er jo ikke det fejlen går på.

Kan det være de mellemrum du ikke bruger, eller dit linieskift?
Avatar billede thewicked Nybegynder
20. oktober 2000 - 18:34 #3
Eller...

Jeg kan se at du har \' \' tegn ved postnr - hvis postnummeret er angivet som talværdi i tabellen så laver den også bøvl

Så hvis det er tilfældet, så fjern de derens \' tegn..... hvad hedder forresten ? :)
Avatar billede stigc Nybegynder
20. oktober 2000 - 18:36 #4
jeg mener man må sætte \' ved alle typer. Strings som
Integers

Hedder de ikke \"ping\"
Avatar billede cape Nybegynder
20. oktober 2000 - 18:38 #5
Jeg bruger acces-database
Avatar billede cape Nybegynder
20. oktober 2000 - 18:44 #6
hmmm det virker ikke \"thewicked\"
og det virker heller ikke med fjernelse af \' både med post eller alle !
Avatar billede thewicked Nybegynder
20. oktober 2000 - 18:50 #7
Prøv at skrive response.write SqlQ lige under Sql-strengen. og se hvad den spytter ud på skærmen.

Så kunne du lige copy, paste det den printer ud, her ind :)

og Stigc man må ikke sætte \"ping\" rundt om talværdier - sorry
Avatar billede cape Nybegynder
20. oktober 2000 - 18:54 #8
Det er hvad den skriver !!
Microsoft VBScript runtime error \'800a01a8\'

Object required: \'DRIVER={Microsoft Ac\'

min database connect ser sådan ud

<%
dim connectionString
connectionString = \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.MapPath(\"cs2000.mdb\")
dim forbindelse
set forbindelse = Server.CreateObject(\"ADODB.Connection\")    \' Nutshell side 162.
forbindelse.Open(connectionString)


dim command
set command = Server.CreateObject(\"ADODB.Command\")
command.ActiveConnection = connectionString

Avatar billede thewicked Nybegynder
20. oktober 2000 - 18:58 #9
Fjern din connection og insert børge paste dette her ind i din kode - så printer den med \"garanti\" dine variabler ud :)

set connectionString =server.createobject(\"adodb.connection\")
    path=\"DBQ=\" & server.mappath(\"cs2000.mdb\")
    connectionString .Open \"DRIVER={Microsoft Access Driver (*.mdb)}; \" & path, 1, 3

SqlQ = \"Insert into kunde(kundenavn,.....)values(\"
SqlQ = SqlQ & \"\'\" & RQ_fkundenavn& \"\'\" & \",\"
.
.
SqlQ = SqlQ & \"\'\" & RQ_femail& \"\')\"
response.write SqlQ
connectionString .execute(SqlQ)
Avatar billede cape Nybegynder
20. oktober 2000 - 19:03 #10
hmmm den er vist fuldt med fejl !!
Avatar billede cape Nybegynder
20. oktober 2000 - 19:05 #11
hvordan tildeles sqlQ en variabel ???
Avatar billede thewicked Nybegynder
20. oktober 2000 - 19:05 #12
Er min kode fuld med fejl - nej fandme nej :)
Avatar billede cape Nybegynder
20. oktober 2000 - 19:07 #13
jo desværre :))
Avatar billede thewicked Nybegynder
20. oktober 2000 - 19:09 #14
Nej den er ikke din pode - vis mig fejlen !!!
Avatar billede cape Nybegynder
20. oktober 2000 - 19:11 #15
Microsoft VBScript runtime error \'800a01f4\'

Variable is undefined: \'SqlQ\'
Avatar billede thewicked Nybegynder
20. oktober 2000 - 19:14 #16
Variablen defineres ved, og hold nu godt fast,
\"connectionString .execute(SqlQ) execute(SqlQ)\"

men hvis der er et mellenrum mellem connectionString og .execute(SqlQ) må du nok heller fjerne det - hvis det er tilfældet, så må du undskylde :)
Avatar billede thewicked Nybegynder
20. oktober 2000 - 19:16 #17
Nej undskyld  \"connectionString.execute(SqlQ)\"
Avatar billede cape Nybegynder
20. oktober 2000 - 19:20 #18
hmmm det virker sgu stadig ikke !!
hvor i koden skal connectionString.execute(SqlQ) står for jeg får den samme fejl ???

Avatar billede cape Nybegynder
20. oktober 2000 - 19:26 #19
jeg har lige et spørgsmål !!
Skal
SqlQ = \"Insert into kunde(kundenavn,.....)values(\" SqlQ = SqlQ & \"\'\" & RQ_fkundenavn& \"\'\" & \",\" o.s.v

Det skal se således ud ik ´`?

Avatar billede cape Nybegynder
20. oktober 2000 - 19:28 #20
med den kode før for jeg nu en ny fejl !!Expected end of statement

SqlQ = SqlQ & \"\'\" & RQ_femail& \"\')\"  )
-------------------------------------^

Avatar billede thewicked Nybegynder
20. oktober 2000 - 19:30 #21
Hej jeg har lige skåret ned på din kode... dette skulle virke og hvis det ikke gør, så er det pga dine tabelindstillinger.

Fjern den gamle kode og paste denne kode ind.. ok

<!-- #include file=\"adovbs.inc\" -->
<%
\'Database connect
set Connection=server.createobject(\"adodb.connection\")
path=\"DBQ=\" & server.mappath(\"cs2000.mdb\")
Connection.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; \" & path, 1, 3

\'Insert dine variabler
SqlQ= \"INSERT INTO Kunde (kundenavn, kundeadr, postnr, by, tlf, email) VALUES (\"
SqlQ = SqlQ & \"\'\" & request.form(\"kundenavn\") & \"\'\" & \",\"
SqlQ = SqlQ & \"\'\" & request.form(\"kundeAdr\") & \"\'\" & \",\"
SqlQ = SqlQ & \"\'\" & request.form(\"postnr\") & \"\'\" & \",\"
SqlQ = SqlQ & \"\'\" & request.form(\"by\") & \"\'\" & \",\"
SqlQ = SqlQ & \"\'\" & request.form(\"tlf\") & \"\'\" & \",\"
SqlQ = SqlQ & \"\'\" & request.form(\"email\") & \"\')\"
response.write SqlQ
Connection.execute(SqlQ)


\'Lukker forbindelsen
Connection.close
Set Connection = Nothing
%>
Avatar billede cape Nybegynder
20. oktober 2000 - 19:40 #22
hmm ny fejl !!Microsoft OLE DB Provider for ODBC Drivers error \'80040e14\'

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

hmmm hvad siger du til det ???
Avatar billede erikjacobsen Ekspert
20. oktober 2000 - 19:43 #23
Den attribut må ikke hedde by. Døb den om til noget andet.
Avatar billede thewicked Nybegynder
20. oktober 2000 - 19:44 #24
Aha - så er det sikkert fordi at din tabel(Kunde ) indeholder en eller flere talværdier

Check din tabel og hvis der er tal værdier så lav dem om til tekst.

Et andet problem kunne også være at hvis der ikke må være en nul-værdi i dine kolonner kan det også skabe problemer hvis man prøver at sætte en tom værdi ind.

Under alle omstændigheder, så skulle den gerne have udskrevet SqlQ strengen, gider du at poste den :)
Avatar billede thewicked Nybegynder
20. oktober 2000 - 19:46 #25
\"at hvis der ikke må være en nul-værdi i dine kolonner \" - undskyld - det jeg mente var at hvis du prøver at indsætte ingenting i et felt der ikke har NUL-værdien slået fra kan det skabe problemer
Avatar billede cape Nybegynder
20. oktober 2000 - 19:47 #26
INSERT INTO Kunde (kundenavn, kundeadr, postnr, by, tlf, email) VALUES (\'w\',\'\',\'\',\'\',\'\',\'\')
Microsoft OLE DB Provider for ODBC Drivers error \'80040e14\'

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

...., line 58
Avatar billede thewicked Nybegynder
20. oktober 2000 - 19:47 #27
Hvorfor må attributten ikke døbes by ?
Avatar billede thewicked Nybegynder
20. oktober 2000 - 19:48 #28
Aha - felterne \"kundeAdr, postnr, by, tlf, email\"
har ingen værdi... prøv at tildele dem en værdi og prøv igen.
Avatar billede cape Nybegynder
20. oktober 2000 - 19:51 #29
har prøvet INSERT INTO Kunde (kundenavn, kundeadr, postnr, by, tlf, email) VALUES (\'w\',\'w\',\'w\',\'w\',\'w\',\'w\')
Microsoft OLE DB Provider for ODBC Drivers error \'80040e14\'

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

/cs191277/cs2000/godkendKbsordre1.asp, line 58
Avatar billede thewicked Nybegynder
20. oktober 2000 - 19:53 #30
Alt hvad jeg kan sige er at selve Sql-strengen er ok - du bliver nød til at gennemgå din tabel for talværdier - Sorry
Avatar billede cape Nybegynder
20. oktober 2000 - 20:03 #31
ok tak for hjælpen - selvom det ikke virkede !!
Du får nok pointene alligevel - bare for forsøget :))
Avatar billede cape Nybegynder
20. oktober 2000 - 20:27 #32
Er der ingen andre der kan løse dette problem ?????
Avatar billede erikjacobsen Ekspert
20. oktober 2000 - 21:00 #33
Jamen, hør dog. Dit felt i databasen kan ikke hedde  by  for det er et
reserveret ord i SQL  (order by). Det er syntaksfejlen. Det nemmeste
er at kalde det, øh, bynavn i stedet for.
Avatar billede cape Nybegynder
20. oktober 2000 - 22:22 #34
hmm ok ! men det forstår jeg sgu bedre !!
men nu får jeg fejlen :
Microsoft OLE DB Provider for ODBC Drivers error \'80004005\'

[Microsoft][ODBC Microsoft Access Driver] Field \'Kunde.Bynavn\' cannot be a zero-length string.

kan du hjælpe mig med den ???
Avatar billede stigc Nybegynder
20. oktober 2000 - 22:31 #35
hvis det er svaret, så er er mit tidligere (afviste)svar jo rigtigt!
Med hensyn til

\"[Microsoft][ODBC Microsoft Access Driver] Field \'Kunde.Bynavn\' cannot be a zero-length string. \"

Så prøver du vel at indsætte \"\" (altså ingen ting), hvilket du ikke må!

Avatar billede cape Nybegynder
20. oktober 2000 - 22:36 #36
Ja - det ser sådan ud !!

Men hvorfor tager den lige fat i Bynavn og ikke kundenavn og kundeadr som er ens i struktur ??
og hvordan løser jeg dette ?
Det er jo løsningen der giver point ik´:)
Avatar billede cape Nybegynder
20. oktober 2000 - 22:40 #37
Hmmm - jeg fik det til at virke !!
og Erik er igen manden...
og til stigc - hmmm ja måske er det rigtigt hvad du siger, men det virker altså ....
Avatar billede erikjacobsen Ekspert
20. oktober 2000 - 23:12 #38
Du kan sagtens i din definition i Access have sat den der \"bynavn\" til ikke at
måtte være tom. Det er en lidt sjov ting, som Access vist nok har som default.
Prøv lige at sammenligne de felters definition.
Avatar billede stigc Nybegynder
20. oktober 2000 - 23:14 #39
cape>> det jeg siger, er at det med \"by\" kom jeg ind på i mit første svar!
Avatar billede erikjacobsen Ekspert
20. oktober 2000 - 23:22 #40
Det gjorde du faktisk, stigc - det havde jeg nu ikke set. Men du var ikke så
sikker, vel. Det er faktisk det, der får den til at sige Syntax error in INSERT INTO statement
Forkerte stroffer giver en anden slags fejl. Efter jeg for nogle år siden også li\'som
havde det problem i noget kode, har jeg da vist tjent en del point på at hjælpe
folk med det ;-)
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