[ Jovan1970 @ 13.07.2011. 08:43 ] @
imam formu za izbor kriterijuma u upitu
sintaksa je: Forms![imeforme].[imeobjekta]
objekat na formi je listbox.
interesuje kako da podesim upit ako mi je u listbox-u podesena opcija multi select na extend ili simple
pozdrav.

zaboravio sam da pitam sledece,
ako nista nije cekirano u list ili combo boksu da izlista sve po upitu da li je to moguce

[Ovu poruku je menjao Jovan1970 dana 13.07.2011. u 09:56 GMT+1]
[ smal @ 13.07.2011. 10:18 ] @
Ne znam šta želiš sa tim izborom kriterijuma, ali evo primer koji sam koristio za neku svoju aplikaciju, pa ga prilagodi:

Code:
Private Sub lstDob_Click()

CurrentDb.Execute ("UPDATE [tblTempKalk] SET [Izabrana] = NO")
  
Dim varItm
  
For Each varItm In Me.lstDob.ItemsSelected
CurrentDb.Execute ("UPDATE [tblTempKalk] SET [Izabrana] = True WHERE [SifDob] ='" & Me.lstDob.Column(0, varItm) & "'")
  
Next

Forms![frmMain]![frmTempKalk].Requery
Me.lstDob.Requery
  
End Sub


Kod je postavljen na On Click Event listboxa "lstDob", i selektovanjem šifre dobavljača (text polje) sa liste, vrši se update privremene tabele "tblTempKalk"...
[ Jovan1970 @ 13.07.2011. 10:54 ] @
evo sada cu da postavim primer,
u formi PRIMER mogu da odaberem jednu stavku iz liste radno mesto, upit mi vrati sva imena kod kojih je recimo radno mesto vozač,
ali ja bih zeleo da selektujem recimo sve vozače i sve radnike odjednom, ili ako ne selektujem nikog da mi vrati celu tabelu.
nadam se da sam bio jasan ako nisam probacu da pojasnim

evo i 2003 verzija

[Ovu poruku je menjao Jovan1970 dana 13.07.2011. u 17:39 GMT+1]
[ SLOJ.1973 @ 13.07.2011. 11:39 ] @
Hajde prebaci bazu u access 2003 ,jer na poslu nemam 2007.
[ Zoran.Eremija @ 13.07.2011. 15:07 ] @
Evo jedan nacin resenja...
[ Jovan1970 @ 13.07.2011. 17:27 ] @
dali ovo moze da se primeni na upit kao u primeru ili iskljucivo na formu
[ Zoran.Eremija @ 13.07.2011. 18:09 ] @
Svakako da moze...
[ Zoran.Eremija @ 14.07.2011. 18:15 ] @
Korigaovao sam malo kod
[ Getsbi @ 14.07.2011. 18:27 ] @
Iako ovo pitanje nije do sad postavljano, cenim da je link do ove teme zaslužio da se nađe na spisku "Često postavljana pitanja".
[ Jovan1970 @ 14.07.2011. 19:35 ] @
bicu tri dana na terenu pa nisam stigao da pogledam primere, ali pogledacu pa cu se javiti u nedelju, kada budem imao vise vremena
sigurno mi nece biti sve jasno
pozdrav i hvala na vasem vremenu
[ joojant200 @ 14.07.2011. 20:44 ] @
Citat:
Getsbi: Iako ovo pitanje nije do sad postavljano, cenim da je link do ove teme zaslužio da se nađe na spisku "Često postavljana pitanja".


Ili u sve što ste oduvek želeli da znate o accessu (ali niste smeli da pitate) bas mi je ovo trebalo pre par meseci, lupao glavu jedan dan i odustao :D
[ Getsbi @ 15.07.2011. 11:18 ] @
Jedno malo pojašnjenje u vezi osobine Multi Select list kontrole.

Ako je osobina liste Multi Select postavljena na:

1. Simple - Odabir se vrši klikanjem miša

2. Extend - Odabir se vrši uz pomoć tastera Ctrl (za nesusedne stavke) ili Shift (zasusedne stavke).
[ Jovan1970 @ 05.09.2011. 08:27 ] @
pozdrav evo posle duze pauze da se vtratim na temu

Option Compare Database

Private Sub Command4_Click()

Dim ctlList As Control, varItem As Variant
Dim Uslov As String
Dim Polje As String
Polje = "(((RadnoMestoID)="
Uslov = ""

Set ctlList = Forms!PRIMER!List5

For Each varItem In ctlList.ItemsSelected
Uslov = Uslov + Polje & ctlList.ItemData(varItem) & ")) OR "
Next varItem

If Len(Uslov) = 0 Then
DoCmd.OpenForm "PrimerLista"
DoCmd.SetWarnings False
DoCmd.OpenQuery "QPrimer", , acEdit
DoCmd.SetWarnings True
Exit Sub
End If

Uslov = Mid(Uslov, 1, Len(Uslov) - 4)

DoCmd.OpenForm "PrimerLista", , , Uslov
DoCmd.SetWarnings False
DoCmd.OpenQuery "QPrimer", , acEdit
DoCmd.ApplyFilter , Uslov
DoCmd.SetWarnings True

