Avatar billede petersen7913 Forsker
16. juni 2016 - 10:29 Der er 15 kommentarer og
1 løsning

Hvor er det bedst at lægge check af dubletter?

Et hurtigt spørgsmål:

Jeg har en tabel med 7 felter - ID + 6 andre felter. Tabellen bliver brugt i en formular. Mine brugere vil gerne have en advarsel hvis 4 af de 6 felter er ens.

Selve SQLen til at finde dubletterne er på plads, men hvor er det smartest at lægge testen? På det 4. felt de taster i? Eller alle 4 felter hvis de retter i 2. felt efter at ha tastet i 4. felt? På hele formen? Hvilken trigger - AfterUpdate, VedÆndring ?????

Forslag modtages med åbent sind :)
Avatar billede terry Ekspert
16. juni 2016 - 11:21 #1
I would put it in the forms BEFORE update event. Here you can set cancel to true if you decide something is wrong
Avatar billede terry Ekspert
16. juni 2016 - 11:22 #2
so record doesn't get created and you get the chance to correct
Avatar billede terry Ekspert
16. juni 2016 - 11:25 #3
BEFORE insert.
But I guess that you would also ned to evaluate also when updating, that's if its allowed to change data of course
Avatar billede terry Ekspert
16. juni 2016 - 11:28 #4
actually reading online
The BeforeInsert event occurs when the user types the first character in a new record, but before the record is actually created

So I doubt that can be use... I'll get back, need to test :-)
Avatar billede terry Ekspert
16. juni 2016 - 11:35 #5
Yes BEFORE update is OK, insert occurs when first character is entered in new record and update occurs both for new and existing records just before record is inserted/updated.
Avatar billede Slettet bruger
16. juni 2016 - 12:11 #6
Det er "bad practice" at man skriver direkte ind i Tabeller, idet tankegangen med at have flere bruger arbejde på sammen db går lidt tabt...
Derfor ville jeg lave en tjek af dataen, inden du skriver den ind i Tabellen (med en ja/nej pop-up som kunne spørge "der er genskabende data, vil du alligevel skrive ind i tabellen?" - eller noget lignende)
Udover det kunne du lave en sub, som tjekker hver gang man forlader en tekstfelt:
Hvor mange tekstfelter er udfyldt - hvis det er mere en 4 så lave en Tabelle-tjek om data forkommer flere gange
Avatar billede petersen7913 Forsker
16. juni 2016 - 12:21 #7
Thomas S #6 - jeg forstår ikke helt > Det er "bad practice" at man skriver direkte ind i Tabeller

Acces er LAVET, så man skriver direkte ind i tabeller. Der er ikke en 'commit' som i f.eks. Oracle

Med den her BeforeUpdate kan jeg jo netop lave en kontrol.
Avatar billede Slettet bruger
16. juni 2016 - 12:45 #8
Access er ikke lavet til at skrive direkte i Tabeller - men det er gjort letter at skrive direkte i tabeller, fordi man bare trækker en tabelle op i en formular, og har derved allerede en kørende databaseværktøj.
Commit-knappen skal man selv udvikle - og det er det som gør det til at flere brugere kan arbejde samtidigt i Databasen

Men jo - du kan lave kontrollen ved BeforeUpdate - dog vil jeg først lave denne sub, som tjekker om der er 4 felter (eller mere) udfyldt - for ellers bliver dit dataset hver gang gennemgået (med mindre tabellen ikke fylder så meget, så er det også lige meget)
Avatar billede petersen7913 Forsker
16. juni 2016 - 13:02 #9
Thomas S - mig bekendt har man altid kunne gøre dette:> fordi man bare trækker en tabelle op i en formular, og har derved allerede en kørende databaseværktøj.

> som tjekker om der er 4 felter (eller mere) udfyldt
er en udmærket ide, som allerede ligger i min kode ;) Og det kan du af gode grunde ikke vide :)
Avatar billede terry Ekspert
16. juni 2016 - 13:05 #10
"Det er "bad practice" at man skriver direkte ind i Tabeller" ? That's a new one. If I know what I'm inserting is valid when whats wrong with that?
Avatar billede terry Ekspert
16. juni 2016 - 13:07 #11
"Access er ikke lavet til at skrive direkte i Tabeller " ?

DoCmd.RunSQL "INSERT INTO ....."
Avatar billede terry Ekspert
16. juni 2016 - 13:34 #12
If we are talking about transactions then it is also possible to use them with Access
https://msdn.microsoft.com/en-us/library/bb243806(v=office.12).aspx
Avatar billede terry Ekspert
16. juni 2016 - 15:44 #13
https://msdn.microsoft.com/en-us/library/bb238523(v=office.12).aspx

Notice the line
"You often use the BeforeUpdate event to validate data, especially when you perform complex validations, such as those that: ...."
Avatar billede petersen7913 Forsker
16. juni 2016 - 15:56 #14
BeforeUpdate fungerede fint i en test :) Lige nu slås jeg så med tekster, der kan indeholde " tegn .....men noget skal man jo hygge sig med
Avatar billede terry Ekspert
16. juni 2016 - 16:16 #15
if they aren't required then you could try using an input mask to stop user entering them
Avatar billede petersen7913 Forsker
16. juni 2016 - 20:04 #16
Nej nej, de er en del af dimensioner på materiale 1,5 " = 1,5 tommer. Jeg blev nok upopulær hvis jeg ryddede op ;)
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