webForumDet fria alternativet
Logga in / Bli medlem

rs.Update eller sql= "Update...

ASP

8 svar · 236 visningar · startad av Lina

Medlem sedan jan. 2001332 inlägg
Trådstart#1

Vad är egentligen att föredra?

Skall man skapa ett rs som man sedan uppdaterar eller skal man göra uppdateringen redan i sql-satsen...

Är det någon prestandavinst med ena eller andra sättet???

Medlem sedan dec. 20003 563 inlägg
#2

Det bästa är att köra en execute.
SQL = "UPDATE a SET a = 'a'"
Man märker ganska snabbt att det är en hel del mindre kod att köra än att skapa ett recSet första och sen...

Medlem sedan dec. 19995 874 inlägg
#3

Jag skulle föredra

connection.execute("Update...")

Öppet RS tror jag bara bör användas när det verkligen behövs. Exempelvis om du behöver hålla det öppet för att kunna hämta en precis nyskapad post.

Medlem sedan jan. 2001332 inlägg
#4

Åh! Det där med att öppna en nyskapad post hade jag inte tänkt på..... :e

Medlem sedan dec. 20003 563 inlägg
#5

Brimba: Det var så jag menade.
SQL = "SELECT äsajdäl"
conn.execute SQL
Samma sak

Ett "Öppet RS" används nästan aldrig.
Det brukar nästan alltid finnas andra bättre metoder.

Medlem sedan dec. 19995 874 inlägg
#6

cyprus. Notera tiden för våra svar. Jag visste inte att du hade svarat när jag skrev mitt inlägg :)

Hur som helst så tycker jag nog ändå att det är befogat ibland som sagt.

Låt säga att man har en räknare och ett fält. Sedan lägger man till information i fältet och vill hämta ut räknarens nummer, hur gör man det?

rs.addnew
rs("falt") = "info"
rs.update
session("raknare") = rs("counter")
rs.close

på det viset så får man det räknarnummer i det fält som man la till "info". Medan om man gör exempelvis

connection.execute("insert into..")
set RS = connection.execute("select counter .. Order by counter DESC")
session("raknare") = RS("counter")

så är det stor risk att någon annan också har lagt till ett fält, och därmed får man det räknartalet istället.

Det finns sätt att kringå detta. men mitt översta sätt tycker jag fungerar utmärkt.

Medlem sedan dec. 20003 563 inlägg
#7

Såg ej. Drar mig snällt tillbaka. :)

Medlem sedan mars 20002 836 inlägg
#8

går ju med detta:

objConn.Execute(strSQL)

strSQLcounter = "SELECT @@IDENTITY"
Set objRS = objConn.Execute(strSQLcounter)
intCounter = objRS(0)
Set objRS = Nothing

om man inte vill använda sig av adodb.recordset metoden *ler*

cya,
PatrikB

Medlem sedan dec. 19996 721 inlägg
#9

.....om man kör Access 2000 el. SQL Server

254 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)