[ smal @ 18.12.2010. 10:30 ] @
[ smal @ 18.12.2010. 10:30 ] @
[ banem @ 18.12.2010. 12:24 ] @
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.
[ smal @ 18.12.2010. 12:58 ] @
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... [Ovu poruku je menjao smal dana 18.12.2010. u 14:21 GMT+1] [ banem @ 18.12.2010. 13:04 ] @
U tvom slučaju nije svejedno jer ti ne uzimaš sve podatke iz baze, već izvršiš upit tamo i preneseš samo deo podataka.
[ smal @ 18.12.2010. 13:41 ] @
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! ![]() [Ovu poruku je menjao smal dana 18.12.2010. u 18:35 GMT+1] [ smal @ 09.01.2011. 13:01 ] @
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. [ banem @ 09.01.2011. 13:47 ] @
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. [ smal @ 09.01.2011. 17:27 ] @
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 :) [ SLOJ.1973 @ 09.01.2011. 20:58 ] @
Samo dodaš posle Response=0 sledeće
Code: .Pozdrav.Me!SifraArt.DefaultValue = "" [ smal @ 09.01.2011. 21:19 ] @
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. [ SLOJ.1973 @ 09.01.2011. 21:42 ] @
Drago mi je da sam pomogao.
[ xl_kid @ 09.06.2011. 12:39 ] @
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ć?
[ banem @ 09.06.2011. 13:05 ] @
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. [ xl_kid @ 09.06.2011. 13:15 ] @
evo mog primera na kom pokušavam
[ SLOJ.1973 @ 09.06.2011. 16:25 ] @
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.
[ xl_kid @ 10.06.2011. 06:24 ] @
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 :) [ SLOJ.1973 @ 10.06.2011. 07:15 ] @
Ipak moze.Pogledaj primer.Pozdrav.
Da dodam samo da ispravis za Combo8 da bude Auto Expand na No.U primeru je YES. [Ovu poruku je menjao SLOJ.1973 dana 10.06.2011. u 08:32 GMT+1] [ xl_kid @ 10.06.2011. 09:23 ] @
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 [ xl_kid @ 30.06.2011. 13:40 ] @
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 :(
[ SLOJ.1973 @ 30.06.2011. 19:38 ] @
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 [Ovu poruku je menjao SLOJ.1973 dana 30.06.2011. u 20:51 GMT+1] [ xl_kid @ 01.07.2011. 09:32 ] @
Ovo je bolje ali mi se sad javlja problem ako hocu da promenim kupca. Primer: izaberem kupca, unesem količine i vidim da sam promašio kupca. Ako hocu da izmenim javlja mi gresku "Update or CancelUpdate without AddNew or Edit"
[ xl_kid @ 01.07.2011. 09:44 ] @
Ups, stari primer. Radi... Puno, puno hvala
[ xl_kid @ 01.07.2011. 11:18 ] @
:( Ipak zeza na mašini gde imam instaliranu 2003. Ako hocu da izmenim kupca javlja mi problem "Update or CancelUpdate without AddNew or Edit"
[ SLOJ.1973 @ 01.07.2011. 18:48 ] @
Imaš mnogo Form.refresh i ostala osvežavanja.Kod mene ne prijavljuje grešku,jer sam izbacio nekoliko.Ne mogu da okačim primer,jer mi winrar pukao,ali da pokušam:na događaj KupacID.AfterUpdate izbaci poslednji red posle onog Me.Bookmark = rs.Bookmark.Mislim da je tu problem.Pokušaj.Evo primera:
[Ovu poruku je menjao SLOJ.1973 dana 01.07.2011. u 20:41 GMT+1] [ xl_kid @ 04.07.2011. 08:36 ] @
Opet je zezao pa sam izbrisao sam i "If Not rs.EOF Then Me.Bookmark = rs.Bookmark" i sada radi extra. Hvala na pomoći
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|