Avatar billede jensen363 Forsker
20. februar 2007 - 12:20 Der er 20 kommentarer og
3 løsninger

Annullér post/indtastning

I forbindelse med inddatering af en ny post i en tabel, har man mulighed for at vælge annullér post som en standardfunktionalitet

DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70

Dette virker også godt nok, .... blot ikke på autonummereringsfelter ... dvs. der opstår hul i nummerrækken hvis man efterfølgende vælger annullér ....

Kad det gøres anerledes ???
Avatar billede -anders- Juniormester
20. februar 2007 - 12:30 #1
Hej  jensen
Så vidt jeg vil der altid opstå det hul i autonummeringen som du selv nævner hvis du annullere oprettelsen af en ny post. Hvis det er et must at nummerrækkefølgen altid skal være fortløbende uden disse huller er den enste mulighed at lave sin egen "autonummerings" funktion, men dette skal så køres via en indtastningsformular, og ikke direkte i tabellen.
Avatar billede jensen363 Forsker
20. februar 2007 - 12:37 #2
Øv ...
Avatar billede -anders- Juniormester
20. februar 2007 - 12:39 #3
Ja øv,det har også drillet mig nogen gange, jeg har så ofte valgt en brugerdefineret funktion med DMAX funktionen feks. nedenstående på en en knap på en formular:

Me!Feltnavn = DMax("[Feltnavnitabel]", "Tabelnavn") + 1

Det virker faktisk meget godt, men skal som sagt køre fra en form
Avatar billede mugs Novice
20. februar 2007 - 12:42 #4
Avatar billede mugs Novice
20. februar 2007 - 12:43 #5
Men der skal naturligvis komprimeres først.
Avatar billede jensen363 Forsker
20. februar 2007 - 12:46 #6
Hej Mugs > den fremgangsmåde er ikke mulig, idet der kan være flere brugere på samtidig ... så DMax er nok at foretrække ... tror jeg nok ...
Avatar billede -anders- Juniormester
20. februar 2007 - 12:50 #7
Gade vide om det muligt at anvende DMax funktionen på en eller anden måde direkte i tabellen feks. under standardværdi for nye poster ?
Avatar billede jensen363 Forsker
20. februar 2007 - 12:57 #8
Hmmmm .... DMax giver reelt samme udfordring hvis der er to eller flere brugere som opretter poster samtidigt.

Jeg tror jeg forsøger med en "mellemstation" i form af en temp tabel med en unik nummerering på bruger som så efterfølgende gemmes i den endelige tabel, når denne er 100 % sikker på sine indtastninger ... tek for forsøget
Avatar billede -anders- Juniormester
20. februar 2007 - 12:58 #9
Selv tak, og god arbejdslyst med det :o)
Avatar billede balderk Nybegynder
20. februar 2007 - 14:44 #10
Brug aldrig autonunmmer til fakturaer e.l. - Der kan være et utal af problemer forbundet hermed.

DMax kan sagtens anvendes med flere brugere!

Du skal blot vente med at tildele værdien til posten godkendes. Hvis du f.eks. har en funktionsknap [Godkend].

Hvis du vil gemme recorden midlertidigt, bruger du blot dmax til at udfylde fakturanummer, når recorden flyttes over i tabellen med godkendte poster.
Avatar billede mugs Novice
20. februar 2007 - 14:50 #11
Den eneste måde at "nul-stille" et autonummer er en komprimering.
Avatar billede terry Ekspert
20. februar 2007 - 17:59 #12
whats the problem in having holes in the sequence. Theoretically there is no need to even see the autonumber values.
Avatar billede jensen363 Forsker
21. februar 2007 - 08:14 #13
Hi Terry > af hensyn til vores interne revision, skal der være styr på nummerrækken, derfor er det ikke hensigtsmæssigt at der er huller.

Jeg ender nok op med en DMax
Avatar billede terry Ekspert
21. februar 2007 - 08:23 #14
But this must be becuase your using the autonumber as invoice number or something like that, they are two entirely different things. As balderk also suggests, they shouldnt be used for this purpose.
There will be a rsik with dmax even if you leave it until the last minute, but if the field (invoice number for example) is also unique key then alll you will need to take into account is reacting upon an error you will get if someone does attempt to write a record with the same number.
Avatar billede jensen363 Forsker
21. februar 2007 - 09:19 #15
I am in contact with "Intern Revision" on this problem.

It looks like Access isn´t the best choice in this case as a multiuser system :-(
Avatar billede mugs Novice
21. februar 2007 - 09:34 #16
For at imødegå samme nummer med en DMax, kan man så ikke i formularens Current indtaste.

If Me.NewRecord the
Me.nummer 0 DMax(...) + 1
end if

og sørge for, at den redegirede post er låst.
Avatar billede jensen363 Forsker
21. februar 2007 - 09:42 #17
Hej Mugs > Jeg arbejder lidt videre med forskellige løsningsforslag ...

Måske er problemet til at overskue ... sandsynligheden for at to eller flere brugere forsøger at acceptere en given post samtidig er nok lille
Avatar billede balderk Nybegynder
21. februar 2007 - 10:08 #18
Jensen:
Jeg vil fastholde, at det ikke vil give huller, hvis du først skriver data til en midlertidig tabel, og først tildeler fakturanummer, når data flyttes til hovedtabel.
Access kan så IKKE tildele et nummer, der er højere end den senest godkendte faktura.

Bruger må alligevel ikke annullere en godkendt faktura (så bliver revisionen først tossede). De skal køres retur som kreditnotaer, ligesom man modposterer fejlbogføringer i et økonomisystem.

Hvis du har brug for at tildele et ordrenummer, kan du jo bare gøre det i den midlertidige tabel.

Desuden er der ved revision ikke problemer med brudte nummerserier, så længe du kan redegøre for huller, men det bør selvfølgelig minimeres af hensyn til overblikket (controller/IT-koordinator i mellemstor dansk virk.).


Mugs:
Problemet opstår, når to brugere samtidigt prøver at oprette en post. Dette sker ikke nødvendigvis på baggrund af een redigeret post.
Avatar billede jensen363 Forsker
21. februar 2007 - 10:16 #19
Takker for alle bidrag ind til videre ... det lyder som om vi har fælles forståelse og indfaldsvinkel til problemstillingen.

Læg venligst svar, så vil jeg forsøge at fordele efter bedste evne ;-)
Avatar billede -anders- Juniormester
22. februar 2007 - 12:55 #20
Hermed et svar :o)
Avatar billede -anders- Juniormester
22. februar 2007 - 13:47 #21
Tak for point :o)
Avatar billede oz1aiv Nybegynder
23. februar 2007 - 11:23 #22
...en anden indfaldsvinkel.
Jeg bruger altid opdatering af tabeller med formularer via en forespørgsel. Derfor kan man have et felt i tabellen til slettemarkering (og evt. timestamp og userid) i stedet for at slette recorden. Forespørgslen til formularen medtager kun ikke slettemarkerede records. På denne vis er det muligt (til en vis grænse) at dokumentere forløbet.
Avatar billede oz1aiv Nybegynder
23. februar 2007 - 11:24 #23
.... Der skal så være en knap på formularen til at slette(markere).
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