21. januar 2003 - 13:48Der er
8 kommentarer og 2 løsninger
Åbning af flere RecordSet
Hej jeg har et problem med nogle RecordSets. Hvorfor får jeg en "File Allready in use" fejl når jeg forsøger at åbne 2 RecordSet i på den samme side? Det ser sådan her ud: --------------- Dim conn conn = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=d:\Inetpub\wwwroot\xxxx\xxx.mdb" '; uid=; pw=;"
set rs = Server.CreateObject("ADODB.Recordset") Sql = "Select count(*) as Found from Billeder Where Lillebillede <> null" rs.Open Sql, conn, adLockOptimistic Session("Ialt") = rs("found")
********Noget kode***************
Set rs2 = Server.CreateObject("ADODB.Recordset") Sql2 = "Select * FROM Billeder Where Lillebillede <> null" rs2.Open Sql2, conn, adLockOptimistic
********Noget kode***************
Set rs3 = Server.CreateObject("ADODB.Recordset") Sql3 = "Select * FROM Varer Where ID=" & id & " ORDER BY ID DESC" rs3.Open Sql2, connStr, adOpenKeyset, adLockOptimistic ------------- Jeg får så omtalte fejl på linien der begynder med "rs2.Open"... Og udkommentere jeg det så får jeg den på "rs3.Open"... HVORFOR ????????
Ja, men giver det ikke en masse problemer med alle de connections? Jeg "reloader" siden pr. 8 sekund for at får et nyt billede frem. og der er 3 sider ved siden af hinaden i nogle rammer, så det giver jo en del connections - og hvad nu hvis fx. 5 brugere sidder på siden samtidig så er det jo 5*3 sider der reloader hvert 8 sekund. Vil det ikke give problemer?
alt hvad du laver på en hjemmeside vil jo belaste....
bruger du ovenstående kode - eller bare generelt alt med database-conn - skal du jo huske at lukke forbindelsen bagefter med;
conn.Close Set conn = Nothing
så vil det selvfølgelig belaste at du skal lave 3 sql'er, men husker du at lukke din forbindelse vil det hjælpe noget på det. Endelig _kan_ det jo være at man kan nøjes med to eller én sql
Ja, det kan godt være jeg kan korte én af, men hvordan tæller jeg poster i DB'en hvis ikke det er på denne måde?: ------------ *******noget kode********* Sql = "Select count(*) as Found from Billeder Where Lillebillede <> null" Set rs = Conn.Execute(Sql) Session("Ialt") = rs("found") *******Mere kode********* --------------
Jeg er lidt "bange" for at bruge: ---- SQL = "SELECT ....;" Set rs = Conn.Execute(SQL2) ---- For jeg ved ikke om man ikke blokerer for hinanden? Kan kan "Conn.Execute(SQL2)" med adOpenKeyset, adLockOptimistic bagefter?
Nu kan jeg se du bruger denne: -------- conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("database.mdb") --------- er den bedre end den jeg bruger som er: -------- <!--#include file="adovbs.inc" --> <% strDSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=d:\Inetpub\wwwroot\xxxxx.dk\xxxx.mdb; uid=; pw=;" Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open strDSN, adLockReadOnly, adLockOptimistic %> ----------- eller har det ingen betydning?
det er bedre at bruge jet-provideren end access-driveren
jet er den egentlige database hvorimod access kun er en frontend til databasen jet, så bruger du accessdriveren går du først til access og så i jet - på den anden måde går du direkte i jet
Fedt nok :-) Men jeg har forsøgt at bruge den sådan her men det går ikke .... ------- strDSN = "Provider={Microsoft.Jet.OLEDB.4.0;} DBQ=d:\Inetpub\wwwroot\xxxx\xxxx.mdb; uid=; pw=;" ------- PS. ang det oprindelige spørgsmål, så har jeg rettet hele sitet til Conn nu vil jeg lige prøve at køre sitet på en række maskiner samtidig og se hvordan det går. Det kører fint på denne maskine med fx. 5 browservinduer åbne, men det gjorde det gamle også *g*
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.