End Sub


potrebno mi je objasnjenja ovog dela koda ako je moguce:

Uslov = Mid(Uslov, 1, Len(Uslov) - 4)

DoCmd.OpenForm "PrimerLista", , , Uslov
DoCmd.SetWarnings False
DoCmd.OpenQuery "QPrimer", , acEdit
DoCmd.ApplyFilter , Uslov
DoCmd.SetWarnings True
[ Trtko @ 05.09.2011. 08:59 ] @
Citat:

potrebno mi je objasnjenja ovog dela koda ako je moguce:
Uslov = Mid(Uslov, 1, Len(Uslov) - 4)


Najlakše ti je da vidiš što ti funkcija radi da ispišeš Uslov prije funkcije i poslije

msgbox uslov ...... pa bi ti on ispisao npr

marko OR janko OR zika OR

u onoj petlji ti uvijek na kraju stringa u uslov-u ostaje OR pa ga je zato potrebno izbaciti

MID funcija izdvaja dio stringa iz nekog stringa novitrt=MID(trt, 5 , 15 ) , tu si rekao , odvoji mi od 5 početnog do 15 slova tekst iz teksta trt

LEN(uslov) ti kaze koliko ima slova ( zajedno sa praznim poljima) u nekome stringu



Uslov = Mid(Uslov, 1, Len(Uslov) - 4)

msgbox uslov ...... bi ti sad izgledao ovako

marko OR janko OR zika


Pozdrav
[ Jovan1970 @ 05.09.2011. 09:05 ] @
to sam shvatio samo kod mene to nece da radi verovatno gresim u sintaksi pa
evo malog primera, ustvari deo moje baze u kojoj imam problema sa definicijom kriterijuma za upit

[ Zoran.Eremija @ 05.09.2011. 13:56 ] @
Da li je ovo to sto ste zeleli?
[ Jovan1970 @ 05.09.2011. 14:18 ] @
da to je to
hvala
a da li bi moglo malo objasnjenje u cemu sam gresio
[ Jovan1970 @ 10.06.2017. 17:04 ] @
evo posle više godina da se opet javim u vezi iste teme

da li je moguce dodati filter u akcioni upit
[ Getsbi @ 10.06.2017. 18:10 ] @
Naravno da može. Akcioni upiti mogu biti razni: Make, Append, Update i Delete. Samo treba da ima smisla. Horizontalni filter postavljaš sa reči WHERE i uslovom iza te reči.
Recimo da je zadatak ovakav: Ažuriraj kolonu cena u tabeli "Table1" s kolonom cena iz tabele "Table2" za zadati uslov da je artikal isti u obe tabele.

UPDATE Table1
INNER JOIN Table2
ON Table1.Art = Table2.Art
SET Table1.Cena = Table2.cena
WHERE (((Table1.Art)=[Table2].[art]));
[ Miki2013 @ 21.06.2017. 13:59 ] @
Treba mi pomoc oko upita i izvjestaja.

Radi se o testiranjima fizicke spremnosti.

Problem: Obrazac testiranja je univerzalni i sadrzi polja za 3 vrste testiranja
Prvi test, Drugi test i Zavrsni test

Zanima me kako da u zbirnom izvjestaju prikazem i lica koja nemaju provedena sva 3 testa?

Za pojedinacne izvjestaje sam napravio 3 upita (prema datumu testiranja) i to radi dobro. Prikazuje mi ono sto mi treba.

Upit za zbirni sam napravio spajanjem tri pojedinacna (obzirom da ima i statickih podataka - ime, prezime, pol itd i dinamickih: broj sklekova, bodovi, procenat itd.)

Pitanje?

Kako da u zbirnom izvjestaju dobijem i lice koje ima npr. samo prvi i drugi a ne i zavrsni test, odnosno da mi prikaze samo ono sto ima zavrseno?

Probao sam sa Is Null or Is Not Null ali ne ide, prikazuje mi samo lica koja imaju sva tri testa zavrsena.
[ Getsbi @ 21.06.2017. 14:39 ] @
Treba ti unakrsni (crosstab) upit. Pročitaj na forumu i u Access helpu kako se to radi.
[ Miki2013 @ 21.06.2017. 14:56 ] @
Hvala Getsbi na javljanju...
Probao sam ali Crosstab mi daje ogranicene mogucnosti... Ne treba mi nista da zbrajam, racunam i sl. to vec sam program radi tokom unosa.

Najvise bi mi odgovaralo ako bi mogao nekako i prazne vrijednosti uvesti u izvjestaj.
[ Getsbi @ 21.06.2017. 16:07 ] @
Pogledaj sliku.


Ako dobro pripremiš podatke dobićeš ušravo ono što si tražio. Nemoj da odustaneš.
[ Miki2013 @ 21.06.2017. 17:46 ] @
Evo pokušavam razne varijante ali kako god crosstab mi ne dozvoljava da se "organizujem" i dobijem one podatke sa moje slike plus fiksne podatke koji se ne vide na slici.

