Hej.
behöver man lock:a och unlock:a när man skriver till en accessdatabas?, som man gör när man använder application? ...
application.unlock, application.lock..
databas
14 svar · 285 visningar · startad av Danmagnus
Nej, det behövs inte.
------------------
)|(
(o o)
-oo0-(_)-0oo-----
webeye.nu *hem*
vide@4sale.se
Behövs gör det ju kanske inte... men det är säkrast om flera användare skulle anropa samtidigt... man vill ju inte få ett onödigt felmeddelande mitt i alltihopa...
------------------
)|(
(o o)
-oo0-(_)-0oo-----
webeye.nu *hem*
vide@4sale.se
jo, men hur skriver man då?
tex om man har en SQL insert into.
och inte använder Addnew..
förresten, varför använder folk Addnew och det andra sättet att jobba med med databaser när det är så mycket krångligare?.
SQL = "Insert Into Tabell "
SQL = SQL & "(fält1, fält2) "
SQL = SQL & "VALUES('värde1', 'värde2')"
------------------
)|(
(o o)
-oo0-(_)-0oo-----
webeye.nu *hem*
vide@4sale.se
SQL:en kan jag, det är hur man lockar databasen när man skriver till den som jag vill veta. det är adlockoptimistic eller adlockpessimistic, men var lägger man in det?.
varför använder folk Addnew
Det är oftast inte snabbare när det handlar om ASP, även om det är en bättre teknik när man skapar t.ex. VB-program (ingen SQL-tolkning behövs). Däremot är det bra om man t.ex. direkt vill ha ut ett räknarvärde (ID) efter att man lagt till en post.
Kör du med "Insert Into" så behöver du inte "locka" databasen...
------------------
)|(
(o o)
-oo0-(_)-0oo-----
webeye.nu *hem*
vide@4sale.se
Tack Tack.
En grej till bara, om man har
tabellerna "ID" och "text" i en databas ("ID" är räknare)
och så lägger man in nåt med insert into, hur gör man då för att få fram "ID" numret där texten la sig?
SQL = "Select ID from tabell where text = '" & variabel_innehållande_texten & "'"
Set RS = Databas.execute(SQL)
Response.write RS("ID")
Var det nått sånt du menade?
------------------
)|(
(o o)
-oo0-(_)-0oo-----
webeye.nu *hem*
vide@4sale.se
hur gör man då för att få fram "ID" numret där texten la sig?
Se mitt ovanstående inlägg. I vissa databaser finns färdiga funktioner för detta (SQL Server etc.), men i Access är det enda sättet att skapa poster med AddNew etc, om man inte skapar en kolumn i databasen där man lägger in ett slumpvärde, som man sedan direkt söker upp.
Annars är det transaktioner som gäller.
http://www.aspfree.com/authors/briang/identitywithsql.asp
[Redigerat av emission den 02 jun 2000]
jag gjorde såhär istället
först en INSERT INTO
sen en SELECT TOP1 ID FROM lista ORDER BY ID DESC .
och då får man fram där INSERT INTO lades in.
Ja, visst får man det, men om man har flera samtidiga användare så är risken stor att del blir fel.
Jag har också haft det där problemet.
Den enda lösningen jag har kommit fram till är att göra ett recordset.
<%
dim cn,rs,sql
set cn = server.createobject("ADODB.Connection")
cn.open "databas"
SQL = "Select id,something FROM tabell WHERE something = '"&request("something")&"'"
set rs = server.createobject
("ADODB.Recordset")
rs.open SQL,cn,1,2
if rs.eof then
rs.addnew
rs("something") = request("something")
rs.update
response.write rs("id")
else
response.write "Det värdet finns redan"
end if
%>
Då addar du en post plus att du får dess id direkt. La in så att den kollade upp så att inte värdet fanns innan. Men det kan man ju ta bort.
------------------
/Magnus aka Zaphod
www.designmodule.com.bi