Hej! function doedit(id, post, laggatill, connection) Tack för svaret, men det vill sig inte. Tack, nu kom jag ett steg framåt! Nu är det löst. Värt att tänka på när man konkatenerar strängar i VB/VBScript. Helt rätt, får skylla på att jag enbart har jobbat i C# senaste året... :)Multieditering i databas
Ponera följande scenario. I databasen "db/databas.mdb" finns en tabell med namnet "tabell1", där det finns en kolumn med namnet "variabel".
Hur gör jag för att på ett enkelt sätt ändra värdet på databas.mdb-tabell1-variabel för ett specifikt ID (säg ID = 50, för diskussionens skull).
Jag ska göra massor av ändringar i samma tabell, så det ultimata vore något liknande:
<%
'Connection-grejer och dylikt som behövs för att komma åt databas.mdb
function doedit(id, post, laggatill)
'Och här kommer det jag vill ha hjälp med
end function
'och sedan typ:
doedit(50, 'variabel', 12)
Ovanstående rad skulle alltså öka värdet i den sökta posten med 12 (det är enbart numeriska värden i hela tabellen).
Ytterst tacksam för svar!Sv: Multieditering i databas
connection.Execute "UPDATE tabell1 SET " + post + " = " + post + " + " + laggatill + " WHERE ID = " + id
end function
/JohanSv:Multieditering i databas
Använder följande kod:
<%
function doedit(id, post, laggatill, connection)
connection.Execute "UPDATE statdata_org SET " + post + " = " + post + " + " + laggatill + " WHERE ID = " + id
end function
Response.Buffer = true
set cnn = Server.CreateObject("ADODB.Connection")
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath("db/statistik.mdb")
doedit(129, "MLAlag", 1, cnn)
%>
Och får följande felmeddelande:
Microsoft VBScript compilation error '800a0414'
Cannot use parentheses when calling a Sub
/st/nymatch.asp, line 18
doedit(129, "MLAlag", 1, cnn)
-----------------------------^
Tack,
BjörnSv:Multieditering i databas
Nästa fel är som följer:
Microsoft VBScript runtime error '800a000d'
Type mismatch: '[string: "UPDATE statdata_org "]'
/st/nymatch.asp, line 10
Och på nymatch.asp rad 10:
connection.Execute "UPDATE statdata_org SET " + post + " = " + post + " + " + laggatill + " WHERE ID = " + id
Du är säker på att jag satt rätt med:
Response.Buffer = true
set cnn = Server.CreateObject("ADODB.Connection")
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath("db/statistik.mdb")
doedit 129, "MLAlag", 1, cnn
Att det är "cnn" som ska skickas med? Sökvägen är korrekt.
Grymt med snabba svar!
Tack - BjörnSv: Multieditering i databas
Använde följande:
<%
function doedit(id, post, laggatill, connection)
connection.Execute "UPDATE statdata_org SET " + post + " = " + post + " + " + laggatill + " WHERE ID = " + id
end function
Response.Buffer = true
set cnn = Server.CreateObject("ADODB.Connection")
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath("db/statistik.mdb")
doedit "129", "MLAlag", "1", cnn
%>
Ytterst tacksam för hjälpen!Sv:Multieditering i databas
<code>
connection.Execute "UPDATE statdata_org SET " + post + " = " + post + " + " + laggatill + " WHERE ID = " + id
</code>
Fungerar så länge någon av variablerna inte är tal. Om t ex "id" är 1, då försöker man göra en aritmetisk beräkning där "massa text" + 1 skall beräknas, detta fungerar ju inte. Genom att göra som du gjorde, sätta " runt talen när du skickar in dem i funktion är ett sätt att lösa det, ett annat kan vara att använda & istället för +.
<code>
connection.Execute "UPDATE statdata_org SET " & post & " = " & post & " + " & laggatill & " WHERE ID = " & id
</code>
Då kan du skicka in id som tal (1) eller som sträng ("1")..
/FSv: Multieditering i databas
/Johan