Novo

Forum kao aplikacija na telefonu

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

  • 24 odgovora
  • 6.574 pregleda

Najnovija ↓

Row Source filter za Combo Box? 18.12.2010. u 11:30 · pre 193 meseca #1
Često koristim Combo Box u aplikacijama, ali ako je za RowSource izabrana tabela ili kveri koji sadrži veliki broj recorda, tu do izražaja dolazi problem sa sporim odzivom u određenim uslovima. Pogotovo ako je aplikacija frontend za udaljeni server, učitavanje liste zna baš da potraje, uz veliko opterećenje mreže...

Elem, da li možda neko ima rešenje kojim bi se filtrirao RowSource ComboBoxa? Na pr. lista se ne učitava sve dok korisnik ne unese tri početna slova od šifre, a nakon toga se pojavljuje filtrirana lista (vidi sliku)? Cenim da bi se tako drastično smanjio mrežni saobraćaj, a samim tim povećala brzina aplikacije.

Re: Row Source filter za Combo Box? 18.12.2010. u 13:24 · pre 193 meseca #2
Access nije klijent-server baza podataka. To znači da se svaki upit izvršava na radnoj stanici, a ne na serveru. Da bi uradio to što želiš, on mora da "gurne" kroz mrežu ceo set podataka i onda popuni combo-box, bez obzira da li su podaci filtrirani ili ne. Drugim rečima - sa Access bazom kao backend nećeš postići veću brzinu. Ono što ti treba je SQL Server Express, PostgreSQL, MySQL ili bilo koja besplatna SQL baza podataka kao backend. Onda će sve da poleti, ali bukvalno.
Potpis
Pozdrav,
Branislav
Re: Row Source filter za Combo Box? 18.12.2010. u 13:58 · pre 193 meseca
izmenjeno 1 put, poslednji put smal 18.12.2010. u 14:21
  1. smal18.12.2010. u 14:21zapis iz teksta poruke
#3
Možda nisam bio dovoljno jasan u postavci pitanja, ali sam u ranijim porukama na forumu više puta napomenuo da Access uglavnom koristim kao frontend za DB server u firmi (ADS i u poslednje vreme MS SQL Express), pa nisam želeo da se ponavljam.

Dakle, očigledno sam izabrao pogrešan termin - filtriranje, a u stvari sam mislio na SQL upit koji bi vraćao limitiranu RowSource listu za ComboBox. Nešto kao:
Code:
Select * FROM tblSiFarnik WHERE [SIFRA] like '" & (txtPolje.Value)...

'Oćureći, mislim da je svejedno da li je backend SQL server ili Access file baza, velika i neograničena ComboBox lista mora kroz mrežu da se "svuče" do frontend aplikacije, pa sam želeo da limitiram RowSource upitom i tako smanjim saobraćaj između front i backenda...


Sve u svemu, nađoh malopre neko rešenje na http://allenbrowne.com/ser-32.html, pa ću da probam kako funkcioniše...
Re: Row Source filter za Combo Box? 18.12.2010. u 14:04 · pre 193 meseca #4
U tvom slučaju nije svejedno jer ti ne uzimaš sve podatke iz baze, već izvršiš upit tamo i preneseš samo deo podataka.
Potpis
Pozdrav,
Branislav
Re: Row Source filter za Combo Box? 18.12.2010. u 14:41 · pre 193 meseca
izmenjeno 1 put, poslednji put smal 18.12.2010. u 18:35
  1. smal18.12.2010. u 18:35zapis iz teksta poruke
#5
Pa upravo to želim da postignem. Ako je ComboBox lista neograničena, korisnici uzmu fino da se šetaju po njoj gore-dole, a tako mrežni saobraćaj samo piči. Još ako to rade nekoliko njih istovremeno... Ovako, dobiće max 99 recorda da biraju, pa ako im to ne odgovara, neka kucaju druga početna slova od šifre i tako to.

