[ anjapetar @ 25.04.2011. 03:09 ] @
Postovani Forumasi,

Imam problem i molim za pomoc. Pravim jednu bazu za evidenciju izdavanja alata i sitnog inventara na revers.
Prilikom izdavanja reveresa neophodno je upisati kolicinu izdatog alata (npr. kolicina lopata, kolicina borera, ...). Zelim da uvedem kontrolu da prilikom izdavanja artikala (ajde da ih tako nazovem) unesena kolicina ne moze biti veca od stanja tog artikla u magacinu. Ako je veca zelim da se pojavi poruka npr. "nema dovoljne kolicine u magacinu".

Pokusao sam preko Validation Rule i upisao <=[Lagerlista]![Stanje], ali daje gresku.

Unaprijed HVALA
[ Zidar @ 25.04.2011. 15:52 ] @
Tvoj zadatak nije nimalo lak i u Accesu se jako tesko resava na zadovoljavajuci nacin. Tesko je postaviti ogranicenja na nivou tabela, pa ti ostaje da resavas problem u programskom kodu. Recimo, na formi u koju upisujes izdati materijal, na BeforeUpdate postavis kod koji proverava kolicinu na lageru i poredi je sa trazenom kolicinom. Ako nesto ne valja, ti CANCEL update. Ovo obicno u praksi radi OK, pod uslovom da se bazi uvek i uvek pristupa za upis samo kroz tvoj program.

Na nivou tabela bi moglo da se resi, ali je tesko i za velike masjtore sa mnogo iskustvva. nesto smo o tome raspravljali u temi http://www.elitesecurity.org/t...davanje-serijskih-brojeva-bazu Nije bas ono sto ti treba, ali se moze videti ideja. Slicnu stvar, samo za MS SQL imas ovde http://www.elitesecurity.org/t425853-Computed-DatumDo
MS SQL primer pokazuje kako se na nivou tabela prati stanje na lageru. Medjutim, ponovo, to je jako komplikovano da se izvede u Accesu, pa ti ponovo preporucujem programski kod u before Update eventu za formu kroz koju unosis podatke.

[ izonic @ 25.04.2011. 23:35 ] @
Malo si dao da bi se moglo ista konkretno reci.
Vjerovatno imas dvije tabele odnosno trebalo bi da imasmada moze biti i jedna.
Bolje ovako reci.
Imas tabelu koja vodi evidenciju odnosno tabelu popisa svih alata koje posjedujes.
I trebalo bi das imas drugu tabelu koja vrsi evidenciju izdavanja i vracanja ili mozda imas i ovdje dvije.
Sve ovidi kako si napravio.
Bez tacno odredjenog opisa ovih tabela ne moze se napraviti stanje.
Ako to malo opises ili pak okacis primjer sa manjim brojem podataka onda ti mozda neko i pomogne.
[ anjapetar @ 26.04.2011. 23:48 ] @
Citat:
izonic: Malo si dao da bi se moglo ista konkretno reci.
Vjerovatno imas dvije tabele odnosno trebalo bi da imasmada moze biti i jedna.
Bolje ovako reci.
Imas tabelu koja vodi evidenciju odnosno tabelu popisa svih alata koje posjedujes.
I trebalo bi das imas drugu tabelu koja vrsi evidenciju izdavanja i vracanja ili mozda imas i ovdje dvije.
Sve ovidi kako si napravio.
Bez tacno odredjenog opisa ovih tabela ne moze se napraviti stanje.
Ako to malo opises ili pak okacis primjer sa manjim brojem podataka onda ti mozda neko i pomogne.



Evo okacio sam primjer. On je nezavrsena mjesavina programa za evidenciju osnovnih sredstava i ovog koji predstavlja evidenciju izdatih alata. Nadam se da cete se snaci, u protivnom pisite da vam pojasnim gdje treba rijesiti ovaj problem.

Unaprijed HVALA na dobroj zelji i volji da mi pomognete.
[ izonic @ 27.04.2011. 01:46 ] @
U formi Roba 'subform zaduzenje' na polje 'Invbr' u rovsource postavi ovo:
Code:
SELECT Roba.Invbr, Sum([Osnovna sredstva - nabavka 1].Kolicina) AS K, Sum(IIf([zad-razd]=2,[kolic]*-1,[Kolic])) AS KolicinaZ, [K]-[KolicinaZ] AS Stanje FROM Roba INNER JOIN [Osnovna sredstva - nabavka 1] ON Roba.Invbr=[Osnovna sredstva - nabavka 1].Invbr GROUP BY Roba.Invbr


U culumn count stavi;4
column widths:1,3;0,0,1,3
list width:2,6
Na polje kolic na on exit odaberi:
[Event Procedure]
i postavi ovaj kod:
Code:
Private Sub Kolic_Exit(Cancel As Integer)
Dim Stanje As Single

If Format$(Me.Kolic) <> "" Then
Stanje = Val(Me.Invbr.Column(3)) - Me.Kolic
    If Stanje < 0 Then
    MsgBox "Na stanju ima samo:" & Me.Invbr & ":" & Me.Invbr.Column(3)
    Cancel = True
    End If
End If
Me.Invbr.RowSource = Me.Invbr.RowSource
End Sub


Drugi put kada postavljas nesto zamolio bih te da postavis samo ono sto se tice pitanja i da objasnis tako da drugi nemoraju desifrovati sta si ti radio te samim tim ce ti prije i pomoci.
Hvala.
[ anjapetar @ 01.05.2011. 07:13 ] @
Hvala na brzom odgovoru. Probaću da odradim.