Avatar billede Newbee1 Novice
16. februar 2016 - 09:45 Der er 15 kommentarer og
1 løsning

Msgbox before update

Hej

Jeg prøver at lave en popup box i en formular, der skal komme hvis, der bliver tastet en allerede eksisterende post, og et afkrydsningsfelt er markeret.


Private Sub Batch_BeforeUpdate(Cancel As Integer)

    IF (Batchnr = Batchnr) and (LockBatch = yes)
    MsgBox ("Batch are locked")
    Cancel = True
  End If

End Sub


Er der nogen der kan hjælpe mig ?

Hvis der indtastes et batchnr, der allerede eksistere og denne batch er låst, skal der komme en popup.

Mvh

Tony
16. februar 2016 - 10:31 #1
Hej
Kan du ikke beskrive det lidt nærmere?

Jeg går ud fra at 1. Batchnr er fra tabellen, at andet Batchnr er fra indtastningen og at LockBatch er opslag i tabellen.

Med venlig hilsen

Birthe Lauridsen
Praktisk IT
Avatar billede petersen7913 Forsker
16. februar 2016 - 10:31 #2
Her er der forskellige eksempler

http://www.datawright.com.au/access_resources/access_docmd.openform_arguments.htm

Den der hedder Opening a form as a dialog form kan måske bruges til det du efterlyser?
Avatar billede terry Ekspert
16. februar 2016 - 10:48 #3
I think you need to use the dcount function to check if records already exist for same Batchnr and where LockBatch = True

EG:

If DCount("*", "SomeTable", "Batchnr = " & Me.BatchNr & " And LockBatch = True") > 0 Then

MsgBox ("Batch are locked")
Cancel = True

End If


Not tezxted :-)
Avatar billede terry Ekspert
16. februar 2016 - 10:50 #4
and I'm assuming that BatchNr is numerical, otherwise use


If DCount("*", "SomeTable", "Batchnr = '" & Me.BatchNr & "' And LockBatch = True") > 0 Then

MsgBox ("Batch are locked")
Cancel = True


End If

and again not tested
Avatar billede Newbee1 Novice
17. februar 2016 - 08:48 #5
Hej

Tak for svar.

Til Birthe:

Du har ret Der skal indtastes et batchnr, og derefter checkes om både batchnr allerede eksistere og om batch er låst ved hjælp af et afkrysnings felt, før formular opdatere tabel.


Hi Terry  Barchnr have both letter and numbers, i tried to use your programming, but the message: Run-time error '438' Object doesnt support this property or method.
Avatar billede terry Ekspert
17. februar 2016 - 09:16 #6
can I see the dB, or maybe just the table?
ekspertenATsanthell.dk
Avatar billede terry Ekspert
17. februar 2016 - 09:27 #7
I've just made a simple example and this works. If your fields are the same as you show in example then all you need to change is tbl1 (table name) to the correct tabl ename.


Private Sub Form_BeforeUpdate(Cancel As Integer)


    If DCount("*", "tbl1", "Batchnr = '" & Me.Batchnr & "' And LockBatch = True") > 0 Then

        MsgBox ("Batch are locked")
        Cancel = True

    End If

End Sub
Avatar billede Newbee1 Novice
17. februar 2016 - 09:58 #8
I have mailed you a part of the DB


Regards


Tony
Avatar billede terry Ekspert
17. februar 2016 - 11:51 #9
well the first thing I see is the field is named BatchLock and not LockBatch, so that needs changing.
Avatar billede terry Ekspert
17. februar 2016 - 11:53 #10
Also, in table DailyReportSub there there are NO records with a batch number, and only one where BatchLock is set to True.
Avatar billede terry Ekspert
17. februar 2016 - 12:00 #11
This works

Private Sub Form_BeforeUpdate(Cancel As Integer)
If DCount("*", "DailyReportSub", "Batchnr = '" & Me.Batchnr & "' And BatchLock = True") > 0 Then

        MsgBox ("Batch are locked")
        Cancel = True

    End If

End Sub
Avatar billede Newbee1 Novice
18. februar 2016 - 07:33 #12
Hi

If I change to:

Private Sub Form_BeforeUpdate(Cancel As Integer)

    Dim LTotal As Long
    Dim LSecondTotal As Long

   
    LTotal = DCount("*", "DailyReportSub", "BatchLock = True")
    LSecondTotal = DCount("*", "DailyReportSub", "Batchnr = '" &  Me.Batchnr & "')
    If (LTotal + LSecondTotal) > 0 Then
    MsgBox ("Batch are locked")
    Cancel = True
  End If

End Sub


Then I get a Runtime  in the Me.Batchnr  ??
Avatar billede terry Ekspert
18. februar 2016 - 12:09 #13
I've sent you a mail.


Not sure what you are hoping to do with the above code, but I'm guessing the error is because you have swapped the  "') around, it should be  '")

If you get the code to run without errors all it will do is count records where BatchLock = True but not necessarily with same Batchnr as your entering.

But maybe I haven't been given all the information.
Avatar billede terry Ekspert
18. februar 2016 - 19:34 #14
after a bit of confusion as to how to use the dB and which sub form the code has to be on it seems its now working as per the solution I gave Skrevet ons. d. 17. februar 2016 kl. 12:00:57| #11
Avatar billede Newbee1 Novice
18. februar 2016 - 20:51 #15
Tks. Terry
Avatar billede terry Ekspert
19. februar 2016 - 09:27 #16
thanks
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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