Dodatak: Probao sam kod iz gore navedenog linka, i radi super. Ubrzanje je drastično! :)
Re: Row Source filter za Combo Box? 09.01.2011. u 14:01 · pre 192 meseca #6
Mučim se sa ovim dosta dugo i polude mi glava :( Ajd' pomagajte ako možete.

Dakle, ovo rešenje besprekorno radi u Accessu 2003, ali u novijim verzijama zahebava. Da pojasnim:

Kada se ukucaju prva tri početna slova od šifre, RowSource ComboBoxa sadrži samo recorde koji odgovaraju kriterijumu, tj. one šifre koje počinju unetim slovima. Ukoliko se ukucaju slova koja ne postoje u šifarniku, RowSource je prazan. ComboBox se tako izuzetno brzo učitava, jer sadrži samo ograničeni broj recorda.

Probao sam ovo i na adp (Project) aplikaciji na SQL serveru, preko spore inernet veze, i odziv je bukvalno trenutan, i mnogo mi se sviđa :(

E sad, u Accessu 2003, ako korisnik na pr, unese slova za nepostojeću šifru, pa zatim obriše uneto i otkuca ispravna početna slova, sve radi kako treba. U momentu ispravke tj. brisanja, prazan ComboBox uradi rollback, a nakon novog unosa uradi dropdown popunjen odgovarajućim recordima (vidi sliku)...


U Accessu 2007/10 to isto tako funkcioniše ali samo ukoliko se unose slova postojećih šifara. U slučaju greške, prazan Combo box ostaje u dropdown režimu na ekranu i nakon ispravnog kucanja (vidi sliku2). Da bi mehanizam ponovo proradio, mora da se uđe u prethodni record, pa vrati nazad, i onda opet radi kako treba.


Uz poruku je primer jedne aplikacije, pa Vas molim da je probate i u staroj i novoj verziji Accessa, valjda će biti jasnije šta sam želeo da kažem. Čini mi se da samo negde nedostaje neki Refresh ili nešto slično da bi sve radilo kako treba, ali nisam uspeo da pronađem u čemu je problem.

Re: Row Source filter za Combo Box? 09.01.2011. u 14:47 · pre 192 meseca #7
Probao sam. Meni se pojavljuje prazna lista uvek u 2007.

To može da funkcioniše SAMO kada combo-polje NIJE vezano za polje tabele, tj. kada je Unbound. Tada mi radi. Ili ovako:

Kada korisnik ukuca tri slova, ti treba da ukloniš unos, zapamtiš ga, napraviš source (SQL) tom polju prema zapamćenom unosu, uradiš requery, vratiš tri ukucana slova i postaviš kursor gde je bio. Tada će raditi.
Potpis
Pozdrav,
Branislav
Re: Row Source filter za Combo Box? 09.01.2011. u 18:27 · pre 192 meseca #8
Citat:
banem: To može da funkcioniše SAMO kada combo-polje NIJE vezano za polje tabele, tj. kada je Unbound..

Xm, ja nisam primetio razliku, odnosno, isto se ponaša i kada je polje vezano i kada je nevezano.
Citat:
: Kada korisnik ukuca tri slova, ti treba da ukloniš unos, zapamtiš ga, napraviš source (SQL) tom polju prema zapamćenom unosu, uradiš requery, vratiš tri ukucana slova i postaviš kursor gde je bio.

Uradio sam već nešto slično sa Pop-up formicom umesto ComboBoxa, po ugledu na model sa: http://msdn.microsoft.com/en-us/library/aa188218(office.10).aspx, ali mi se, iskreno, mnogo više sviđa prva varijanta, a to mi ne polazi za rukom da izvedem.

'Ajte ljudi pomagajte, rešili ste i mnogo teže probleme od ovog :)

Re: Row Source filter za Combo Box? 09.01.2011. u 22:19 · pre 192 meseca #10
Jeee! Sloje majstore! Svaka čast, bravo i najlepše hvala! Da znaš samo kol'ko sam se mučio... :)

Nadam se da će i još nekom ovaj primer biti od koristi.
Re: Row Source filter za Combo Box? 09.06.2011. u 13:39 · pre 187 meseci #12
Ovo sa pop up formom je ok ali kako da sredim combo box da kad kucam recimo deo naziva (primer ako je puno ime kupca str boban a u polju kucam samo bob) dobijem sve one rezultate koji sadrze deo unete reci. Probao sam sa Like "*" & [forms]![F1]![Combo8] & "*" na combo boxu ali ništa. Može pomoć?
Potpis
INTRUDER
Re: Row Source filter za Combo Box? 09.06.2011. u 14:05 · pre 187 meseci #13
Like "*" & [forms]![F1]![Combo8] & "*"

Ovde nedostaje deo. Gde piše odakle - iz koje tabele/upita se uzimaju podaci?

SELECT * FROM tblTabela WHERE txtPolje Like '*' & [forms]![F1]![Combo8] & '*'

Tako bi već moglo.
Potpis
Pozdrav,
Branislav
Re: Row Source filter za Combo Box? 09.06.2011. u 17:25 · pre 187 meseci #15
Mislim da ono što si ti želeo nije baš izvodljivo,ili ja nisam dobro razumeo.Evo pogledaj primer,pa reci da li odgovara.Pozdrav.Samo da dodam da na formi F1 u polje partner kucaš slova koja želiš,a u listi dole ti se pojavljuju svi partneri koji sadrže ta slova,a zatim duplim klikom sa liste odabiraš partnera.
Potpis
Jednog dana...
Re: Row Source filter za Combo Box? 10.06.2011. u 07:24 · pre 187 meseci #16
Mislio sam da je moguće :( Čitao sam po forumima da je izvodnjivo ali izgleda da ja nisam dobro razumeo. Ovo je ok. Imam adresar na ovu foru ali sam mislio da je moguće dobiti ovakvu pretragu i na combo box-u. Pokušaću sa onim primerom sa pop up formom i prenosom.
Šta mi je cilj... da prilikom unosa porudzbine robe kupca (pri odabiru kupca) zbog velikog broja sličnih imena (možda si primetio u tabeli iz priloga) olakšam pretragu. Primam sugestije i predloge ako neko ima bolje rešenje ovog "problema".
Hvala na pomoći :)
Potpis
INTRUDER
Re: Row Source filter za Combo Box? 10.06.2011. u 08:15 · pre 187 meseci
izmenjeno 1 put, poslednji put SLOJ.1973 10.06.2011. u 08:32
  1. SLOJ.197310.06.2011. u 08:32zapis iz teksta poruke
#17
Ipak moze.Pogledaj primer.Pozdrav.
Da dodam samo da ispravis za Combo8 da bude Auto Expand na No.U primeru je YES.
Potpis
Jednog dana...
Re: Row Source filter za Combo Box? 10.06.2011. u 10:23 · pre 187 meseci #18
Kakav lik... :D Sledeći put ćeš mi pokazati kako se peče pita u Access-u :D
HVALA NA POMOĆI... PROBLEM REŠEN
Potpis
INTRUDER
Re: Row Source filter za Combo Box? 30.06.2011. u 14:40 · pre 186 meseci #19
Problem... Na mom primeru pravi problem. Nesto se ovde dogadja sto ja ne razumem. Prilikom upisa uvek me vraca na prvi zapis. Unesem podatke i idem na novi unos. Po izboru kupca vrati ma na prvi unos ali zapamti kupca na sledecem. Evo i mog primera u prilogu. Molim za pomoc :(
Potpis
INTRUDER
Re: Row Source filter za Combo Box? 30.06.2011. u 20:38 · pre 186 meseci
izmenjeno 1 put, poslednji put SLOJ.1973 30.06.2011. u 20:51
  1. SLOJ.197330.06.2011. u 20:51zapis iz teksta poruke
#20
Obrati pažnju na dugme novi unos trebalo bi da stoji ovako nešto:
Private Sub cmd_novi_Click()
On Error GoTo Err_cmd_novi_Click


If MsgBox("DA LI ŽELITE DA ZAPAMTITE ZAPOČETI UNOS?", vbQuestion + vbYesNo, "pamti podatke") = vbYes Then
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70

Me.Requery
Else
DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
Me.Requery

End If
Exit_cmd_novi_Click:
Exit Sub

Err_cmd_novi_Click:
MsgBox err.Description
Resume Exit_cmd_novi_Click

End Sub
Potpis
Jednog dana...
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme