Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Prijavljivanje da na lageru nema dovoljno robe

[es] :: Access :: Prijavljivanje da na lageru nema dovoljno robe

[ Pregleda: 4297 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Robinzon Kruso

Član broj: 41475
Poruke: 191
82.114.95.*



Profil

icon Prijavljivanje da na lageru nema dovoljno robe05.06.2008. u 10:05 - pre 194 meseci
Ovako stoji stvar....

Access povezan sa MySQL-om vec nekoliko meseci radi u jedno magacinu i sve je bilo ok dok jednog dana nisam dobio poziv da nesto nije u redu... Operator je pravio fakturu i naplatio a kada je osoba otisla do magacina te robe nije bilo... Sta se desilo? Ja u programu to nisam predvideo da operator bude upozoren kada je kolicina neke robe na mininmum i kada je ustvari unesena vrednos kolicine u fakturi veca od stvarne postojece kolicine te robe na lageru tj. u magacinu i u stvari zabranio sa Do.Cmd.CanceEvent unos takve kolicine u fakturu ili svake druge kolicine koja je vece od kolicine raspolozive na lageru.

Probao sam nesto da uradim ali mi nekako ne ide.... Pokusao sam da u polju "KOLICINA" forme "IZLAZNA FAKTURA" ubacim kod koji ce da aktivira alarm posle unosa kolicina i obavesti operatora da je unesena kolicina u fakturi veca od stvarne kolicine u magacinu... i za to sam otvorio Report koji mi ustvari daje trenutno stanje lagera. Kod izgleda ovako:

Private Sub KOLICINA_BeforeUpdate(Cancel As Integer)

stDocName = "TRENUTNO STANJE"
Dim NaLageru

DoCmd.OpenReport stDocName, acPreview, , , acHidden
NaLageru = ((Reports![TRENUTNO STANJE]![ULAZ Query.Sum Of KOLICINA]) - (Reports![TRENUTNO STANJE]![IZLAZ Query.Sum Of KOLICINA]))

If (KOLICINA) > ((Reports![TRENUTNO STANJE]![ULAZ Query.Sum Of KOLICINA]) - (Reports![TRENUTNO STANJE]![IZLAZ Query.Sum Of KOLICINA])) Then

DoCmd.Beep
DoCmd.Beep
DoCmd.Beep

DoCmd.OpenReport stDocName, acPreview

DoCmd.CancelEvent

MsgBox NaLageru, vbOKOnly, "STANJE OVOG ARTIKAL NA LAGERU JE:"
DoCmd.Close acReport, stDocName

Else
DoCmd.Close acReport, stDocName
End If

End Sub


Sta se desava, ustvario mislio sa da radi dobro medjutim kada sam pokusao da unesem neki drugi artikal utvrdio sam da on ustvari ne racuna artikal pod sifrom koju ja unosim vec zadnji artikal u izvestaju.
Pokusao sam to isto da uradim otvaranjem Query-ja gde ustvari i racunam sumu ULAZNE KOLICINE i sumu IZLAZNE KOLICINE pa to kasnije koristim za izvestaj o TRETNUTNOM STANJU LAGERA gde ove dve vrednosti oduzmem i dobije stanja na lageru ali nisam uspeo. Prijavljuje mi da ne prepoznaje polja u kodu...


Neki savet ili put kako da ovo resim bi bio vise nego dobrodosao....

Hvala unapred....





















 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2831



+45 Profil

icon Re: Prijavljivanje da na lageru nema dovoljno robe05.06.2008. u 10:47 - pre 194 meseci
Napraviš jednu javnu funkciju za izračunavanje stanja kartice i staviš je u jedan globalni modul. Recimo ovakvu:
Code:
Public Function Stanje_Kartice(Sifra_Robe As Long) As Currency
    Stanje_Kartice = Nz(DSum("[USLO]-[IZASLO]", "PROMET", "[SIFRAROBE]=" & Sifra_Robe), 0)
End Function

Ovde je PROMET tabela gde se beleži USLO i IZASLO. Otprilike kako ti to radiš.
Kasnije na događaj Beforu Update polja količina na formi, ispituješ stanje. Opet recimo ovako:
Code:
Private Sub kolicina_BeforeUpdate(Cancel As Integer)    
    If Stanje_Kartice(Me![sifrarobe]) < Me![kolicina] Then
        MsgBox "Nema dosta robe na zalihama", vbCritical, "Paznja"
        Cancel = True
    End If  
End Sub

 
Odgovor na temu

Robinzon Kruso

Član broj: 41475
Poruke: 191
82.114.95.*



Profil

icon Re: Prijavljivanje da na lageru nema dovoljno robe05.06.2008. u 11:41 - pre 194 meseci
Hvala na odgovoru,

Uradio sam sve po tvojim instrukcijama (nadam se) i uvek dobijam nulu kao vrednost funkcije Stanje_Kartice:

Gde gresim, evo sta sam ja uradio:

Public Function Stanje_Kartice(Sifra_Robe As Long) As Currency

Stanje_Kartice = Nz(DSum("[TRENUTNO STANJE]![ULAZ Query.Sum Of KOLICINA]-[TRENUTNO STANJE]![ULAZ Query.Sum Of KOLICINA]", "TRENUTNO STANJE", "[SIFRA]=" & Sifra_Robe), 0)

End Function

I onda to ispitujem na sledeci nacin: TRENUTNO STANJE mi je naziv Query-ja gde racunam sumu ULAZA i sumu IZLAZA sa svaku SIFRA tj. za svaki artikal.

Private Sub KOLICINA_BeforeUpdate(Cancel As Integer)

If Stanje_Kartice(Me![SIFRA]) < Me![KOLICINA] Then
MsgBox "Nema dosta robe na zalihama",vbCritical, "Paznja"
Cancel = True
End If

End Sub

Ustvari da li prvo treba da otovorim Query TRENUTNO STANJE negde pre nego sto pristupim podacima... samo pitam???

Hvala na vremenu
 
Odgovor na temu

Robinzon Kruso

Član broj: 41475
Poruke: 191
82.114.95.*



Profil

icon Re: Prijavljivanje da na lageru nema dovoljno robe05.06.2008. u 12:16 - pre 194 meseci
Nasao sam gresku

Dva puta sam upisao istu promenjivu ULAZ-ULAZ i zato sam dobio 0...

Hvala jos jednom.....
 
Odgovor na temu

Robinzon Kruso

Član broj: 41475
Poruke: 191
82.114.95.*



Profil

icon Re: Prijavljivanje da na lageru nema dovoljno robe05.06.2008. u 19:08 - pre 194 meseci
Postovani,

U vezi ove teme tokom rada naisao sam na jedan problem.... Recimo da sam preko fakture ULAZ prvi put uneo odredjenu kolicinu neke robe recimo uneo sam 100 komada COKOLADE. Kada sada treba da uradim fakturu IZLAZ javalja mi da na lageru COKOLADE ima 0. To se desava kada se artikal ubacuje prvi put i kada jos nema izlaza tog artikla tj. ne postoji nikakva vrednost u polju IZLAZ cak ni nula... Kada ubacim kolicinu 0 tog artikal prvi put onda je sve ok... Pretpostavljam da ima veza za Null vrednoscu u polju.... A inace Qury koji mi racuna sumu ULAZ i sumu IZLAZ uradio sam uz pomo LEFT JOIN... tako da kad prvi put ubacim neki artikal onda imam vrednost na ULAZ ali nemam vrednost na IZLAZ can ni nulu, polje je prazno pa to je pretpostavljam i probelm...

Nadam se da ste me razumeli sta sam hteo... ako ne pojasnicu mao bolje...

Naravno dok ne dobijem neki odgovor boricu se i dalje...

Hvala unared

By the way.... kako da ataciram nesto na porku ovde... vidim da drugi rade a ja ne vidim nacin kako to....???

 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2831



+45 Profil

icon Re: Prijavljivanje da na lageru nema dovoljno robe05.06.2008. u 19:52 - pre 194 meseci

23. Upload fajla uz poruku.
http://www.elitesecurity.org/faq/

Zakači fajl, da vidim gde je greška.
 
Odgovor na temu

Robinzon Kruso

Član broj: 41475
Poruke: 191
82.114.95.*



Profil

icon Re: Prijavljivanje da na lageru nema dovoljno robe05.06.2008. u 20:10 - pre 194 meseci
SELECT ROBA.SIFRA, ROBA.ARTIKAL, ROBA.JED, [ULAZ Query].[Sum Of KOLICINA], [IZLAZ Query].[Sum Of KOLICINA]
FROM ([ULAZ Query] LEFT JOIN [IZLAZ Query] ON [ULAZ Query].SIFRA=[IZLAZ Query].SIFRA) LEFT JOIN ROBA ON [ULAZ Query].SIFRA=ROBA.SIFRA
GROUP BY ROBA.SIFRA, ROBA.ARTIKAL, ROBA.JED, [ULAZ Query].[Sum Of KOLICINA], [IZLAZ Query].[Sum Of KOLICINA];


Tako dobijam sumu ULAZ i sumu IZLAZ po SIFRI artikla... onda ih koristim npr. u izvestaju oduzmem ULAZ-IZLAZ i tako dobijem trenutno stanje u lageru....

Ustvari kacim izvestaj TRENUTNO STANJE NA LAGERU.... Vidis da na primer artikal pod sifrom 9 do sada nije imao izlaz vec samo ulaz tako da na polju izlaz nema nikakve vrednosti...sto i dovodi da nema ni trenutnog stanja na kraju kao sto je to slucaj sa artiklima koji su do sada imali izlaz...sto mislim da predstavlja problem kada treba da se aktivira funkcija Stanje_Kartice i ostvari uslov u polju KOLICINA is prethodnog problema na pocetku....
Prikačeni fajlovi
 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2831



+45 Profil

icon Re: Prijavljivanje da na lageru nema dovoljno robe05.06.2008. u 20:22 - pre 194 meseci
Očigledno da su ti ulazi u jednoj tabeli, a izlazi u drugoj. Primer sam dao za situaciju kada se beleži promet, odnosno kada su obe vrednosti su u istoj tabeli. Za tvoj slučaj i trebalo napraviti drugačiju funkciju Stanje_Kartice. Zakači fajl sa tabelama i podacima.
 
Odgovor na temu

Robinzon Kruso

Član broj: 41475
Poruke: 191
82.114.95.*



Profil

icon Re: Prijavljivanje da na lageru nema dovoljno robe05.06.2008. u 20:30 - pre 194 meseci
E da Getsbi to mije promaklo da napomenem da su mi ULAZ i IZLAZ u posebnim tabelama.... ULAZ mi je kao podforma ULAZNE FAKTURE a IZLAZ mi je kao podforma IZLAZNE FAKTURE.

Prikačeni fajlovi
 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2831



+45 Profil

icon Re: Prijavljivanje da na lageru nema dovoljno robe05.06.2008. u 20:50 - pre 194 meseci
Mislio sam na .mdb fajl, ane na slike. nemam vremena da pravim novi sa podacima.
 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2831



+45 Profil

icon Re: Prijavljivanje da na lageru nema dovoljno robe06.06.2008. u 09:43 - pre 194 meseci
Evo uhvatio sam malo vremena (sinoć sam bio u gužvi) i napravio ti primer za izračunavanje stanja kada su ulazi i izlazi u različitim tabelama.
Obrati pažnju da sam prvo napravio Union query kako bih prvo sve podatke doveo u jedan izvor. Query "PrometPoArtiklu" koristi query "Unija" i parametarski je vezan za formu. I na kraju se query "Stanje" bavi sumiranjem ulaza i izlaza i zračunavanjem stanja.
Sada ti neće query vraćati samo zaglavlja kolona bez zapisa kada nema izlaza po nekoj sifri. Za primer ukucaj artikal 3, za koji ne postoji izlaz.

Prikačeni fajlovi
 
Odgovor na temu

Robinzon Kruso

Član broj: 41475
Poruke: 191
82.114.95.*



Profil

icon Re: Prijavljivanje da na lageru nema dovoljno robe08.06.2008. u 17:40 - pre 193 meseci
Hvala Gedsbi,

Probao sam da sredim stvar po tvojim instrukcijama koristeci UNION QUERY medjutim kada se spajaju dve tabele ULAZ i IZLAZ nikad mi ne izlista/prebaci sve ULAZE, interesantno ali tako je... to sam probao i direkno u MySQL da uradim i rezultat je isti... Medutim malo sam se pozabavio prethodnom funkciojom koju si mi poslao i problem sam resio koristeci istu ali uz malo modifikacije.... Evo sta sam uradio: U tvojoj funkciji koju si mi poslao....

Citat:
Public Function Stanje_Kartice(Sifra_Robe As Long) As Currency

Stanje_Kartice = Nz(DSum("[TRENUTNO STANJE]![ULAZ Query.Sum Of KOLICINA]-[TRENUTNO STANJE]![ULAZ Query.Sum Of KOLICINA]", "TRENUTNO STANJE", "[SIFRA]=" & Sifra_Robe), 0)

End Function


Ja sam ubacio sledecu vrednost u delu IF it is NULL...

Code:
 Public Function Stanje_Kartice(Sifra_Robe As Long) As Integer
        Stanje_Kartice = Nz(DSum("[ULAZ Query.Sum Of KOLICINA]-[IZLAZ Query.Sum Of KOLICINA]", "TRENUTNO STANJE", "[SIFRA]=" & Sifra_Robe), DSum("[ULAZ Query.Sum Of KOLICINA]-0", "TRENUTNO STANJE", "[SIFRA]=" & Sifra_Robe))
 
End Function 


I tako sam kao vrednost funkcije dobio vrednost ulaza posto je u polju QUERY-ja stanje NULL... sto je i bio problem jer sam kao rezultat funkcije dobijao nulu sto je program video kao nedostatak robe na lageru jer nije bilo izlaza....

Funkciju sa novom promenjivom sam iskoristio isto za prepoznavanje poziva sifre artikla ako nema ulaza za taj artikal...


Jos jednom hvala....

 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2831



+45 Profil

icon Re: Prijavljivanje da na lageru nema dovoljno robe08.06.2008. u 18:07 - pre 193 meseci
Podrazumevano stanje UNION upita je da eliminiše duplirane zapise iz rezultata upita unije. Probaj da umesto UNION SELECT napišeš UNION ALL SELECT. Tada bi trebalo da vidiš sve redove iz obe tabele.
 
Odgovor na temu

Robinzon Kruso

Član broj: 41475
Poruke: 191
82.114.95.*



Profil

icon Re: Prijavljivanje da na lageru nema dovoljno robe08.06.2008. u 21:17 - pre 193 meseci
Ubacio sam novo polje PRODAJNA_CENA u tabelu IZLAZI;.....

Imam problem sada kako to polje ubaciti u postojecu podformu.... IFAKTURA Subform

Neki savet...

Thanks




 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2831



+45 Profil

icon Re: Prijavljivanje da na lageru nema dovoljno robe09.06.2008. u 05:56 - pre 193 meseci
Ako se podforma zasniva na tabeli, samo u Design modu podforme dovuci iz Field List to polje na podformu. Ako se zasniva na query-ju, ažuriraj prvo query, pa onda učini ovo što sam napisao u prethodnoj rečenici.
 
Odgovor na temu

[es] :: Access :: Prijavljivanje da na lageru nema dovoljno robe

[ Pregleda: 4297 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.