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

Problem sa izvestajem KEPU

[es] :: Access :: Problem sa izvestajem KEPU

[ Pregleda: 2389 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

kent
Petar Petrovic

Član broj: 132242
Poruke: 29
212.200.183.*



Profil

icon Problem sa izvestajem KEPU05.02.2008. u 19:11 - pre 197 meseci
U izvestaju KEPU koji sam formirao na osnovu union query-ja u kome spajam podatke iz tabela UvoznaKalkulacija, Prijemnica, RacunOtpremnica, InternaOtpremnica i Povratnica, imam sledeci kod :

Option Compare Database
Dim Zbir1
Dim Zbir2
Dim Zbir3

Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
rb.Caption = rb.Caption + 1
Zbir1 = Zbir1 + Zaduzenje.Text
Zbir2 = Zbir2 + Razduzenje.Text
Zbir3 = Zbir3 + Saldo.Text
End Sub

Private Sub PageFooterSection_Format(Cancel As Integer, FormatCount As Integer)
SumaZaduzenja.Caption = Format(Zbir1, "#,##0.00")
SumaRazduzenja.Caption = Format(Zbir2, "#,##0.00")
SumaSaldo.Caption = Format(Zbir3, "#,##0.00")
End Sub

Private Sub ReportHeader_Print(Cancel As Integer, PrintCount As Integer)
rb.Caption = 0
Zbir1 = 0
Zbir2 = 0
Zbir3 = 0
End Sub

Ovim kodom vrsim sumiranje po svakoj strani i kumulativno sumiranje celog izvestaja. Sve radi bez problema dok u svim tabelama imam podatke. Medjutim, ukoliko bar u jednoj od njih nema podataka (recimo da jos nije izdat nijedan racun) pri otvaranju izvestaja u print preview modu dobijam sledecu gresku:

Run-time error '2185'
You can't reference a property or method for a control unless the control has the focus.

Naravno u report view modu izvestaj se otvara ali se kod ne izvrsava.
U cemu je problem ?
 
Odgovor na temu

domaci_a_nas
PHP developer

Član broj: 42333
Poruke: 524
*.dynamic.sbb.co.yu.



+8 Profil

icon Re: Problem sa izvestajem KEPU05.02.2008. u 20:11 - pre 197 meseci
Izgleda nisi cuo za Running Sum property u Data Tabu za TextBox properties. Uvek postoji i On Error Resume Next

PS, moderatori ne vole da se u naslovu poruke koristi reč hitno, mada meni lično ne smeta.
Ozbiljan i odgovoran mladić
 
Odgovor na temu

kent
Petar Petrovic

Član broj: 132242
Poruke: 29
212.200.176.*



Profil

icon Re: Problem sa izvestajem KEPU06.02.2008. u 23:27 - pre 197 meseci
Bojim se da nisam bas najbolje razumeo na kom textbox-u treba da aktiviram Running sum. Mozda nisam najbolje objasnio, ali u najkracem, problem je u tome sto se kod svih izvestaja ovog tipa javlja ista greska ukoliko je odgovarajuci query prazan, a trebalo bi mi da u tom slucaju na izvestaju prikaze 0. Da li je ovo moguce i kako. Hvala na upozorenju za HITNO, nisam najbolje upoznat sa pravilima foruma.
 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2831



+45 Profil

icon Re: Problem sa izvestajem KEPU07.02.2008. u 06:45 - pre 197 meseci
U Top temi Korisni linkovi imaš preporuku na link kako se prave izveštaji (između ostalih i sumirajući).
Database of Access 2000 sample reports ----- RptSampl.mdb 2.7 MB
http://office.microsoft.com/en-gb/help/HA011201381033.aspx
U Top temi Interesantne teme koje su nekada bile TOP imaš takođe preporuku na link pod tačkom 24.
Tamo ćeš naći kako se prave kumulativne sume i kao da preduprediš greške Access-a.


 
Odgovor na temu

kent
Petar Petrovic

Član broj: 132242
Poruke: 29
212.200.178.*



Profil

icon Re: Problem sa izvestajem KEPU08.02.2008. u 21:26 - pre 197 meseci
Pre svega hvala obojici na savetima, jer sam pomocu njih resio skoro sve izvestaje ovog tipa i to sada radi onako kako bi trebalo. Ali i dalje imam jedan izvestaj na koji ne mogu primeniti Running Sum.
Naime, u samom izvestaju daje se detaljan pregled stanja odgovarajuceg komintenta, sto podrazumeva uvid u ukupno zaduzenje kupca ukljucujuci i odobrene rate na sledeci nacin: rate i ostala dugovanja se redom po datumu anuliraju dok je iznos potrazivanja veci od njihovog iznosa, a preostale rate, koje uplaceni iznos ne pokriva, se prenose u svom iznosu. Naravno uplaceni iznos moze biti i veci i manji i jednak od ukupnog duga odgovarajuceg komintenta. Za tu svrhu napisao sam sledeci kod (napominjem da veoma malo poznajem VB i vecinu stvari odradio sam makroima, pa ovaj kod mozda nije napisan po pravilnoj proceduri, vec kako sam znao i umeo). Uglavnom kod savrseno zavrsava ono sto mi je potrebno.
Sam izvestaj zasniva se na upitu koji formiram od tabela: PocetnoZaduzenje, Racuni, Kreditiranje, BankovniIzvod. Problem je, dakle, u tome sto ukoliko u bar jednoj od ovih tabela nema vrednosti za odgovarajuceg kupca (moze da ih nema jer recimo nije imao nikakvo pocetno zaduzenje, ili nije mu izdat jos nijedan racun, ili nije jos nista uplatio) izvestaj nece da se pokrene, jer ne moze da radi sa Null vrednostima i prakticno ne mogu da ostvarim uvid u stanje odgovarajuceg kupca. Tek kada u svim pojedinim tabelama ovog upita imam vrednosti izvestaj radi bez problema.
Ja vise nemam ideju kako bih ovo mogao da resim, pa vas molim da se malo pomucite. Naravno u obzir dolazi i promena koda ukoliko bi resenje bilo isto, a ukoliko je to neophodno. Nadam se da sam uspeo da vam objasnim o cemu se radi, a ako nisam probacu da postavim nesto na forum ukoliko to bude potrebno.
Ovo je kod:

Option Compare Database
Dim S1
Dim S2
Dim S3
Dim S4
Dim S5
Dim SaldoP
Dim Zbir1
Dim Zbir2

Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
Zbir1 = Zbir1 + Duguje.Text
S1 = Abs(S1 + Duguje.Text)
S2 = Abs(S2 - S5)
S3 = Abs(S1 - S2)
saldo1.Caption = Format(S1, "#,##0.00")
Saldo2.Caption = Format(S2, "#,##0.00")
Saldo3.Caption = Format(S3, "#,##0.00")
If Saldo2.Caption = 0 Then
SaldoP = saldo1.Caption
S4 = S2
ElseIf Abs(Saldo2.Caption) >= Abs(saldo1.Caption) Then
SaldoP = 0
S4 = saldo1.Caption
Else
SaldoP = Abs(saldo1.Caption - Saldo2.Caption)
S4 = S2
End If
Saldo.Caption = Format(SaldoP, "#,##0.00")
S1 = 0
S5 = Abs(S4)
Zbir2 = Zbir2 + Saldo.Caption
End Sub

Private Sub GroupFooter1_Format(Cancel As Integer, FormatCount As Integer)
SumaDuguje.Caption = Format(Zbir1, "#,##0.00")
SumaSaldo2.Caption = Format(Potrazivanje.Text, "#,##0.00")
SumaSaldo.Caption = Format(Zbir2, "#,##0.00")
End Sub

Private Sub ReportHeader_Format(Cancel As Integer, FormatCount As Integer)
S1 = 0
S2 = Potrazivanje.Text
S3 = 0
S4 = 0
S5 = 0
Zbir1 = 0
Zbir2 = 0
End Sub
 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2831



+45 Profil

icon Re: Problem sa izvestajem KEPU09.02.2008. u 08:31 - pre 197 meseci
Da li je i dalje problem da izveštaj bude zaustavljen greškom ili je problem da daje prazan izveštaj? U prvom slučaju uoči na kojoj liniji puca izveštaj i poslušaj kolegu domaci_a_nas koji ti je savetovao presretanje grešaka. U drugom slučaju ako dobijaš prazan izveštaj napiši sledeći kod:

Private Sub Report_NoData(Cancel As Integer)
MsgBox "Ovaj izvestaj nema aktuelnih podataka.", vbInformation, "Obaveštenje"
Cancel = True
End Sub

Ako je nešto treće u pitanju bilo bi dobro da zakačiš primer samo sa onim objektima koji su bitni i napišeš u opisu šta se tačno dešava. Često puta ideja za izradu izveštaja je ograničena kvalitetom modela podataka. Valjalo bi i njega pogledati.

 
Odgovor na temu

kent
Petar Petrovic

Član broj: 132242
Poruke: 29
212.200.176.*



Profil

icon Re: Problem sa izvestajem KEPU09.02.2008. u 21:16 - pre 197 meseci
Meni i jeste cilj da u slucaju da je jedna od tabela prazna otvorim izvestaj i da prikaze one podatke koji postoje, jer ga on uopste ne otvara cim negde nadje Null vrednost. U svakom slucaju vec pripremam bazu za kacenje, pa ce sve biti jasno. Hvala jos jednom.
 
Odgovor na temu

kent
Petar Petrovic

Član broj: 132242
Poruke: 29
212.200.183.*



Profil

icon Re: Problem sa izvestajem KEPU10.02.2008. u 00:36 - pre 197 meseci
Dakle, prikacicu deo baze u kojem se jasno moze videti u cemu je problem. U njoj sam za Kupac1 uneo: pocetno zaduzenje, izvod, racun otpremnicu i izvozni racun.Dakle, popunio cetiri tabele koje cine upit na kome se zasniva izvestaj. Za Kupac2 nisam uneo nista.
Ako odete na komitenti --> Kupac1 --> Detaljan Pregled Stanja izvestaj ce se otvoriti bez problema.
Medjutim ako odete na Kupac2 izbaci ce gresku o kojoj sam vec ranije pisao.
Takodje, ako bi postupno brisali podatke za Kupac1, redom iz pojedinih tabela izvestaj se otvara sve dok se ne obrisu podaci iz poslednje tabele (mislim da red brisanja podatak iz tabela nije bitan, efekat je isti), nakon cega se vise nece otvarati.
Jos jednom napominjem da mi je cilj da se izvestaj otvara i kada ima podatke u makar samo jednoj tabeli, a takodje i blanko izvestaj kada nema nikakvih podataka. U slucaju da nema nikakvih podataka ni u jednoj tabeli dolazi u obzir i resenje koje mi je dao Getsbi u poslednjem postu, u vidu informacije.
Prikačeni fajlovi
 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2831



+45 Profil

icon Re: Problem sa izvestajem KEPU10.02.2008. u 10:17 - pre 197 meseci
Izveštaj neće da izbaci grešku ako dodaš kod koji sam ti dao u prethodnom postu. Ne možeš da očekueš da radi korektno ako ga ne zatvoriš predefinisanim kodom. Tvoj izveštaj (KreditiProba) se zasniva na Union Query-ju (KreditiProba) koji pokrećeš iz drugog query-ja (KreditiProbni) postavljenog tako da uzima parametre sa forme. Pokreni zadnje pomenuti izveštaj KreditiProbni u izvršnom modu i menjaj K01 ili K02. Pošto za K02 ne dobijaš podatke jasno je da ni izveštaj neće imati podatke. To što ti nećeš da u formatiranje izveštaja uključiš kod koji će da presreće greške je poseban problem. Kolega domaci_a_nas ti je to već savetovao. Ne možeš da forsiraš ispis u reportu a da nemaš podatke. Ili će da puca kao u ovom slučaju ili će da pokazuje praznu stranu.
O presretanju grešaka smo takođe dosta pisali na forumu. Samo unesi On Error u polje za pretragu pa ćeš videti šta ćeš da dobiješ. Ako te mrzi da čitaš sve, dobijene teme izfiltriraj na toj strani po reči report. Edit, Find on this Page... pa report.

E sad malo nekih mojih zapažanja:
1. Model ima tabele koje su nastale separacijom jedne osnovne koja se zove Dokumenti. Umesto nje postoje:
Racuni, IzvozniRacun, Izvod, Kreditiranje.... Ovo ni je da onemogućuje ali u mnogome otežava rad i komplikuje model.
2. Polovina tabela nema primarne ključeve.
3. Ima polja koja su izračunate vrednosti. Primer : VreddnostPoNC, VrednostBezPDV, ProdajnaVrednost(EUR), ProdajnaVrednost(RSD)..........
4. Postoje polja čiji su nazivi nedorečeni: Datum1, Datum2.. Umesto verovatno: DatumDokumenta i DatumKnjizenja.
5. Popunjavanje Startup-a i dečekiranje opcija u fazi razvoja je loš običaj. To treba uraditi na kraju. Takođe i skidanje opcija za zatvaranje izveštaja (Postavljanje Close Button na No i Control Box na No........). Posle pokretanja ovakvog izveštaja u fazi razvoja preostaje ti jedino da ugasiš aplikaciju jer nemožeš iz nje da izađeš.




[Ovu poruku je menjao Getsbi dana 10.02.2008. u 16:50 GMT+1]
 
Odgovor na temu

kent
Petar Petrovic

Član broj: 132242
Poruke: 29
212.200.183.*



Profil

icon Re: Problem sa izvestajem KEPU10.02.2008. u 14:25 - pre 197 meseci
Ajde da probam da potpuno pojednostavim problem. Da li u VB kodu mogu koristiti neku funkciju, kao sto je Nz ili slicno da null vrednost pretvorim u nulu. Da li mislis da je moguce promeniti kod ili nesto drugo, a da dobijem istu stvar i da na taj nacin resim ovaj problem.
Od presretanja greske ne bezim, ali je potrebno da se izvestaj otvori i kada imam samo recimo Racun, ili samo IzvozniRacun itd. Slozices se da jedan kupac moze u jednom trenutku imati samo Racun, a da nije pocetno zaduzen i da mu nije odobreno kreditiranje. Meni je cilj pregled njegovog stanja u svakom trenutku, ali na nacin koji je prikazan u izvestaju. Ako imas neku ideju kako bih to mogao da izvedem bio bih ti zahvalan.
Zahvaljujem na ulozenom trudu na uocavanju odredjenih nedostataka (primetio si koliko ima makroa) jer i sam znam da puno toga nije savrseno. Inace, to je baza koju sam vec koristio u praksi i sada sam je podrobno dopunio, tako da ima nekih konfuznih stvari. Startup je podesen upravo iz tog razloga sto je vec bila koriscena, kao i Close Button i Control Box.
Jedino nisam razumeo prvo zapazanje. Da li mislis da treba sve da vodim kao jednu tabelu Dokumenti ili nisam dobro shvatio sta je separacija. Sto se tice izracunati polja, to je takodje zaostalo iz prethodno uradjene baze koju sam radio kada jos nisam znao za zlatno pravilo da se u tabelama cuvaju podaci koji se ne racunaju. U vezi sa tim, zanima me koliko to opterecuje samu bazu, u smislu njene velicine i brzine rada sa njom i da li vredi sada da ispravljam sve te tabele zbog toga. Ovo sto sam prikacio je samo trecina citave baze, pa bi taj posao bio veliki.
 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2831



+45 Profil

icon Re: Problem sa izvestajem KEPU10.02.2008. u 17:30 - pre 197 meseci
Da. Možeš da koristiš funkciju Nz() ili IsNull().
U predzadnjem postu kažeš ovako:
“Ako odete na komitenti --> Kupac1 --> Detaljan Pregled Stanja izvestaj ce se otvoriti bez problema. Medjutim ako odete na Kupac2 izbaci ce gresku o kojoj sam vec ranije pisao.
Takodje, ako bi postupno brisali podatke za Kupac1, redom iz pojedinih tabela izvestaj se otvara sve dok se ne obrisu podaci iz poslednje tabele (mislim da red brisanja podatak iz tabela nije bitan, efekat je isti), nakon cega se vise nece otvarati. „

Iz ovog što si napisao sledi da se izveštaj otvara sve dok ima bilo kakav podatak da prikaže. Znači ako nisi pobrisao podatke za Kupac2 iz tabele Krediti uzveštaj radi.

Dalje u zadnjem postu kažeš ovako:
„Od presretanja greske ne bezim, ali je potrebno da se izvestaj otvori i kada imam samo recimo Racun, ili samo IzvozniRacun itd. Slozices se da jedan kupac moze u jednom trenutku imati samo Racun, a da nije pocetno zaduzen i da mu nije odobreno kreditiranje.”
Ova dva citat mi se čini kontradiktorna. Ja nemam mogućnosti da ispitujem i testiram ceo program i prepravljam kod ali ako za Kupac2 (K02) imaš bilo koji podatak, recimo IzvozniRacun i izveštaj se otvara kako ti tvrdiš u prvom citatu, onda je jedino rešenje da kad ne bude podataka zatvoriš prazan prikaz i eventualne greške već pomenutim kodom koji sam ti napisao.
To da si nadograđivao bazu koja je sad kako kažeš konfuzna je posebna priča. Ne znam koliko vredi da da ti savetujem da kreneš od početka. Posao je ogroman ali će buduća muka oko održavanja biti još veća ako nastaviš ovako. Izračunata polja ne opterećuju samu bazu po pitanju brzine već joj daju mogućnost da bude ne-konzistentna. Srpski rečeno nekorektni podaci pre ili posle. Zbog ponavljanja istih podataka i korišćenja izračunatih polja, može se dogoditi da se promena vrednosti primercima istog podatka ne izvede dosledno, tj. da se jednom primerku istog podatka vrednost promeni (namerno ili nenamerno), a da se to ne učini sa ostalim primercima tog podatka ili se ne izvrši izračunavanje. Rezultat možeš da zamisliš. Zbog toga se takve stvari izbegavaju.

I da pojasnim ono oko prve primedbe i separacije (cepanje entiteta na jednostavnije). U delu baze koji si prikazao, a verujem da toga ima još, ti imaš sledeće dokumente: Racun, IzvozniRacun, Izvod i Kredit. U vezi sa tim imaš i sledeće tabele:
Racuni, OpisRacuna, Izvodi, OpisIzvoda, IzvozniRacun, OpisIzvoznogRacuna, Kreditiranje, OpisKreditiranja.
Po meni tri tabele: VrstaDokumenata ---> DokumentZaglavlje ---> DokumentStavke
je mnogo bolja varijanta za ovako kompleksan zadatak kojim se baviš. Doveo si sebe u situaciju da ti je model preširok i da ne možeš da ga obuhvatiš jednim pogledom. Alati za modeliranje imaju lek za to u vidu „Subject Area” ili izdvajanja u posebne poglede ili tematska područja. Access-ov Relationships nema tu mogućnost. Najveći je gubitak svakako u rasipanju sopstvenih resursa i energije.
Kod ovakvog modela jedino bi imao u upitu nad dvema tabelama DokumentZaglavlje i DokumentStavke da postaviš uslov: u polju VrstaDokumenta koji su to dokumenti koji ti trebaju, umesto da praviš akrobacije sa upitima: KreditiK, KreditiPZ, KreditiIR, KreditiR i njihovim spajanjem u Union upit, pa ponovnim pozivanjem u sledećem upitu KreditiProbni.
Tvoj pristup je dobar za neki jednostavan zadatak. Recimo prodaja brze hrane, gde postoje dve vrste dokumenata: Ulazne kalkulacije i izlazni računi (kasa blok).


 
Odgovor na temu

kent
Petar Petrovic

Član broj: 132242
Poruke: 29
212.200.176.*



Profil

icon Re: Problem sa izvestajem KEPU10.02.2008. u 23:35 - pre 197 meseci
Pre svega uspeo sam da resim problem. Upravo nakon postavljenog posta postao sam svestan kontradiktornosti koju si i sam uocio i tada shvatio sta mogu da uradim. Naime, samo sam u tabeli Partneri dodao dva polja InicijalniDug i InicajlnoPotrazivanje sa osnovnom vrednoscu 0. Na taj nacin sam obezbedio da mi upiti prakticno uvek i za sve kupce imaju vrednosti, pa makar bile i 0.
Sto se tice tvojih zapazanja, moram ti reci da sam tek od skoro saznao za zlatno pravilo u radu sa bazama, ali si mi ti otvorio oci zbog cega je to znacajno. Naravno da sam vec do sada mnogo puta iskusio to nepoklapanje podataka. Mislim da je moj problem u tome sto se najveci deo baze zasniva na makroima i komandi SetValue koju sam koristio, s obzirom da jako malo poznajem VB.
Jos jednom veliko hvala na zalaganju da resim ovaj problem. Javicu se uskoro sa novim problemom.
 
Odgovor na temu

[es] :: Access :: Problem sa izvestajem KEPU

[ Pregleda: 2389 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

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