Avatar billede e-nymark Juniormester
26. april 2016 - 12:29 Der er 11 kommentarer og
1 løsning

Access 2010 - VBA Ingen ens rækker !!

Jeg har en tabel CIL_T som indeholder: ID, SW og TAG_no (alle er tekstfelter)

Når brugeren indtaster tal/tekst inde i det 3 rækker, må det ikke være muligt at indtaste værdier i rækkerne så de bliver ens, det skal være med VBA-kode og der skal fremkomme en MsgBox (TAG_no er anvendt en gang sammen med ID og SW og kan derfor ikke anvendes).

CIL_T

ID    SW    TAG_no
A10    HW    123    OK
A40    HW    123    OK
C40    AS    123    OK
C40    AS    123    Ikke OK = række 3
C40    HW    321    OK


Det med MsgBox har jeg ingen problemer med, men kan ikke få den til at kigge i de 3 rækker for at se om de er ens...
Avatar billede terry Ekspert
26. april 2016 - 12:48 #1
Avatar billede terry Ekspert
26. april 2016 - 12:49 #2
and that was an answer :-)
Avatar billede terry Ekspert
26. april 2016 - 12:53 #3
this is by far the easiest method, otherwise you need to have some code in the forms before update event where you can use the function dcount to see if any records exist with same values in the three fields. If so then show message and set Cancel = True to go back to form to correct data entry
Avatar billede terry Ekspert
26. april 2016 - 12:55 #4
And if your tables are in SQL Server you can create composite key there
Avatar billede e-nymark Juniormester
26. april 2016 - 13:15 #5
Jeg kan desværre ikke bruge denne løsning da mine Tables og Queries ligger ude på en ekstern server og har ikke mulighed for at ændre dem.... jeg skal bruge en VBA kode som bliver lagt på Forms evt. på "On Lost Focus" !!
Avatar billede terry Ekspert
26. april 2016 - 13:19 #6
"evt. på "On Lost Focus"

You have to test if other records exist before record is created, so you should do it in forms before update event.

Try using the dcount function in this event, here you can cancel the update if a record already exists

https://support.office.com/en-us/article/DCount-Function-f6b5d78b-ad0b-4e42-be7a-11a64acbf3d3
Avatar billede e-nymark Juniormester
26. april 2016 - 16:07 #7
Jeg har ikke fundet en løsning som er 100 %

Jeg har førsøgt med følgende:

If DCount("ID", "CIL_T", "ID='" & Me.ID & "'") And DCount("SW", "CIL_T", "SW='" & Me.SW & "'") And DCount("TAG", "CIL_T", "TAG='" & Me.TAG & "'") Then
MsgBox "TAG nr. findes på anlægget og kan ikke benyttes"


det er kun en gang imellem at MsgBox kommer frem når der indtastes to ens TAG nr. !!! hvad er galt ??
Avatar billede terry Ekspert
26. april 2016 - 16:37 #8
You need only one dcount which has all three fields in criteria
Avatar billede terry Ekspert
26. april 2016 - 16:40 #9
something like this

If DCount("ID", "CIL_T", "ID='" & Me.ID & "' And SW='" & Me.SW & "' And TAG='" & Me.TAG & "'") Then
Avatar billede e-nymark Juniormester
29. april 2016 - 06:10 #10
Så lykkedes det, smid et svar så du kan få dine point. :)
Avatar billede terry Ekspert
29. april 2016 - 11:19 #11
:-)
Avatar billede e-nymark Juniormester
29. april 2016 - 11:27 #12
:)
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