Nece moci ovako. Ti hoces da se keru izvrsi za izabrane "Tekovni Naracki", one koje izaberes na listi. Znaci, kveri bi zigledao nekako ovako:
SELECT ...
FROM tblNaracki
WHERE Naracki_ID IN (21,22,23)
E, sad, ovaj uslov IN je promenljiv. Ne mozes ga poslati kveriju onako kako si zamislio. Moras da promenis ceo SQL izraz za taj kveri.
Moze na dva nacina:
A)Komplikovani nacin, s puno programiranja, tesko za debugging, ali ljudi to vole da rade. Ovako nekako:
1) Izaberes listu Naracki_ID, na formi
2) Napravis funkciju koja vraca strWhere, ovako:
Code:
"strWhere = "WHERE tblNaracki.Izvrsena = False
AND tblNaracki.ID_Naracka IN ( 23, 22, 21, 20)
AND tblNaracki.Data_Naracka BETWEEN ( Now() - 1 ) AND ( Now() ) "
3) sastvi SQL izskaz za ceo kveri, ovako, u nekoj funkciji, strSQL():
Code:
strSQL = ""
strSQL = strSQL & "SELECT tblKomitenti.Komitent_Ime, " & vbCrLf
strSQL = strSQL & " tblNaracki_Artikli.Artikal, " & vbCrLf
strSQL = strSQL & " SUM(tblNaracki_Artikli.Kolicina) AS SumOfKolicina " & vbCrLf
strSQL = strSQL & "FROM (tblKomitenti " & vbCrLf
strSQL = strSQL & " INNER JOIN tblNaracki " & vbCrLf
strSQL = strSQL & " ON tblKomitenti.ID_Komitent = tblNaracki.Komitent) " & vbCrLf
strSQL = strSQL & " INNER JOIN tblNaracki_Artikli " & vbCrLf
strSQL = strSQL & " ON tblNaracki.ID_Naracka = tblNaracki_Artikli.Broj_Naracka " & vbCrLf
strSQL = strSQL & strWhere & vbCrLf
strSQL = strSQL & "GROUP BY tblKomitenti.Komitent_Ime, " & vbCrLf
strSQL = strSQL & " tblNaracki_Artikli.Artikal " & vbCrLf
strSQL = strSQL & "ORDER BY tblNaracki_Artikli.Artikal"
4. promeni SQL za tvoj kveri, ovako
Code:
dim db as DAO.Datbase
dim qdef as DAO.Querydef
set db = currentdb()
set qdef = db.querydefs("qryNaracki_Komitenti")
qdef.SQL = strSQL()
5. Sad si spreman da odradis Docmd.OpenQuery "qryNaracki_Komitenti"
Ima i prostije resenje, bez programiranja. To u sledecem postu, dok vidim sta je lakse, da se opisuje resenje ili da ga samo napravim pa gledaj.
[Ovu poruku je menjao Zidar dana 07.06.2010. u 16:16 GMT+1]