Avatar billede dueholm Praktikant
21. oktober 2002 - 03:35 Der er 8 kommentarer og
1 løsning

Sætte timer på en metode!

Hejsa!

Jeg har en MS Access database som tilgåes via ASP!

Jeg vil gerne sikre at der kun er én klient af gangen der skriver til databasen!

Men hvordan gør jeg det?
At skifte database er IKKE en mulighed!

Jeg har overvejet om man måske kunne sætte en Application-variabel (dbOptaget = true) til at være en bestemt værdi i f.eks. 5 sekunder hvorefter den skulle skifte til en anden!

Når en klient så skulle skrive til DB så skulle den tjekke om dbOptaget = false.

Er det tilfældet at dbOptaget = false så skal den sættes til true og man kan så begynde at skrive til db. Dette har man så 5 sekunder til hvorefter dbOptaget automatisk sættes til false.

Er der tilfældet at dbOptaget = true så skal den vente i måske 1 sekund for derefter at spørge igen!

Giver det nogen mening?

Er det en løsning?
Hvis ja.... hvordan??

På forhånd tak!

Kasper
Avatar billede rasmuslund Nybegynder
21. oktober 2002 - 08:52 #1
Hvorfor vil du gerne have at kun en klient kan skrive i DB?

Jeg er overbevist om at Access selv sørger for at låse tabeller og poster så man ikke kan overskrive hinanden.

Rasmus
Avatar billede burningice Nybegynder
21. oktober 2002 - 09:43 #2
rasmuslund>> i teorien kan det godt lade sig gøre at skrive til db'en i selvsamme sekund som en anden gør det, og især med access er det et problem.

Man kan desværre ikke bruge en timer i vbscript, så for at kunne vente i f.eks. 5 sekunder skal du lave en løkke der kører i 5 sekunder før du går videre. Dette er desværre rimelig resourcekrævende, og jeg vil derfor anbefale, hvis det er et stort problem for dig at flere bruger db'en på samme tid, at skifte til MSSQL eller MySQL
Avatar billede rasmuslund Nybegynder
21. oktober 2002 - 10:00 #3
cyberfessor>> ja i teorien - jeg stress testede på et tidspunkt en applikation som kørte op imod en access db - med 10 samtidig brugere som udførte 100 handlinger oplevede jeg ikke nogle fejl med at skrive samtidig.

dueholm >>Man kan godt få en ASP side til at vente - der findes komponenter som kan stoppe dit script i en periode - men det kræver jo at du har adgang til at kunne installer denne på serveren. Du kan hente en gratis komponent der hedder WaitFor 1.0 på http://www.serverobjects.com/products.htm#free.
Avatar billede keysersoze Ekspert
21. oktober 2002 - 11:10 #4
en sql-sætning udføres her og nu og derfor vil der - hvis to indsætter noget på en gang - ikke kunne blive blandet sammen i kolonner... alt vil blive holdt adskilt.

Hvorfor mener du det ville være relevant sådan at "låse" databasen?
Avatar billede thomas_regin Nybegynder
21. oktober 2002 - 12:05 #5
Jeg ved ikke om dette virker i access, men du kan benytte dig af BeginTrans() og CommitTrans()

<%
on error resume next
strSQL = min SQL-streng

myConn.BeginTrans()

myConn.execute(strSQL)

if Err.Number <> "" then
  myConn.RollbackTrans()
Else
  myConn.CommitTrans()
End if
%>

Mvh,

Thomas Regin.
Avatar billede dueholm Praktikant
21. oktober 2002 - 12:42 #6
Jeg er ved at lave et booking system!
og det er bare for at undgå dobblet booking!

Kasper
Avatar billede dueholm Praktikant
21. oktober 2002 - 12:48 #7
Men det virker interessant med BeginTrans() osv...!!

Jeg forhører mig lige ad i Access-gruppen om dette understøttes!

Kasper
Avatar billede dueholm Praktikant
15. januar 2003 - 11:38 #8
Jeg kan ikke skifte DB og jeg har desværre heller ikke mulighed for at installere komponenter på serveren!

Angående Begin/Commit så kan jeg ikke se noget dokumentation på at det virker!
Jeg har ellers været inde og se på MS´s hjemmeside.... og jeg tror ikke at transaktioner understøttes af Access!
Kasper
Avatar billede dueholm Praktikant
12. juni 2003 - 10:50 #9
*lukket*
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
Kurser inden for grundlæggende programmering

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