Dansk Access Forum
  Hjælp Hjælp  Søg i forum   Opret ny bruger Opret ny bruger  Log ind Log ind


Emne lukketHændelse efter opdatering

 Besvar Besvar
Forfatter
TAC Se dropdown
Forum Begynder
Forum Begynder
Avatar

Medlem: 24-12-2015
Land: Danmark
Status: Offline
Point: 19
Direkte link til dette indlæg Emne: Hændelse efter opdatering
    Sendt: 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?
Til top



Til top
hkh Se dropdown
Sølv bruger
Sølv bruger


Medlem: 15-08-2012
Status: Offline
Point: 320
Direkte link til dette indlæg Sendt: 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
Til top
TAC Se dropdown
Forum Begynder
Forum Begynder
Avatar

Medlem: 24-12-2015
Land: Danmark
Status: Offline
Point: 19
Direkte link til dette indlæg Sendt: 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.

Til top
hkh Se dropdown
Sølv bruger
Sølv bruger


Medlem: 15-08-2012
Status: Offline
Point: 320
Direkte link til dette indlæg Sendt: 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
Til top
TAC Se dropdown
Forum Begynder
Forum Begynder
Avatar

Medlem: 24-12-2015
Land: Danmark
Status: Offline
Point: 19
Direkte link til dette indlæg Sendt: 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"
Til top
 Besvar Besvar

Skift forum Forum tilladelser Se dropdown

© 2013 - 2024 Dansk Access Forum - en del af Excel-regneark.dk