Centar za edukaciju-BiH



#11 12.01.2016 17:38
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,644


Predmet:Re: Problem sa DMAX
Zaboravih te pitati sta ces sa obracunskim periodom. Hoces li ostaviti kao string.
Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#12 12.01.2016 18:37
kenan Van mreze
Clan
Registrovan od:10.02.2011
Postovi:191


Predmet:Re: Problem sa DMAX
on jeste string
sto se tice tabele aktiv ona je čisto pomoć za filtriranje i može se izbaciti
↑  ↓

#13 12.01.2016 18:41
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,644


Predmet:Re: Problem sa DMAX
Evo ti procedura pa je stavi u neki modul.
Option Compare Database
Option Explicit

PreuzmiIzvorni kôd (Visual Basic):
  1. Function Iznos(Red As Integer, Optional Konto As String = "6%", Optional Godina As Integer = 0, _
  2. Optional Firma As Integer = 1, Optional Period As String = "GODISNJI")
  3. '----------------------------------------------------------
  4. Dim Db As DAO.Database
  5. Dim Rs As DAO.Recordset
  6. Dim SQL As String
  7. Dim QDF As QueryDef
  8. Dim I As Integer
  9.  
  10.  
  11. If Godina = 0 Then Godina = Year(Date)
  12. SQL = "SELECT top " & Red & " Sum([duguje]-[potrazuje]) AS Iznos, Left([stavgk]![konto],3) AS Sink " _
  13.     & "FROM stavgk " _
  14.     & "WHERE Left([stavgk]![konto],3) ALike '" & Konto & "' AND period=" & Godina _
  15.     & " AND firmaID=" & Firma & " AND ObracinskiPeriod='" & Period & "'" _
  16.     & "GROUP BY Left(konto,3)" _
  17.     & "HAVING Sum([duguje]-[potrazuje])<0 " _
  18.     & "ORDER BY Sum([duguje]-[potrazuje])"
  19.  
  20. Set Db = CurrentDb
  21. Set Rs = Db.OpenRecordset(SQL)
  22.  
  23. For I = 1 To Red
  24. Konto = Rs!sink
  25. Rs.MoveNext
  26. Next I
  27. SQL = "SELECT top " & Red & " Sum([duguje]-[potrazuje]) AS Iznos, Left([stavgk]![konto],3) AS Sink " _
  28.     & "FROM stavgk " _
  29.     & "WHERE Left([stavgk]![konto],3) ALike '" & Konto & "' AND period=" & Godina _
  30.     & " AND firmaID=" & Firma & " AND ObracinskiPeriod='" & Period & "'" _
  31.     & "GROUP BY Left(konto,3)" _
  32.     & "HAVING Sum([duguje]-[potrazuje])<0"
  33. Set QDF = Db.QueryDefs("QQ")
  34. QDF.SQL = SQL
  35. End Function

Moras napraviti i neki Query po zelji samo je bitno da se zove QQ.
Procedura se poziva po imenu ali ima i ulazne parametre samo je jedan obavezujuci.
Primjer
Cal Iznos(2,"6%",2014,3,"GODISNJI")
2-Znaci drugi najveci iznos (apsolutna vrijednost) obavezan unos
"6%"-Kriterij za konto koji ce uzimati ukoliko ne upises nista bit ce "6%"
2014- godina za koju radis. Ukoliko ne upises nista onda tekuca godina tj. 2016
3- Å ifra firme. Ukoliko ne upises nista onda je 1.
"Godisnji"- Period obracuna. Ukoliko ne upises nista onda je "GODISNJI"

znaci proceduru mozes pozvati i na ovaj nacin:
Call Iznos(2)

Rezultat ces naci u Query-ju QQ.
Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#14 12.01.2016 20:53
kenan Van mreze
Clan
Registrovan od:10.02.2011
Postovi:191


Predmet:Re: Problem sa DMAX
jedno možda glupo pitanje ako sam ja shvatio ovu proceduru kako da punim ova polja iz tabele aktiv jer se poziva polju reporta
↑  ↓

#15 12.01.2016 21:15
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,644


Predmet:Re: Problem sa DMAX
Prvo nema glupog pitanja.
Samo odgovora ima glupih.

Vidi ovako Ja nisam znao gdje ces ti to koristiti niti koliko kriterija imas pa sam napravio malo sire pa izgleda komlikovano.

Gore sam naveo kako se poziva procedura a rezultat je uvije u Query-ju QQ.
Primjer.
Ako to hoces koristiti na izvjestaju.

Napravis izvjestaj sa u kome je recordsource Query QQ i zapises ga napr. pod imenom Q_Dugovanja.
Sada odnekle moras pdoci taj izvjestaj.
Ako to radis preko nekog komandnog tastera.
e na tom tasteru prije podizanja izvjestaja pozoves ovu proceduru.
Ako nebude islo ti napisi sta zelis pa zakaci.
Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#16 12.01.2016 21:19
kenan Van mreze
Clan
Registrovan od:10.02.2011
Postovi:191


