Avatar billede andersb Nybegynder
11. oktober 2001 - 10:04 Der er 6 kommentarer og
1 løsning

Opdatering af database vha. addNew eller insert

Jeg har tidligere kunne bruge connection.execute(\"insert into ...\") uden problemer med PWS + Access 98.
Nu er jeg overgået til IIS + Access 2000 og problemerne hagler ned over mig.
Eksempel:
<%  @language=\"vbscript\" %>
<% option explicit %>

<% \' use this meta tag instead of ADOVBS.inc%>
<!-- METADATA TYPE=\"typelib\" uuid=\"00000205-0000-0010-8000-00AA006D2EA4\"  -->

<%
Dim objConn, objRS, strQ, strConn, strOutput

Set objConn = Server.CreateObject(\"ADODB.Connection\")
objConn.Open \"northwind\"

set objRS = Server.CreateObject(\"ADODB.RecordSet\")
call objRs.open(\"speditionsfirmaer\", objConn, adOpenKeyset, adLockOptimistic, adCmdTable)

dim names(2), values(2)
\' http://www.w3schools.com/vbscript/vbscript_variables.asp
\'    dim arr(n) => arr has n+1 elements arr(0)...arr(n)
names(0) = \"Speditionsfirmanr\"
values(0) = 4
names(1) = \"Firmanavn\"
values(1) = \"AB Transport\"
names(2) = \"Telefon\"
values(2) = \"123456\"

call objRS.addNew(names, values)

%>
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">

<html>
<head>
    <title>Untitled</title>
</head>

<body>

</body>
</html>
Svar:
Fejltype:
      Microsoft OLE DB Provider for ODBC Drivers (0x80040E21)
      Der opstod en eller flere fejl ved en OLE DB-handling på flere
      trin. Kontroller alle OLE DB-statusværdier. Handlingen blev ikke
      udført.
      /anders/addNew.asp, line 26

Jeg vil også være meget tilfreds med et svar der viser hvordan jeg kan bruge conn.execute(\"insert ...\")

- Anders
Avatar billede eagleeye Praktikant
11. oktober 2001 - 10:10 #1
Slet dette:
call objRs.open(\"speditionsfirmaer\", objConn, adOpenKeyset, adLockOptimistic, adCmdTable)

dim names(2), values(2)
\' http://www.w3schools.com/vbscript/vbscript_variables.asp
\'    dim arr(n) => arr has n+1 elements arr(0)...arr(n)
names(0) = \"Speditionsfirmanr\"
values(0) = 4
names(1) = \"Firmanavn\"
values(1) = \"AB Transport\"
names(2) = \"Telefon\"
values(2) = \"123456\"

call objRS.addNew(names, values)


Og benyt dette:

strSQL = \"INSERT INTO speditionsfirmaer (Speditionsfirmanr, Firmanavn, Telefon) VALUES (4, \"AB Transport\", \"123456\");\"

objConn.Execute(strSQL)
Avatar billede eagleeye Praktikant
11. oktober 2001 - 10:11 #2
du skal lige hvde strSQL op i din Dim linie..
Avatar billede nute Nybegynder
11. oktober 2001 - 10:13 #3
eagleeye >> nja....mangler også en connectionstring:

uha....jeg er ikke tilhenger av addNew metoden. Dette er et merkelig MS hack som gjør at flesteparten av brukerne ikke læreer seg SQL (som er standard språk for kommunikasjon med databaser). Du skriver at du tidligere har benyttet INSERT INTO. Hvorfor har du ikke bare gjort det samme her ?

<%
Dim objConn, objRS, strQ, strConn, strOutput

Set objConn = Server.CreateObject(\"ADODB.Connection\")
dbConn = \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & Server.MapPath(\"dinDatabase.mdb\")
objConn.Open dbConn

SQL = \"INSERT INTO speditionsfirmaer ( Speditionsfirmanr,  firmanavn, Telefon) VALUES ( 4, \'AB Transport\', \'123456\' )
Conn.Execute ( SQL )
%>

/nute
Avatar billede nute Nybegynder
11. oktober 2001 - 10:14 #4
hov...Conn.Execute ( SQL ) skal være objConn.Execute ( SQL )
Avatar billede eagleeye Praktikant
11. oktober 2001 - 10:14 #5
connection er i denne linie:

objConn.Open \"northwind\"

Avatar billede andersb Nybegynder
11. oktober 2001 - 13:07 #6
Jeg har også prøvet INSERT i stedet for \"addNew\" - det var faktisk det jeg startede med - og som jeg helst vil have til at virke:

<% @language=\"vbscript\" %>
<% option explicit

Dim objConn, strSQL

Set objConn = Server.CreateObject(\"ADODB.Connection\")
objConn.Open \"northwind\"

strSQL = \"INSERT INTO speditionsfirmaer (Speditionsfirmanr, Firmanavn, Telefon) VALUES (4, \'AB Transport\', \'123456\')\"

objConn.Execute(strSQL)
%>
Svar fra IIS:
Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Microsoft Access-driver] Handlingen skal bruge en opdaterbar forespørgsel.
/anders/wsp/asp/database/adoInsert.asp, line 11

Hvad er \"en opdaterbar forespørgsel\" - og hvordan laver jeg en sådan??
- Anders
Avatar billede eagleeye Praktikant
11. oktober 2001 - 13:29 #7
er database eller den folder som databasen ligge i skrive beskyttet.

Det betyder du skal skal skrive rettigheder til databasen eller folderen.

kik evt her (dog ikke punkt 2):
http://support.microsoft.com/directory/article.asp?ID=KB;EN-US;Q175168
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