Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Lista u queriju?

[es] :: Access :: Lista u queriju?

[ Pregleda: 1986 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

smal
Slobodan Maljković
Kragujevac, Srbija

Član broj: 228672
Poruke: 286
*.static.sbb.rs.



+13 Profil

icon Lista u queriju?22.10.2009. u 14:16 - pre 175 meseci
Primer iz baze znanja sa ovog foruma (VBA: Kako od tabele dobiti listu?) sam malo izmenio i uspešno iskoristio za svoju aplikaciju...
Code:

Function Ispis() As String

Dim rst As New ADODB.Recordset

rst.Open "SELECT DOKUM FROM qryDokumtoTxt WHERE SIFRA = '" & [Reports]![rptZbirnaLista]![SIFRA] & "'", CurrentProject.Connection, adOpenStatic, adLockReadOnly
    If rst.RecordCount > 0 Then Ispis = rst.GetString(adClipString, , , " ")
    rst.Close

    Ispis = Left(Ispis, Len(Ispis) - 1)
 
End Function

Gore navedena funkcija super radi na reportima i formama, ali meni sad treba to isto da funkcioniše i nad poljem u queriju, radi izvoza podataka u Excel, a to mi ne polazi za rukom da izvedem.

Kada zamenim referencu sa reporta [Reports]![rptZbirnaLista]![SIFRA] sa poljem qryZbirnaLista.SIFRA, to ne fercera. Probao sam sve što mi je padalo na pamet, ali bez uspeha...
Da li grešim u sintaksi ili u pristupu?
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon Re: Lista u queriju?22.10.2009. u 18:59 - pre 175 meseci
Promeni paramtar za funkciju. Ovako nekako

Code:

Function Ispis(strSifra as string) As String

Dim rst As New ADODB.Recordset

rst.Open "SELECT DOKUM FROM qryDokumtoTxt WHERE SIFRA = '" & strSifra & "'", CurrentProject.Connection, adOpenStatic, adLockReadOnly
    If rst.RecordCount > 0 Then Ispis = rst.GetString(adClipString, , , " ")
    rst.Close

    Ispis = Left(Ispis, Len(Ispis) - 1)
 
End Function

Onda u kveriju kazes nesto kao
Code:

SELECT Sifra, Ispis(Sifra)
FROM TvojaTabela
WHERE Sifra ....


ONo WHERE je jako vazno. Bez WHERE dobices celu tabelu i kveri ce biti beskonacno spor.

 
Odgovor na temu

smal
Slobodan Maljković
Kragujevac, Srbija

Član broj: 228672
Poruke: 286
*.dynamic.sbb.rs.



+13 Profil

icon Re: Lista u queriju?22.10.2009. u 19:58 - pre 175 meseci
Kao prvo, ovakva funkcija radi, mnogo mi znači i puno se zahvaljujem!

Ali za nedivno čudo, jeste iznenađujuće spora:( WHERE uslov mi ne vrši posao jer funkcija mora da se izvrši nad čitavom tabelom koja broji nekoliko hiljada slogova (popis artikala MP objekta), tako da zna da potraje.
To nije veliki problem jer ću je koristiti samo jednokratno na kraju popisa, pa ništa nije strašno i da se sačeka tih 20-60 sekundi za obradu, ali interesantno je da joj toliko vremena treba, kad skoro isto to na reportu traje samo par sekundi?...
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon Re: Lista u queriju?23.10.2009. u 14:36 - pre 175 meseci
Funkcija nije iznenadjujuce spora, najavio sam ti to :-). U reportu ti se cini da radi brze jer se, a moza i jeste brze, jer je moguce da je poziv iz reporta brzi nego iz kverija.

Sve funkciej ovog tipa su spore u kverijima jer se unutra funkcije izvrsava jos jedan kveri. Za report, izvrsava se funkcija za svaki rekord i kako se izvrsui tako se ispise na reprt. U kveriju se izvrsi funkcija za sve rekorde prvo, pa se tek onda vrati ceo skup kao rezultat kverija, ili bar u vecim grupama.

Ako nije starsno sto je ovolio sporo, OK, ne diraj nista. Ako jeste, mozda treba pogledati samu funkciju i pogeldati da li se mzoe napisati tako da sama funkcija radi brze.

:-)
 
Odgovor na temu

smal
Slobodan Maljković
Kragujevac, Srbija

Član broj: 228672
Poruke: 286
*.dynamic.sbb.rs.



+13 Profil

icon Re: Lista u queriju?23.10.2009. u 17:56 - pre 175 meseci
Evo, malo sam se igrao, i naravno, u pravu si. Funkcija je na reportu je brža i vizuelno i realno.

Pošto sam stavio Preview Report dugme, prva strana izveštaja se očas pojavi (1 sec), ali joj treba još 7 sekundi da stigne do poslednje strane, kada pritisnem Last Page dugme. Pošto se izveštaj najčešće odmah šalje na štampu, stranice imaju dovoljno vremena da se formatiraju dok se printanje ne završi...
Sa druge strane, kveri se izvršava punih 26 sekundi. To sam merio na kućnoj makini koja je prilično jaka. Na slabijim računarima, koje imam u firmi, vreme se proporcionalno produžava, i baš ume da se otegne.

Ali sve u svemu, nije nikakav problem, kao što ranije rekoh. Ovo pričam samo sporta radi :)
 
Odgovor na temu

captPicard
programer
more i planine

Član broj: 216084
Poruke: 1119



+19 Profil

icon Re: Lista u queriju?23.10.2009. u 18:34 - pre 175 meseci
Ako staviš ovdje cijelu funkciju, možemo ju probati optimizirati. (Makar sumljam jer je Zidar na godišnjem :-P )
F
 
Odgovor na temu

smal
Slobodan Maljković
Kragujevac, Srbija

Član broj: 228672
Poruke: 286
*.dynamic.sbb.rs.



+13 Profil

icon Re: Lista u queriju?23.10.2009. u 19:42 - pre 175 meseci
Pa cela celcijata funkcija je već gore navedena :)

Nije velika, tako da nisam siguran da li ima mnogo prostora za poboljšanja. Jedino ako je moguće da se nekako vrednosti iz qryDokumtoTxt uključe direktno u izraz... Mada, taj kveri radi jako brzo, polja su indeksirana kako treba... i sve je OK. Ili da se juri neko drugačije rešenje...

Sve u svemu, mislim da nije vredno truda. I ovo vrši nuždu :)

 
Odgovor na temu

[es] :: Access :: Lista u queriju?

[ Pregleda: 1986 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.