Mon, 21 Jun 2004 11:18:41 +0200, > Allan < <ikke@nogetdukanbrugetil.noget>
skrev:
> Hej
> Jeg sidder og arbejder med et program der skal kunne fungere i et
> flerbruger
> system. Programmet snakker med en Access-database som ligger på serveren.
> Jeg har oplevet flere problemstillinger som jeg skal tage hensyn til.
>
> 1. Dataaccess er enormt langsom.
>
Kort sagt:
Et program på arbejdsstation med Access-database på server _er_ langsom.
Nothing doing
(stort set).
Årsagen er den simple, at ved en 'Select * from xx where felt1 = 4' skal
_hele_ indholdet af _alle records_ i tabel1 hentes fra server til
arbejdsstation, idet det jo er arbejdsstationens CPU, der behandler ordren.
Det er naturligvis muligt ved små systemer, men bliver det blot lidt
komplicerede søgninger på en stor base, så kommer du ikke uden om, at det
mest effektive er en 'client/server-løsning, hvor SQL-ordrene afvikles på
serveren, og kun resultatet skal sendes via nettet til arbejdsstationen.
> 2. Ind imellem går en maskine ned og det kan opstå at databasen bliver
> "korrupt". De andre brugere kan fint arbejde videre - men skal man logge
> på
> med en ny bruger siger den "Reparér.." og det kan ikke lade sig gøre
> uden at
> alle brugere logger ud.
>
Bad luck
> 3. Hvordan håndterer jeg bedst skrivninger (inkl. låsninger) til og fra
> databasen? F.eks.
> Bruger1 henter en ordre retter linie 2, 3 og 4 -
> Bruger2 henter den samme ordre.
> Bruger1 gemmer.
> Bruger2 retter linie 1 og gemmer.
> Nu er der iforhold til den oprindelige ordre kun rettet i linie 1. Da
> alle
> data på ordren hentes ind i formen og alle data gemmes efterfølgende.
Du sætter en markering (flag) på ordren, når bruger 1 henter. Og sletter
flaget igen, når han har skrevet tilbage.
Bruger2 tester på flaget og få rbesked om, at 'En anden bruger redigerer i
øjeblikket den ønskede ordre'.
...du skal naturligvis huske at lave en rutine, der lægger flaget, hvis
bruger1 annullerer sin redigering uden at gemme
> Ja - ugennemtænkt - og det er ikke mig der har påbegyndt det. Jeg skal
> bare
> forsøge at afslutte det på bedst mulige måde.
>
Knæk og bræk...
Krabsen
> Data sendes og hentes via
> Set MyDataSet = MyDatabase.execute("Select * from.... ")
>
> Mvh
> Allan
>
--
Sendt via Opera.
www.krabsen.dk
www.responsnord.dk
mfl