18. marts 2002 - 20:35Der er
13 kommentarer og 1 løsning
Hvad betyder det...
Jeg har engang læst i en bog, at det var smart at skrive timeout, buffer mm. efter henvisning til databasen, men bogen skrev ikke hvorfor. Er der nogen der ved hvad nedenstående betyder:
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
well, "Driver" giver sig selv. "DBQ" er stien til DB'en "Fil" angiver filtype "MaxBufferSize" angiver (vist nok) hvor mange kbyte den skal cache ved læsningen. "PageTimeout" er vel noget timeout på den enkelte side!?
Jeg gik selv og troede det var noget med, at hvis en var ved at læse fra db'en så ville en anden bruger blive sæt i kø i 5 sek. Men det kan måske ikke lade sig gøre
Hmm, flere brugere kan jo sagtens læse fra DB'en samtidig (med mindre én af brugerne har åbnet den eksklusivt) Hvis man støder på en låsning, kan man bygge koden op (vha fejlhåndtering) således at sen bliver ved at forsøge indtil den får hul gennem.
En anden mulighed var måske at undgå, at en bruger har åbnet db'en eksklusivt, så er spørgsmålet jo igen bare hvordan?, men jeg vil også stadig meget gerne høre dit bud på hvordan det kunne løses i VBA
Det er ganske simpelt. Du laver en løkke, som bliver ved at forsøge indtil der er bid. Man kan evt sætte en øvre grænse på hvormange gange den skal prøve:
On Error resume next Dim cn as ADODB.connection Dim rs As ADODB.Recordset Dim objConn as String Dim n as Long
objConn = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=c:\inetpub\wwwroot\xxxx\login.mdb" &";DriverId=25;FIL=MS Access;MaxBufferSize=512;PageTimeout=5" set cn = new ADODB.Connection set rs = new ADODB.recordset do err.clear cn.Open objConn rs.Open "En eller anden tabel", cn, adopenkeyset, adLockOptimistic n = n +1 loop until err = 0 or n = 10000 'gennemløb max 10.000 gange ... ...
Jeg har ikke testet det, så der kan være små uhensigtsmæssigheder i koden!
mht ikke at åbne eksklusivt, så åbner man altid databasen 'shared' som standard. Så problemet burde ikke være så stort!?
Jeg får en fejl: -------------------------------------------------- Microsoft VBScript compilation error '800a0401' Expected end of statement /forbindelse.asp, line 10 Dim cn As ADODB.connection ----------------------------------------- Siger det dig noget?
ja, her er det jo, at jeg står af! Men i ASP kan du vist ikke erklære variable så detlajeret som i VB. Derfor skal der nok bare stå: Dim cn as object (eller lign)
Jeg er end op med denne kode, den giver ikke fejl, men jeg tro ikke den virker: <% On Error resume next c = ADODB.connection r = ADODB.Recordset
Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=d:\inetpub\wwwroot\xxx\login.mdb" do err.clear c.Open objConn rs.Open "login", c, adopenkeyset, adLockOptimistic n = n +1 loop until err = 0 or n=10000 %>
Synes godt om
Ny brugerNybegynder
Din løsning...
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.