Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 6 odgovora
  • 3.828 pregleda

Najnovija ↓

Uslov na Queries od funkcija 07.06.2010. u 11:32 · pre 199 meseci #1
Pozdrav svima.
Imam edno query koe treba da ima uslov od funkcija koja dava rezultat "10 or 20 or 31" i taka redosledno kade sto broevite se edinstveni i se od ID poleto.
Koga ke ja dodadam funkcijata vo Queryto kako uslov mi dava poraka Data type mismatch in criteria expresion .
Dajte nekoj predlog
Potpis
Z34GAL
Re: Uslov na Queries od funkcija 07.06.2010. u 15:00 · pre 199 meseci #4
Grešku prijavljuje jer ti je polje navedeno u query-ju ID_Naracka tipa broj,a polje txtNaracki je tipa tekst.Nemam sada vremena,pokušaću kasnije da odradim primer.
Potpis
Jednog dana...
Re: Uslov na Queries od funkcija 07.06.2010. u 15:43 · pre 199 meseci
izmenjeno 1 put, poslednji put Zidar 07.06.2010. u 16:16
  1. Zidar07.06.2010. u 16:16zapis iz teksta poruke
#6
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.

:-)
Re: Uslov na Queries od funkcija 07.06.2010. u 16:15 · pre 199 meseci #7
Vidim da ti je Zoran dao elegantno resenje. Umesto kverija, otvara formu koja filtrira ID_Naracka. Na isti nacin moze da se umesto forme otvori report. I kod je minimalan. Svaka cast.

Evo i moje resenje, u principu slicno Zoranovom. Filtriranje se izvodi izvan kverija qryNaracki_Komitenti. Tu je glavni stos.

a) Zahteva se pomocna tabela, tblNaracki_Lista, koja se napuni filtriranim podacima
b) Lista na formi se izbaci, umesto nje se stavi subforma koja dolazi iz pomocne tabele
Na subformi se cekiraju rekordi koje zelis da vidis u kveriju
c) pomocna tabela se ubaci u kveri qryNaracki_Komitenti, uz uslov tblNaracki_Lista.Izabran = TRUE

Jedini kod je formin OnOpen event, gde se tabela tblNaracki_Lista prvo isprazni pa napuni filtriranim podacima (Izvrsena = False , Data_Naracka BETWEEN Now() - 1 AND Now()

Kveri qryNaracki_Komitenti sada mozes da upotrebis kako hoces, kao osnovu za izvestaj ili formu.

:-)


Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme