Hændelse efter opdatering
Udskrevet fra: Dansk Access Forum
Kategori: Hjælp til Access
Forum navn: Formularer (Forms)
Forum beskrivelse: Spørgsmål vedr. formularer og alt hvad der vedrører disse
Web-adresse: https://www.accessforum.dk/forum_posts.asp?TID=85
Udskrevet den: 24-11-2024 kl. 01:17
Emne: Hændelse efter opdatering
Besked fra: TAC
Emne: Hændelse efter opdatering
Posteringsdato: 15-06-2016 kl. 17:43
Har en lagerTABEL hvor der angives antal kasser der sættes ind på lager og antal kasser der tages ud af lager. I den samme kolonne i Lagertabellen. Den nemme fremgangsmåde er at angive "antal kasser ind" med et positivt tal, mens der for "kasser ud" skal sættes et minus foran det indtastede tal. Således kan antal kasser på lager nemt gøres op med funktionen SUM. Men Bruger af databasen vil nemt kunne glemme at indsætte minus foran indtastning ved "kasser ud" så bliver summen upålidelig. Vil derfor lave en Formular med 2 felter. Et felt for kasser ind og et felt for kasser ud. Begge felter skal referere til samme kolonne i lagerTABEL. Fidusen skulle være at tal indtastet i feltet kasser ud ved lukning af formularen bliver gjort negative, mens tal indtastet i feltet kasser ind forbliver positive. Jeg har prøvet med Udtryk [Kasser Ud]*-1 som hændelsesprocedure efter lukning, men det virker ikke. Har forsøgt at lave en proceduren i VB, men min erfaring i VB er uhyre ringe og det virker i hvert fald ikke. Er der nogen der har en lys ide?
|
Svar:
Besked fra: hkh
Posteringsdato: 15-06-2016 kl. 20:20
Hvis feltet de skal opdatere hedder AntalKasser i hovedformularen, det skal du evt. tilpasse.
IndUdFormularen med KasserInd og KasserUd skal ikke tilknyttes felter.
IndUdFormularens ved lukning hændelse skal ligne noget i denne retning.
Private Sub Form_Close() if nz([KasserInd])>=1 then forms!Hovedformular![AntalKasser] = forms!Hovedformular![AntalKasser]+[KasserInd] else msgbox"Du skal angive positive tal!" [KasserInd].setfocus docmd.cancelevent exit sub end if if nz([KasserUd]>1 then if forms!Hovedformular![AntalKasser] - [KasserInd]<1then msgbox "Der er ikke uden " & forms!Hovedformular![AntalKasser] & " på lager!" docmd.cancelevent exit sub end if forms!Hovedformular![AntalKasser]=forms!Hovedformular![AntalKasser]-[KasserUd] end if End Sub
nz([KasserInd]) henter værdien i KasserInd, Hvis den er NULL ændres den til 0
------------- Hans
|
Besked fra: TAC
Posteringsdato: 15-06-2016 kl. 21:33
Tak for et interessant forslag, men jeg må hellere lige prøve at gøre det klarere hvad min tanke er da din VB procedure synes for mig at antyde at brugeren får meddelelse
undervejs (de to msg linier) men brugeren skal ikke have nogle beskeder
skal blot taste ind uden at tænke på hvor mange kasser der er på lager.
Hvis der tastes flere kasser ud end ind, så går lageret blot i minus. p.s.
rent faktisk skal brugeren ikke indtaste andet end antal, idet kasser
med stregkode aflæses af scanner og kun antallet skal tastes.
Stregkoderne vil give alle de nødvendige data om kassen, undtaget
antallet og så om det er ind eller ud af lageret. .
Tabel: Lager med flg. kolonner Dato, Kasser, Indhold (opslag) Denne tabel skal indeholde kasser med mange slags indhold. I tabellen kan jeg angive kasser ind og indhold. ved at taste antal og indhold. I tabellen kan jeg angive kasser ud (ved at sætte minus foran antallet af kasser ) og indhold. Siden kan jeg lave en forespørgsel efter kasser med et bestemt indhold, hvor en sum funktion under kolonnen Kasser (plus kasser ind og minus kasser ud) kan vise hvor mange kasser med et bestemt indhold der er på lager.
Brugerne af basen skal blot have adgang til en formular, hvor de kan angive hvor mange kasser med et bestemt indhold der sættes ind, eller angive hvor mange kasser med et bestemt indhold der tages ud. Ikke andet skal brugerne have adgang til.
Når jeg så vil vide hvor mange kasser med et bestemt indhold der er på lager, laver jeg blot en forespørgsel indeholdende en sum funktion, så jeg kan se hvor mange kasser der er med et bestemt indhold. Brugerne har ikke brug for at få at vide hvor mange kasser der er på lager.
Problemet er blot det der lille minus, som brugerne nemt kan glemme. Derfor ville jeg i formularen have to felter et for kasser ind (grønt felt) og et for kasser ud (rødt felt), hvor brugeren ved indsætning på lager taster f.eks. 2 i feltet kasser ind og "elefantsnot" under indhold. Det kommer så ind i tabellen under kasser og indhold. Skal brugeren indtaste et 1 kasse elefantsnot er taget ud tastes det blot i et andet felt i formularen. OG ANTALLET bliver automatisk konverteret til -1 i tabellen. Det skal brugeren ikke have nogen orientering om eller vide. Brugeren skal blot taste tal og indhold ind. Håber du igen igen kan hjælpe med en god ide.
|
Besked fra: hkh
Posteringsdato: 15-06-2016 kl. 22:37
Private Sub Form_Close() if nz([KasserInd])>=1 then forms!Hovedformular![AntalKasser] = forms!Hovedformular![AntalKasser]+[KasserInd] if nz([KasserUd]>=1 then forms!Hovedformular![AntalKasser]=forms!Hovedformular![AntalKasser]-[KasserUd] End Sub
Dette er den simpelste form. Du er nød til, at kontrollere om det er positive tal, ellers vil antallet ikke stemme.
Det er dog stadig en god ide, at give brugeren besked hvis der er indtastningsfejl, i modsat fald tror brugeren, at indtastningen er ok, medens den faktisk ikke er udført.
------------- Hans
|
Besked fra: TAC
Posteringsdato: 03-07-2016 kl. 18:08
Tak for dit forslag, som jeg studerede. I enden kom jeg frem til en anden løsning. Brugeren skal i en post vælge om kasserne skal IND eller UD. Vælges IND bliver antalfeltet grønt, vælges ud bliver antalfeltet RØDT. Så kan brugeren bedre se om det er den rigtige retning. Vælges UD bliver det indtastede kasseantal automatisk omsat til minus, ved at gange med -1 naturligvis. (gennem funktionen Iif Hermed optræder der såvel positive som negative tal i antallet af kasser, hvorfor der blot kan indsættes en sum-funktion, så haves antallet af kasser på lager. Nu fungerer det, så er der bare andre "problemer"
|
|