Avatar billede bsn Forsker
28. oktober 2024 - 23:11 Der er 7 kommentarer og
1 løsning

ASP classic

Har en side kørende, som har en Access database som backend.
Siden har ikke brugerlogin.

Jeg vil gerne, at når en bruger er ved at oprette en post i databasen, skal andre ikke kunne oprette en post samtidig.

Hvordan kan jeg sikre det...???

De bedste hilsener
Bjarne
Avatar billede arne_v Ekspert
29. oktober 2024 - 00:02 #1
Ide - pseudo kode:

x = random number
n = execsql UPDATE lcktbl SET id = x WHERE id = 0
if n = 0 then
      opret post
      execsql  UPDATE lcktbl SET id = 0
else
    write "database i brug"
endif
Avatar billede bsn Forsker
29. oktober 2024 - 08:34 #2
#1
Tak Arne
Er lidt fatsvag her til morgen...:)
Kan du forklare hvad der sker / ideen er...?
dbh
Bjarne
Avatar billede bsn Forsker
29. oktober 2024 - 09:54 #3
#2
Nå, så vågnede jeg helt op...
Det virker fint - tak for hjælpen...
dbh
Bjarne
Avatar billede bsn Forsker
29. oktober 2024 - 13:46 #4
Arhhh ikke helt alligevel...

if n = 0 then
Er det ikke : if n > 0 then
      opret post
      execsql  UPDATE lcktbl SET id = 0
else
    write "database i brug"
endif
Avatar billede arne_v Ekspert
29. oktober 2024 - 14:01 #5
Ups. Jo.
Avatar billede arne_v Ekspert
29. oktober 2024 - 14:02 #6
>0 eller =1.

Testen er om den UPDATE har fundet en række med id=0
Avatar billede arne_v Ekspert
29. oktober 2024 - 14:03 #7
Hvis systemet skal gæres mere robust kan du overveje at gemme tidspunkt også. Det vil gøre det nemmere at lave en timeout i tilfælde af at der sker noget så værdien aldrig bliver sat tilbage til 0.
Avatar billede bsn Forsker
30. oktober 2024 - 22:51 #8
#7
Jeg har lavet det på den måde, at der er en Session variable, der kører indtil opgaven er løst, samtidig med, at der er sat en lock i en tabel i databasen.
For at få lukket lock i databasen, har jeg lavet en Refresh på siden efter 10 min. (ca den tid det tager at lave en opgave) hvis den ikke bliver brugt...
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