Avatar billede muggel Nybegynder
31. oktober 2005 - 20:51 Der er 17 kommentarer

problemer med INSERT INTO

Hej med jer,

Jeg har problemer med at afvikle INSERT INTO forespørgsler.
Jeg har skrevet følgende eksempel for at se om jeg kunne få det til at virke på en måde som virkede for mig på tidligere versioner af IIS

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
Dim xx
xx = request.Form("hej")

Dim objConn
Set objConn = Server.CreateObject("ADODB.connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.MapPath("../data/salg.mdb")

Dim sql
sql = "INSERT INTO noget (hej) VALUES ("& xx &");"

objConn.execute sql

%>
jeg får følgende fejl:

Microsoft JET Database Engine (0x80040E10)
Der er ikke angivet nogen værdi for en eller flere krævede parametre.
/asdfasdf/test.asp, line 13

line 13 er "objConn.execute sql"

jeg har læst noget dokumentation hvor der står at man kan angive to parametre men at de er optional.

Er der nogen der har et bud på hvad jeg skal gøre?
Avatar billede kalp Novice
31. oktober 2005 - 21:12 #1
sql = "INSERT INTO noget (hej) VALUES ('"& xx &"');"
Avatar billede kalp Novice
31. oktober 2005 - 21:13 #2
ellers er det

sql = "INSERT INTO noget (hej) VALUES ("'& xx &'");"

der skal i hvertfald '' rundt om tekst.
Avatar billede plx Nybegynder
31. oktober 2005 - 21:14 #3
Prøv med

Response.Write sql

og kontroller, at der rent faktisk ligger noget i xx
Avatar billede kalp Novice
31. oktober 2005 - 21:15 #4
glem kommentar nr. 2.. den første er rigtig nok.
Avatar billede muggel Nybegynder
31. oktober 2005 - 21:43 #5
det er et tal så der skal ikke være i ""
sætningen ser sådan her ud når man udskriver den.
INSERT INTO noget(hej)VALUES(7);
Det ser umiddelbart også rigtigt ud

tilgengæld har jeg prøvet at skrive "objConn.execute(sql)" istedet for
"objConn.execute sql " Hvilket giver en anden fejl

Fejltype:
Microsoft JET Database Engine (0x80004005)
Handlingen skal bruge en opdaterbar forespørgsel.
/asfasdf/test.asp, line 14

jeg tror umiddelbart at "objConn.execute(sql)" er den rigtige måde at skrive det på, men ved ikke hvad jeg skal stille op med den nye fejl!?
Avatar billede kalp Novice
31. oktober 2005 - 21:55 #6
prøv denne forbindelse


Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="&Server.MapPath("../data/salg.mdb")
Avatar billede muggel Nybegynder
31. oktober 2005 - 22:03 #7
Det hjælper desværre ikke
Avatar billede softspot Forsker
31. oktober 2005 - 22:12 #8
Du skal have mellemrum mellem ) og VALUES i din SQL-sætning.

En kommentar til funktionskald med og uden parantes.

Når du bruger VBScript må funktionkald ikke omstilles af parantes (rent faktisk gælder det for kald til alle subs og de functions hvis returnværdi ikke tildeles en variabel). Grunden til at det nogle gange fungerer alligevel, er fordi der kun er netop én parameter til funktionen og den derfor bliver opfattet som en grupperet expression (hvilket er det samme som ikke at omkranse parameteren med parantes). Hvis du vil benytte parantes om parametre til subs og functions i de to tidligere nævnte former, skal du benytte call foran kaldet, det vil ophæve de restriktioner jeg lige har nævnt.

Derfor skal du benytte det format som du benyttede tidligere, nemlig den uden paranteser.
Avatar billede softspot Forsker
31. oktober 2005 - 22:13 #9
Er det i øvrigt den rigtige SQL du viser der eller har du valgt at lave den om for ikke at afsløre for meget herinde...?
Avatar billede muggel Nybegynder
03. november 2005 - 16:42 #10
Det er den rigtigt SQL som er i det eksempel jeg har lavet for at se om jeg kan få det til at virke.

Det gør ingen forskel om jeg har mellemrum mellem ) og values. Får stadigvæk fejlen:
"Microsoft JET Database Engine (0x80004005)
Handlingen skal bruge en opdaterbar forespørgsel."

Jeg har prøvet at ligge en gammel asp-applikation ind på den IIS jeg har installeret pt. og her får jeg præcis det samme problem med "INSET INTO..."-sætninger, mens der ikke er noget problem med SELECT sætninger. Det lugter jo lidt af at det er noget specifikt i forhold til ISS. (Det er version 5.1 jeg bruger)
Avatar billede muggel Nybegynder
03. november 2005 - 16:44 #11
Det skal siges at der ikke var nogen problemer med den gamle asp-applikation da den kørte på en ældre version af IIS
Avatar billede inglenook Praktikant
03. november 2005 - 17:27 #12
1) fjern simikolon i slutningen af din sql streng
2) hvilke rettigheder har den bruger du connecter til databasen med ?
Avatar billede inglenook Praktikant
03. november 2005 - 17:29 #13
simikolon=semikolon
Avatar billede softspot Forsker
03. november 2005 - 17:43 #14
Ja, det lyder som om IUSR ikke har rettigheder til at skrive i den folder hvor databasen ligger (og det er jo nødvendigt hvis data skal opdateres).
Avatar billede softspot Forsker
03. november 2005 - 17:44 #15
...og nej, jeg tror ikke det hjælper at fjerne semikolon... :)
Avatar billede muggel Nybegynder
04. november 2005 - 19:21 #16
Hvordan er det lige jeg checker det(med IUSR)?
Troede at det var inde under egenskaber for mappen men der er kan man tilsyneladende ikke stille på tilladelser for brugere.
Avatar billede softspot Forsker
04. november 2005 - 21:49 #17
Er det en Windows NT version (4.0,2000,XP,2003) din server kører? Hvis ja, er filsystemet så NTFS? Hvis ja, så burde det kunne findes i egenskaber under fanen "sikkerhed"...
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