For det forsta, att ansluta samma databas 5 ganger ar ingen prestandforbattring, du behover endast en anslutning...
Ar dom alltid ifyllda? Formularen alltsa? Du kan ju gora en For.... Next loop.. som fyller i for varje form.... ?
10 svar · 289 visningar · startad av Pellefant
Hej!
Bara den första (id 1) vill uppdatera sig.
Hur kan man skriva om detta mycket smidigare?
<% text1 = request.Form("text1") %>
<% text2 = request.Form("text2") %>
<% text3 = request.Form("text3") %>
<% text4 = request.Form("text4") %>
<% text5 = request.Form("text5") %>
text1:<%=text1%><br>
text2:<%=text2%><br>
text3:<%=text3%><br>
text4:<%=text4%><br>
text5:<%=text5%><br>
<% Set Databas = Server.CreateObject("ADODB.Connection")
Databas.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("contest.mdb")
databas.execute "update table1 set [text] ='" & text1 & "' where id = 1"
Databas.Close %>
<% Set Databas2 = Server.CreateObject("ADODB.Connection")
Databas2.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("contest.mdb")
databas2.execute "update table1 set [text] ='" & text2 & "' where id = 2"
Databas2.Close %>
<% Set Databas3 = Server.CreateObject("ADODB.Connection")
Databas3.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("contest.mdb")
databas3.execute "update table1 set [text] ='" & text3 & "' where id = 3"
Databas3.Close %>
<% Set Databas4 = Server.CreateObject("ADODB.Connection")
Databas4.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("contest.mdb")
databas4.execute "update table1 set [text] ='" & text4 & "' where id = 4"
Databas4.Close %>
<% Set Databas5 = Server.CreateObject("ADODB.Connection")
Databas5.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("contest.mdb")
databas5.execute "update table1 set [text] ='" & text5 & "' where id = 5"
Databas5.Close %>
For det forsta, att ansluta samma databas 5 ganger ar ingen prestandforbattring, du behover endast en anslutning...
Ar dom alltid ifyllda? Formularen alltsa? Du kan ju gora en For.... Next loop.. som fyller i for varje form.... ?
Fick det att funka nu, vet inte varför det strulande innan.
Tack
<% Set Databas = Server.CreateObject("ADODB.Connection")
Databas.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("contest.mdb")
databas.execute "update table1 set [text] ='" & text1 & "' where id = 1"
databas.execute "update table1 set [text] ='" & text2 & "' where id = 2"
databas.execute "update table1 set [text] ='" & text3 & "' where id = 3"
databas.execute "update table1 set [text] ='" & text4 & "' where id = 4"
databas.execute "update table1 set [text] ='" & text5 & "' where id = 5"
Databas.Close %>
ett annat tips, kor med den "nya" db-kopplingen.... ska vara lite snabbare!
Den "nya"?
Så här kanske?
Set Databas = Server.CreateObject("ADODB.Connection")
Databas.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("contest.mdb"))
Dim i
i=1
for i=1 to 5
databas.execute "update table1 set [text] ='"& request("text"& i &"") &"' where id ="& i
next
Databas.Close
Tack för alla tips :)
Finns det ingen möjlighet att skapa nån form av jätte-sql-fråga så man kan uppdatera allt i en exekvering?
Menar typ nått sånt här:
update table1 set [text] ='" & text1 & "',
(update table1 set [text] ='" & text2 & "' where id = 2),
(update table1 set [text] ='" & text3 & "' where id = 3),
(update table1 set [text] ='" & text4 & "' where id = 4),
(update table1 set [text] ='" & text5 & "' where id = 5),
where id = 1
LarsG kanske vet ;) :OO :stud ?
Det var sa jag menade med den kod Jesper skrev... Men fick inget ritkigt svar innan..... ;) Men sa ar nog bast. Och nej, man kan inte gora en san "jatte sql" hehe.... :)
I SQL-Server kan du bygga flera SQL-satser i en semikolonseparerad lista, men i Access är jag skeptisk.
Ok... Tack för det vide ;)