Jeg har en database hvor mange personer løbende retter i dokumenterne. Det giver af og til (læs ofte, red.) replikerings fejl. Jeg vil derfor gerne låse dokumentet så når først en person redigerer i det så kan andre ikke redigere i det.
Mine overvejelser.
Når der skiftes til redigeringstilstand oprettes et dokument andetsteds i databasen med UNID på det redigerede dokument. På samme tidspunkt kigger der efter om dokumentet allerede eksisterer. Hvis dokumentet eksisterer må det skyldes at der allerede er en bruger som redigerer dokumentet. Selvfølgelig skal UNID dokumentet så slettes når redigeringstilstand forlades.
Er der en bedre idé ? Jeg kan forestille mig at det kan gå hen og blive noget rod når der opstår diverse fejl og dokumentet så ikke bliver slettet.
Det er metoden jeg selv anvender. Du skal blot have nogle funktioner parat som kan kaldes af brugeren, når det er gået galt (såsom CancelLock eller lignende). Tag også hånd om lokale kopier af applikationen. Evt. ikke gøre det muligt at redigere eksisterende dokumenter men kun tillade oprettelse af nye (notater?)
Glæd dig til N6: Lock method
Example Locks a document. Note This method is new with Release 6. Defined in NotesDocument Syntax flag = notesDocument.Lock( [ name ] [, provisionalOK ] ) Parameters name Array of type String. Optional. The names of the lock holders. Each lock holder must be a user or group. Defaults to one lock holder: the effective user. The empty string ("") is not permitted in the array. provisionalOK Boolean. Optional. True permits the placement of a provisional lock. False (default) does not permit a provisional lock. Return value flag Boolean. True if the lock is placed. False if the lock is not placed.
Jeg bruger også samme metode. Blot lægger jeg låsene ud i en separat database - som kun er til det samme. Kan så opbevare låse for mange databaser samme sted. Gem også oplysninger om hvem og hvornår dokumentet blev låst, og vis dem til brugeren når et dokument er låst - så de kan ringe sammen... PS: Du skriver "replikerings fejl" - du mener vel save-konflikter For hvis det ER replikerings-konflikter nytter det ikke noget at låse :(
Jeg har fundet fordelen ved at benytte en separat database - som kun er til det samme. For at det hele virker kræver det jo at brugerne kan slette deres dokumentlåse når de forlader redigeringstilstand. Men det er ikke altid jeg er interesseret i at give brugerne slette adgang i mine databaser. SÅ nu har jeg lavet en pæn lille database som kun tager sig af håndtering af dokumentlåse.
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.