Predmet:Re: Problem sa DMAX
Ustvari radim na jednom izvještaju od tridesetak strana kucanog materijala gdje se podatci uzimaju buklano za svako polje iz funcije zato pitam

primjer jednog polja

="1.1. Ostvareni ukupan prihod u obračunskom periodu " & [godina] & ". godini, iznosi: " & AnalizaBU1() & ", Å¡to je u odnosu na isti period prethodne godine, " & AnalizaBU3() & " za " & Format(IIf(AnalizaBU1()-AnalizaBU2()>0;AnalizaBU1()-AnalizaBU2();AnalizaBU2()-Analiz
aBU1());'#.#00,00" KM"') & " ili " & FormatPercent(IIf(AnalizaBU1()/AnalizaBU2()-1>0;AnalizaBU1()/AnalizaBU2()-1;-(AnalizaBU1()/AnalizaBU2()-1));2) & "."
↑  ↓

#17 12.01.2016 21:39
kenan Van mreze
Clan
Registrovan od:10.02.2011
Postovi:191


Predmet:Re: Problem sa DMAX
AKO SAM DOBRO SKONTAO PROCEDURU AKO BIH OVO STAVIO FIKSNO Optional Red As Integer = 2 ONDA BIH MOGAO POZIVATI IZ POLJA =iznos() i olaksao bih i vama da se nemucite samnom
↑  ↓

#18 12.01.2016 21:55
kenan Van mreze
Clan
Registrovan od:10.02.2011
Postovi:191


Predmet:Re: Problem sa DMAX
ja ipak odradio po svom i radi mi super

Function AnalizaBU11(Optional Red As Integer = 2, Optional Konto As String = "6%")
'---------------------------------------------
-------------
Dim Db As DAO.Database
Dim Rs As DAO.Recordset
Dim SQL As String
Dim I As Integer

SQL = "SELECT top " & Red & " Sum([duguje]-[potrazuje]) AS Iznos, Left([stavgk]![konto],3) AS Sink " _
& "FROM AKTIV INNER JOIN stavgk ON (AKTIV.ObracinskiPeriod = stavgk.ObracinskiPeriod) AND (AKTIV.godina = stavgk.period) AND (AKTIV.firma = stavgk.firmaID) " _
& "WHERE Left([stavgk]![konto],3) ALike '" & Konto & "'" _
& " GROUP BY Left(konto,3) " _
& "HAVING Sum([duguje]-[potrazuje])<0 " _
& "ORDER BY Sum([duguje]-[potrazuje])"

Set Db = CurrentDb()
Set Rs = Db.OpenRecordset(SQL)
For I = 1 To Red
Konto = Rs!sink
Rs.MoveNext
Next I
SQL = "SELECT top " & Red & " Sum([duguje]-[potrazuje]) AS Iznos, Left([stavgk]![konto],3) AS Sink " _
& "FROM AKTIV INNER JOIN stavgk ON (AKTIV.ObracinskiPeriod = stavgk.ObracinskiPeriod) AND (AKTIV.godina = stavgk.period) AND (AKTIV.firma = stavgk.firmaID) " _
& "WHERE Left([stavgk]![konto],3) ALike '" & Konto & "'" _
& " GROUP BY Left(konto,3) " _
& "HAVING Sum([duguje]-[potrazuje])<0"
Set BU11 = Db.OpenRecordset(SQL)
AnalizaBU11 = BU11!Iznos
End Function
↑  ↓

#19 12.01.2016 21:56
kenan Van mreze
Clan
Registrovan od:10.02.2011
Postovi:191


Predmet:Re: Problem sa DMAX
hvala na angažmanu rješenje možda izgleda glomazno ali je ustvari vrlo jednostavno
↑  ↓

#20 12.01.2016 22:02
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,644


Predmet:Re: Problem sa DMAX
Ako hoces samo iznos onda mozes skratiti proceduru.
Function AnalizaBU11(Optional Red As Integer = 2, Optional Konto As String = "6%")
'---------------------------------------------

-------------
Dim Db As DAO.Database
Dim Rs As DAO.Recordset
Dim SQL As String
Dim I As Intege
Dim Iznos as Currency

SQL = "SELECT top " & Red & " Sum([duguje]-[potrazuje]) AS Iznos, Left([stavgk]![konto],3) AS Sink " _
& "FROM AKTIV INNER JOIN stavgk ON (AKTIV.ObracinskiPeriod = stavgk.ObracinskiPeriod) AND (AKTIV.godina = stavgk.period) AND (AKTIV.firma = stavgk.firmaID) " _
& "WHERE Left([stavgk]![konto],3) ALike '" & Konto & "'" _
& " GROUP BY Left(konto,3) " _
& "HAVING Sum([duguje]-[potrazuje])<0 " _
& "ORDER BY Sum([duguje]-[potrazuje])"

Set Db = CurrentDb()
Set Rs = Db.OpenRecordset(SQL)
For I = 1 To Red
Iznos = Rs!Iznos
Rs.MoveNext
Next I
AnalizaBU11 =Iznos
End Function
Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

Stranice (2):1,2


Sva vremena su GMT +01:00. Trenutno vrijeme: 8: 19 pm.