Ima iznad jos podataka npr.Index, ime, prezime, pol, godine starosti, tezina, visina, BMI itd.
a na slici imamo 4 discipline + 4x bodovi za iste (procenat je nebitan, on je u sustini bodovi) i sve to razvrstati u 3 datuma testiranja.

Uhhh previse komplikovano.
U ovom zbirnom upitu mi nesto ne valja izgleda.
[ Getsbi @ 21.06.2017. 18:18 ] @
Naravno da ne može kad nisu dobro organizovani podaci.
Neke stvari ti manjkaju u poznavanju relacione teorije. Za početak raskini vezu između tabela. Svakoj tabeli zadaj Primerni ključ tipa OsobaID i TestID. Iz tabele tblTest izbaci sve kolone o osobi, i dodaj joj OsobaID. Sada ih poveži i tek onda puni podacima.

Drugi korak je da napraviš izvor za Crosstab upit. Pošto Crosstab upit može da se zasniva samo na jednoj tabeli ili jednom upitu, tad napravi jedan upit (sa ove dve povezane tabele) gde ćeš imati sve relevantne podatke za budući izveštaj.

Treći korak je pravljenje Crosstab upita.

Prvi korak sam ti uradio u prilogu.
[ Miki2013 @ 23.06.2017. 22:24 ] @
Evo citav dan se patim sa tim Crosstab-om ali ne ide pa ne ide.
[ Miki2013 @ 26.06.2017. 22:34 ] @
Uspio sam ovo rijesiti i bez Crosstaba. Samo sam se malo "poigrao" relacijama u upitima.
Getsbi, veliko hvala na podrsci i pomoci jer malo je nedostajalo da odustanem.
[ Miki2013 @ 30.06.2017. 22:19 ] @
Treba mi pomoć oko izvještaja.

Imam 4 moguće situacije

1. Ako testirano lice ima 2 testa i na drugom testu nije zadovoljio neku od disciplina tade se tretira kao da nije prošlo testiranje.

If (Me.Ocjena1 = 2 Or 3 Or 4 Or 5) And (Me.Ocjena2 = 1) And IsNull(Me.Ocjena3) Then
Me.Konacna_ocjena = 1
End If

2. Ako je testirano lice prošlo oba testa pozitivno

If (Me.Ocjena1 = 2 Or 3 Or 4 Or 5) And (Me.Ocjena2 = 2 Or 3 Or 4 Or 5) And IsNull(Me.Ocjena3) Then
Me.Konacna_ocjena = (Me.Ocjena1+Me.Ocjena2) /2
End If

3. Ako je lice prošlo prvu provjeru, na drugoj palo te mu omogućena 3.provjera

If (Me.Ocjena1 = 2 Or 3 Or 4 Or 5) And l(Me.Ocjena3 =1) and (Me.Ocjena3 = 2 Or 3 Or 4 Or 5) Then
Me.Konacna_ocjena = (me.Ocjena1+me.Ocjena3) /3
End If

4. Ako lice ima samo jednu provjeru do momenta štampanja zbirnog izvještaja

If (Me.Ocjena1 = 2 Or 3 Or 4 Or 5) And IsNull(Me.Ocjena2) And IsNull(Me.Ocjena3) Then
Me.Konacna_ocjena = Me.Ocjena1
End If

Dakle, Izvještaj uredno uvozi podate iz upita samo bih sad trebao nekako kad otvorim izvještaj da mi se unutra iskalkulišu ove 4 varijante.
Probao sam mnogo kombinacija i uvijek mi rade ispravno samo dvije od četiri.

Ako ima i neka sretnija opcija da ovo rijesim tim bolje.

Ovo sam sve stavljao u Private Sub Report_Page()
Možda i tu griješim...

Hvala unaprijed.


[ Getsbi @ 01.07.2017. 10:40 ] @
To da nešto štampaš u izveštaju a da želiš da na kraju imaš konačnu ocenu je Ok. To što pokušavaš da to radiš na događaj izveštaja je loš pristup. Takav podatak bi morao da postoji u Record Source samog izveštaja. Dakle u nekom upitu na koji se izveštaj poziva.
Zašto kažem da je loš. Zato što kad štampa stigne do kraja strane ti hoćeš da sračuna nešto što se radi od poičetka. Za višestruki prolaz kroz izveštaj postoji način na događaj On Format, kada Access prikupi zapise koji idu u odeljak Detail ali pre nego što ih složi za štampanje. Obrati pažnju na sekcije izveštaja i grupisanje. Možda ti i to pomogne.


Predlažem da isprobaš varijantu podizveštaja na izveštaju (slično podformi i formi). Podizveštaj se zasniva na drugom već kreiranom upitu gde za svakg imaš kreiranu konačnu ocenu. Povezuju se slično preko Link Master Fields i Link Child Fields. To je čistije i lakše za razumevanje i kasnije ispravljanje.
[ Miki2013 @ 01.07.2017. 12:37 ] @
Šta drugo reči osim hvala i bravo Majstore sa velikim M.

Radi (1.varijanta)

Hvala još jednom