Warning: Illegal string offset 'status' in /home2/icentarb/public_html/icentar/print.php on line 190

Warning: Illegal string offset 'status' in /home2/icentarb/public_html/icentar/print.php on line 190

Warning: Illegal string offset 'status' in /home2/icentarb/public_html/icentar/print.php on line 190

Warning: Illegal string offset 'status' in /home2/icentarb/public_html/icentar/print.php on line 190

Warning: Illegal string offset 'status' in /home2/icentarb/public_html/icentar/print.php on line 190
iCentar » Racunari i oprema » Programirannje i baze podataka » Access » Problem sa DMAX
kenan 11.01.2016 19:54
Predmet:Problem sa DMAX

Imam mali problem neznam kako da dobijem rezultat iz ovog query-a i da mi izvuče maksimalnu vrijednost

Function AnalizaBU7()
Dim variable
SQL = "SELECT Sum([stavgk]![duguje]-[stavgk]![potrazuje]) AS iznos, Left([stavgk]![konto],3) AS Sink FROM AKTIV INNER JOIN stavgk ON (AKTIV.firma = stavgk.firmaID) AND (AKTIV.godina = stavgk.period) AND (AKTIV.ObracinskiPeriod = stavgk.ObracinskiPeriod) WHERE (((Left([stavgk]![konto],3)) ALike '6%')) GROUP BY Left([stavgk]![konto],3) HAVING (((Sum([stavgk]![duguje]-[stavgk]![potrazuje]))<0)) ORDER BY Left([stavgk]![konto],3);"
Set BU11 = CurrentDb().OpenRecordset(SQL)
variable = DMax("IZNOS", "BU11")
MsgBox variable
End Function

kenan 11.01.2016 22:35
Predmet:Re: Problem sa DMAX

ovo gore sam rješio vrlo jednostavno sa TOP 1

SQL = "SELECT TOP 1 Sum([stavgk]![duguje]-[stavgk]![potrazuje]) AS iznos, Left([stavgk]![konto],3) AS Sink FROM

e sad gori problem iz predhodnog query-ija trebam izvuči drugi po veličini iznos sa top 2 ne ide jer prikaze dva reda e sad bi mi trebala pomoč jer ovo dole ne radi

variable = DMin("IZNOS", "BU11")

zxz 11.01.2016 23:03
Predmet:Re: Problem sa DMAX

Da nebi pravili tvoju tabelu i popunjavali zakaci primjer lakse je jer je poprilicno lomplikovan SQL pa je tesko ispratiti.

zxz 12.01.2016 00:45
Predmet:Re: Problem sa DMAX

Citat:
Imam mali problem neznam kako da dobijem rezultat iz ovog query-a i da mi izvuče maksimalnu vrijednost

Moras reci iz kojeg polja trazis max vrijednost i na osnovu cega.

Probao sam i tvoj SQL ali i on je nepotpun u stvari pise da nedostaje tabela.

kenan 11.01.2016 23:27
Predmet:Re: Problem sa DMAX

OVO JE ISPRAVNO SADA ZABORAVIO JEDNU TABELU
Prilozi:
New Microsoft Access Database.rar (Velicina datoteke:36.94 KB)

zxz 12.01.2016 12:22
Predmet:Re: Problem sa DMAX

Kopao sam jos malo dalje pa imam nekih sugestija.
Prvo na polju obracunski period trebala bi kodna tabela, jer ako dozvolis upis tu ce biti more gresaka a posto po tom polju selektujes podatke za pretragu dobivat ces i netacne rezultate.
U ovom Query-u sto si napravio ti hoces vrijednsoti za sve firme za sve godine tih firmi i za sve obracunske periode.
To je poprilicno podataka i vjerujem kada se napuni podacima to ce sporo raditi.
Ukoliko bi izbacijo tabelu aktiv a u Query ubacio jos kriterija i to na poljima godina period i firmaId tada bi to radilo dobro.
Znaci imao bi query gdje bi prije podizanja dao uslov za koju godinu zelis obracun za koji period i koju firmu.
E sad dali bi tebe to zadovoljavalo neznam.
U svakom slucaju treba se malo ozbiljnije pozabaviti ovime.
Query moze svasta uraditi ako se raddi o podacima reda stotina a kad to predje na desetke hiljada onda je to upitno.

zxz 12.01.2016 18:38
Predmet:Re: Problem sa DMAX

Zaboravih te pitati sta ces sa obracunskim periodom. Hoces li ostaviti kao string.

kenan 12.01.2016 19:37
Predmet:Re: Problem sa DMAX

on jeste string
sto se tice tabele aktiv ona je čisto pomoć za filtriranje i može se izbaciti

zxz 12.01.2016 19:41
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.

kenan 12.01.2016 10:43
Predmet:Re: Problem sa DMAX

polje iznos je vezano za max
Prilozi:
New Microsoft Access Database.rar (Velicina datoteke:38.04 KB)