[ agkiki @ 07.08.2013. 20:32 ] @
Zdravo svima, imam problem da izracunam prosecnu platu recimo za zadnja tri meseca, ako mu u kviriju dam da izracuna
prosek, on izeacuna sve plate unazad, a meni treba u zadnja tri meseca. Zahvalan unapred IKa
[ adzo_ @ 07.08.2013. 20:41 ] @
select top 3 ..... order by....
[ agkiki @ 08.08.2013. 11:33 ] @
Za Sloja a i ostale ako su u mogučnosti.
Treba mi mala pomoc oko izvalacenja proseka neto isplate u zadnja 3 meseca,
kao i obracun za isplatu koja je 65% od proseka.
Neznam kako da uradim ako mi je poznat datum PocBolovanja da u odnosu na ovaj datum unazad ( cele mesece ne racunajuci dane u mesecu kada je zapocelo bolovanje) izracuna prosek neto isplate.
Da bi bilo jasnije kacim primer, molim da mi pomognete jer sto se tice datuma to mi nikako ne ide.
Unapred hvala, IKA
PS. ne znam dali je u redu da se vo radi u kviriju ili da se radi preko funkcije.
[ SLOJ.1973 @ 09.08.2013. 09:04 ] @
Rado bih ti pomogao,ali brate ja tebe nista ne razumem.Ako mozes malo bolje da objasnis,i bez ovoliko gramatickih gresaka.
[ pmiroslav @ 09.08.2013. 09:34 ] @
Možda ovako nekako. Napraviš Query na osnovu tablice 'Table1' i kolonu datIsplate sortiraš Descending. Zatim ideš na Query Properties
i pod Top Values umjesto All napišeš 3. Dobit ćeš Query koji će ti prikazati samo zadnja tri mjeseca

A može i ovako pomoću procedure.

Code:
Function Prosjek() As Double

Dim Db As Database
Dim rs As Recordset

Dim placa As Double
Dim strSQL As String
placa = 0
Set Db = CurrentDb()

strSQL = "SELECT TOP 3 Table1.ID, Table1.datIsplate, Table1.ImeRadnika, Table1.Neto, Table1.ZadatiProcenat " & vbCrLf & _
"FROM Table1 " & vbCrLf & _
"ORDER BY Table1.datIsplate DESC;"

Set rs = Db.OpenRecordset(strSQL)


rs.MoveFirst
Do While Not rs.EOF

'MsgBox rs.Fields(1) & " " & rs.Fields(3)

placa = rs.Fields(3) + placa

rs.MoveNext
Loop
Prosjek = placa / 3
End Function
[ captPicard @ 09.08.2013. 09:37 ] @
Ako je bolovanje započelo 15.08.2013 tebi treba prosjek za 5, 6 i 7 mjesec? Ako je tako onda ti nije problem, tipa (pseudo):

integerMjesecBolovanja = ExtractMonth(dateDatumPocetkaBolovanja);

select sum(neto) / 3 from place where mjesec between :odMjeseca and :doMjeseca (možeš i sa top 3 kao šta je gore kolega predložio, staviš još uvjet da je mjesec < integerMjesecBolovanja)

odMjeseca = integerMjesecBolovanja - 3
doMjeseca = integerMjesecBOlovanja - 1
[ Zoran.Eremija @ 09.08.2013. 11:33 ] @
Kako rece kolega
Citat:
SLOJ.1973: Rado bih ti pomogao,ali brate ja tebe nista ne razumem.Ako mozes malo bolje da objasnis,i bez ovoliko gramatickih gresaka.


Ako sam Vas razumeo da li je ovo to sto zelite?
[ agkiki @ 09.08.2013. 11:52 ] @
Neznam drukcije da objasnim, ali pokušacu.
Naime radniku pocinje bolovanje recimo 15.05.2013 u odnosu na ovaj datum
treba da izvucem zadnja 3 meseca neracunajuci mesec kada je bolovanje otvoreno
a onda izvuci procenat za ista ta 3 meseca, i to umanjiti za 35%.
Izvinjavam se na greškama, ali nadam se da sam sada jasniji.
Ika
[ djoka_l @ 09.08.2013. 17:13 ] @
Uh, ne bih voleo da mi ti obračunavaš platu.

Po tvom pitanju rekao bih da se nisi dobro pripremio i proučio problematiku. Pogledaj, recimo ovaj sajt: http://upravusi.rs/posao/zarada/naknada-zarade-tokom-bolovanja/

Dakle, plata za vreme bolovanja se računa kao 65% plate ZA DANE KADA SI NA BOLOVANJU.
To znači, da ako si u toku meseca 5 RADNIH DANA na bolovanju dobijaš 65% plate, a ostatak meseca 100% plate. Ako mesec ima, na primer, 22 radna dana tada za 17 dana (22-5) dobijaš punu platu, a za 5 dana dobijaš 65% plate. Računica je 17/22+5/22*.65=92% (približno). Po tvojoj računici, radnik bi dobio 65%, odnosno 27% od plate bi mu neopravdano oduzeo.

Drugo, postoji problem ako radnik nije prethodna tri meseca bio zaposlen kod tebe. Tada se uzima onaj prosek koliko je meseci radio, ako je primio bar jednu platu, a ako nije primio ni jednu platu, onda se uzima kao osnova plata koja bi mu bila da nije na bolovanju.

Treće, problem je ako se plata isplaćuje u više delova. Iz tvoje šeme, ne postoji podatak za koji je mesec ta plata (ili deo plate), pa niko na ovom svetu ne može da napiše upit koji uzima poslednje tri plate.

Četvrto, problem sa minimalnom i maksimalnom mogućom isplatom (ne sme da se isplati manje od minimalca, niti više od 5 prosečnih plata),

Peto, tvoj model podataka meša babe i žabe (isplate plata sa datumom početka bolovanja).

Moja preporuka - back to the drawing board (u prevodu, ponovo isprojektuj sistem za obračun plata).
Na žalost, količina slobodnog vremena koje imam na raspolaganju da ti odgovorim nikako nije dovoljna da ti napišem program za obračun plate.
[ agkiki @ 09.08.2013. 18:03 ] @
Jeremija dobro si me razume, to je to, mada su i ostali bili blizu rešenje, u svakom slicaju svima se zahvaljujem.
Ika
[ thenoise @ 12.08.2013. 19:35 ] @
Citat:
Jeremija dobro si me razume...


Što prekrsti čo'eka nesrećo jedna...