Avatar billede per2edb Guru
07. oktober 2021 - 20:08 Der er 12 kommentarer og
1 løsning

Skrivekonflikt i dataark

Jeg har et dataark i en kompleks konfiguration
Der kommer en popup der meddeler skrivekonflikt.
MS anviser dataarkets postlåse i så fald skal sættes til "alle poster"

Det hindre skrivekonflikten men nu sættes Form.Filter  ud af kraft!!!!
Hvis postlåse sættes til "redigeret post" virker Filteret men skrivekonflikten genopstår.
Hvordan får jeg PopUp' med skrivekonflikt fjernet ??

NB Vigtigt :  Programmet er ikke delt i front/backend og skal heller ikke.

Dette løser intet:
https://docs.microsoft.com/en-us/previous-versions/office/developer/office-2003/aa173227(v=office.11)?redirectedfrom=MSDN
RecordLocks Property
Avatar billede Gustav Ekspert
08. oktober 2021 - 08:42 #1
Svært at sige hvad, men én ting er sikkert: Du forsøger to steder fra at skrive til den samme post.
Så du må gøre et eller andet på en anden måde.
Avatar billede per2edb Guru
08. oktober 2021 - 14:39 #2
Ja - Det ved jeg godt
Det løses med postlåse
Har nogen erfaring med det, for det virker ikke korrekt, da Filter ophæves???
Avatar billede Gustav Ekspert
08. oktober 2021 - 15:30 #3
Er ikke helt klar på, hvad du mener. Posten er jo låst (af noget), så den kan ikke låses yderligere.
Som sagt er der ikke andet at gøre end at gøre det på en anden måde, så posten ikke låses.
Avatar billede per2edb Guru
08. oktober 2021 - 17:53 #4
Er der nogen der ved hvordan man sætter recordLocks for alle formene
Det står beskrevetpå nettet  som noget man kan men linkene ender blindt
Avatar billede Gustav Ekspert
08. oktober 2021 - 18:48 #5
Indstillinger, Klientindstillinger, Avanceret, Åbn databaser med låsning på postniveau.
Avatar billede per2edb Guru
09. oktober 2021 - 11:52 #6
Tak for hjælpen til at finde låsningen

Imidlertid har jeg fundet det sted fejlen sker
Jeg har en lang række  CurrentDb.Execute "UPDATE efter hinanden
Efter en ca 10 stykker opstår fejlen
Det er som om der er nogle ressourcer i Access der er brugt op

Kender du en anden måde at opdatere 15 -20 stk påen gang  så der måske bruges færre ressourcer
Avatar billede Gustav Ekspert
09. oktober 2021 - 12:07 #7
Åbn et DAO.Recordset med tabellen og brug metoderne Edit og Update og eventuelt Close, hvis ikke det er den samme tabel, og et nyt Recordset skal åbnes.
Avatar billede per2edb Guru
09. oktober 2021 - 14:41 #8
Kan du se hvad der er forkert her:

Set rs = CurrentDb.OpenRecordset("Pris from Priskartotek where Rec = 20") 
Do While Not rs.EOF
                        rs.Edit
                        rs!Pris =10.5  <=== Fejler her
                        rs.Update
              rs.MoveNext
              Loop
Avatar billede Gustav Ekspert
09. oktober 2021 - 17:02 #9
Det burde virke, men prøv specifikt at angive egenskab Value:

Set rs = CurrentDb.OpenRecordset("Select Pris From Priskartotek Where Rec = 20")
If rs.RecordCount > 0 Then
    rs.MoveFirst
    Do While Not rs.EOF
        rs.Edit
        rs!Pris.Value = 10.5
        rs.Update
        rs.MoveNext
    Loop
End If
rs.Close
Avatar billede per2edb Guru
09. oktober 2021 - 18:07 #10
Desværre
DEr meldes fejl i 
  rs.Edit
Avatar billede per2edb Guru
09. oktober 2021 - 18:29 #11
Hvis Not fjernes udføres det uden fejl men.....
Pris opdateres IKKE ??????
Avatar billede Gustav Ekspert
09. oktober 2021 - 19:46 #12
Så har du nok et ADO recordset og ikke et DAO recordset. Så:

Dim rs As DAO.Recordset
Avatar billede per2edb Guru
09. oktober 2021 - 21:28 #13
Jeg fik det til at virke sådan:

With rs
    If Not .BOF And Not .EOF Then
        .MoveLast
        .MoveFirst
        If .Updatable Then
            .Edit
                      ![OrdretPris] = Pri
            .Update
        End If
    End If
    .Close
End With

Tak for hjælpen
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

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