Avatar billede fedefifi Nybegynder
18. marts 2002 - 20:35 Der 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:

objConn = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=c:\inetpub\wwwroot\xxxx\login.mdb" &";DriverId=25;FIL=MS Access;MaxBufferSize=512;PageTimeout=5"

Tak for hjælpen
Avatar billede terry Ekspert
18. marts 2002 - 20:45 #1
never seen it used before!
18. marts 2002 - 20:57 #2
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!?
Avatar billede fedefifi Nybegynder
18. marts 2002 - 21:00 #3
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
18. marts 2002 - 21:59 #4
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.
Avatar billede fedefifi Nybegynder
18. marts 2002 - 22:40 #5
Okay. det lyder interessant, men hvordan ser det ud i kode? Altså hvordan får jeg den til automatisk at blive ved med at prøve?
18. marts 2002 - 22:41 #6
ASP? VBA?
18. marts 2002 - 22:42 #7
(jeg kan kun svare dig, hvis det er VBA)
Avatar billede fedefifi Nybegynder
18. marts 2002 - 22:49 #8
Jeg er åben overfor alt så kom bare...
Avatar billede fedefifi Nybegynder
18. marts 2002 - 22:54 #9
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
18. marts 2002 - 23:00 #10
OK :o)

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!?
Avatar billede fedefifi Nybegynder
18. marts 2002 - 23:05 #11
jeg prøver det lige...
Avatar billede fedefifi Nybegynder
18. marts 2002 - 23:11 #12
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?
18. marts 2002 - 23:18 #13
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)

Det samme gælder nok rs-objektet.
Avatar billede fedefifi Nybegynder
19. marts 2002 - 00:08 #14
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
%>
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester