|
[ zaricmica @ 10.02.2010. 22:56 ] @
| Eeee, ovako. Pomazem drugarici da uradi seminarski. Tema joj je uvid u stanje na racunu. Meni je ogroman problem kako da izmodeliram ovo. Nisam nov u ovome, ali mi stalno pravi problem neka glupost. Napravio sam sledece tabele: banka, klijent, zaposleni, racun, uplata i isplata. I sad kad god idem da sumiram npr. uplate meni prikaze dva puta istu uplatu iako je samo jedna uplata. Da napomenem ovo mi je hitno :)) svaka pomoc mi je dobrodosla i hvala unapred. |
[ BiloKoje @ 11.02.2010. 05:34 ] @
Morao bi da okačiš primer, ovako teško da iko može da pretpostavi u čemu je problem. Najverovatnije u povezivanju tabela u upitu, ali...
Valjalo bi i da znamo kako tačno glasi zadatak.
[ zaricmica @ 11.02.2010. 09:23 ] @
Bukvalno tako. Znaci da upotrebom upita meni prikaze stanje na racunu. Evo prikacicu moje relacije, pa mozete videti kako sam ja to zamislio, pa mi vi recite gde sam pogresio. Meni je problem u tome sto meni registruje npr.dve iste uplate, iako je samo jedna. Ovo radi pri sumiranju u upitu. Ako imam uplatu 1500din on ce mi sumirati 3000. Ali ovo radi samo ako imam npr. dve uplate.
[ Take 5 @ 11.02.2010. 09:50 ] @
^ Ne vidim razlog za postojanje odvojenih tabela UPLATE i ISPLATE, sve PROMENE STANJA se obicno cuvaju u jednoj tabeli (treba samo da dodas nekakvo identifikator polje, kojim se definise ulaz / izlaz)
[ BiloKoje @ 11.02.2010. 10:07 ] @
Citat: zaricmica: Bukvalno tako. Znaci da upotrebom upita meni prikaze stanje na racunu. Evo prikacicu moje relacije, pa mozete videti kako sam ja to zamislio, pa mi vi recite gde sam pogresio. Meni je problem u tome sto meni registruje npr.dve iste uplate, iako je samo jedna. Ovo radi pri sumiranju u upitu. Ako imam uplatu 1500din on ce mi sumirati 3000. Ali ovo radi samo ako imam npr. dve uplate.
Ovako, samo na osnovu relacija, može recimo da bude, da si u upit stavio tabelu račun i tabelu klijent, a da nisi i međutabelu računi, pa ti svaku uplatu prikazuje onoliko puta koliko imaš uneto klijenata. Ili neka druga tabela u upitu nije povezana sa ostalim tabelama. Naravno ovo je samo jedna mogućnost.
Citat: Take 5: ^ Ne vidim razlog za postojanje odvojenih tabela UPLATE i ISPLATE, sve PROMENE STANJA se obicno cuvaju u jednoj tabeli (treba samo da dodas nekakvo identifikator polje, kojim se definise ulaz / izlaz)
Da, i ja bih tako uradio, ali to ne izaziva grešku samo po sebi.
[ zaricmica @ 11.02.2010. 10:35 ] @
Eee, sinoc sam se setio da stavim tabelu transakcije umesto tabela uplata i isplata. Pa se npr.unosi svrha transakcije( uplata i isplata) i onda u zavisnosti od toga se unosi iznos tipa 1000 za uplatu a -1000 za isplatu :))) i samo sumiram. I to bi bilo to. E sad jel mozete vi da mi kazete npr kako bih mogao da stavim da automatski stavlja negativnu vrednost na isplatu. Jel moram da napravim novu tabelu tipa tip transakcije gde cu imati sifru tipa kao PK i naziv tipa, pa da se u tabeli transakcija unosi sifra tipa i on automatski da registruje sta je u pitanju. Eee ako bih tako uradio onda ne znam kako da stavim ako odem na isplatu da mi automatski kuca -. Hvala unapred.
[ zaricmica @ 11.02.2010. 10:38 ] @
Citat: BiloKoje: Da, i ja bih tako uradio, ali to ne izaziva grešku samo po sebi.
u upit sam stavio tabele racun, klijent uplata i isplata.
[ BiloKoje @ 11.02.2010. 10:54 ] @
Moguće je da problem pravi tabela isplate.Probaj da je obrišeš iz upita, da li onda dobijaš tačne rezultate?
Evo ja sam na brzinu napravio bazu po tvom modelu, pogledaj upit, prikazuje duplo uplate, kad obrišem tabelu isplate iz upita, onda je dobro.
[ zaricmica @ 11.02.2010. 11:48 ] @
Pa da. Kad obrisem tabelu iz upita onda mi radi dobro, ali ne mogu da uradim stanje bez tabele isplata :)
[ BiloKoje @ 11.02.2010. 12:24 ] @
Tako kako si postavio tabele u upitu, ako jedan klijent ima uplate a nema isplata, ne bi ti upit prikazao ni uplate. Morao bi da praviš dva upita, jedan za uplate, jedan za isplate, pa onda na osnovu njih napraviš treći upit, recimo saldo, a prva dva upita povežeš preko polja šifraRačuna.
Upravo zato je bolja varijanta jedne tabele za sve promene na računu, s tim što ne mora da iznos bude u jednoj koloni pa da se unosi negativan broj, mogu da budu dve kolone, uplata i isplata, što bi bilo zgodnije za izradu upita i izveštaja. Recimo u upitu bi dobio zbir uplata, zbir isplata i saldo kao njihovu razliku.
[ zaricmica @ 11.02.2010. 12:39 ] @
Eeee, pa odlicno:))) puno ste mi pomogli. Hvala vam jos jednom. Nego da li bi mi bilo elegantnije da stavim npr tabelu za svrhu uplate, da se u transakciji ne unosi svrha uplate, nego samo njena sifra???
[ Take 5 @ 11.02.2010. 12:40 ] @
@BiloKoje: Ma ne tako, nego naprotiv treba da bude jedna zajednička kolona IZNOS.
Napravi posebnu tabelu: tblIO u kojoj ćeš imati samo dva polja i samo dva unosa:
ID_IO: 1 | IO_OPIS: ISPLATA
ID_IO: 2 | IO_OPIS: UPLATA
U tabeli STANJE_RACUNA (TRANSAKCIJE, kako god...) dodaj jedno LOOKUP polje na tblIO:
ID_STANJE_RACUNA
DATUM_STANJE_RACUNA
LOOKUP_IO
IZNOS_STANJE_RACUNA
NAPOMENA_STANJE_RACUNA
...
Kada napraviš formu za unos, onda napravi proceduru za AFTER UPDATE (ON CHANGE?) da proverava vrednost LOOKUP_IO
Ako je LOOKUP_IO = 1, onda vrednost u polju IZNOS= -LOOKUP_IO*IZNOS
Nadam se da ne treba da prilažem slike?
[ BiloKoje @ 11.02.2010. 12:53 ] @
@Take 5:
U pravu si. Ujedno si odgovorio i na predhodno pitanje zaricmice.
Pozdrav.
[ zaricmica @ 11.02.2010. 12:55 ] @
@BiloKoje: Ma ne tako, nego naprotiv treba da bude jedna zajednička kolona IZNOS.
Napravi posebnu tabelu: tblIO u kojoj ćeš imati samo dva polja i samo dva unosa:
ID_IO: 1 | IO_OPIS: ISPLATA
ID_IO: 2 | IO_OPIS: UPLATA
U tabeli STANJE_RACUNA (TRANSAKCIJE, kako god...) dodaj jedno LOOKUP polje na tblIO:
ID_STANJE_RACUNA
DATUM_STANJE_RACUNA
LOOKUP_IO
IZNOS_STANJE_RACUNA
NAPOMENA_STANJE_RACUNA
...
Kada napraviš formu za unos, onda napravi proceduru za AFTER UPDATE (ON CHANGE?) da proverava vrednost LOOKUP_IO
Ako je LOOKUP_IO = 1, onda vrednost u polju IZNOS= -LOOKUP_IO*IZNOS
Nadam se da ne treba da prilažem slike?
;)[/quote][quote] Take 5:
hehee, pa valjale bi slike :))) posto nikad nisam radio na ovakav nacin. Svejedno mnogo ste mi pomogli. Hvala jos jednom.
[ Take 5 @ 11.02.2010. 13:29 ] @
LOL!
Pa evo ovako nekako

[ zaricmica @ 11.02.2010. 19:50 ] @
Eee, evo sta sam ja uradio. Ali opet zeza. Naime, kada sumiram radi sve ok, ali kada idem na racunsko polje, da mi izracuna stanje kao razliku uplate i isplate ne radi. Ako mozete vi pomozite nesto :)) hvala unapred
[ BiloKoje @ 12.02.2010. 06:15 ] @
Kada u upitu sabiraš dve kolone, ako u jednoj nemaš podatak Access ne smatra da je u tom polju vrednost nula, to moramo da mu kažemo. Najbolje pomoću funkcije iif(). Konkretno, kada u i u koloni iznos uplate i u koloni iznos isplate imaš unete vrednosti, Access će ih sabrati, ako u jednoj od kolona nemaš ništa uneto Access neće vratiti rezultat.
U tvom upitu sam za izračunavanje stanja upisao :stanje: Sum(IIf([iznos uplate];[iznos uplate];0)+IIf([iznos isplate];[iznos isplate];0))
Ja obično za polja u koja se upisuju vrednosti koja kasnije služe za izračubavanja stavljam Default Value=0 i Required=Yes tako da ako nisam ništa uneo ne može da ostane polje prazno već ima vrednost =0.
[ Take 5 @ 12.02.2010. 08:04 ] @
Citat: BiloKoje: .. ako u jednoj nemaš podatak Access ne smatra da je u tom polju vrednost nula...
Null = nema vrednosti (ništa)
0 = vrednost je nula
Funkcija Nz: Nz(Value, ValueIfNull)
Citat: You can use the Nz function to return zero, a zero-length string (" "), or another specified value when a Variant is Null. For example, you can use this function to convert a Null value to another value and prevent it from propagating through an expression.expression.
...
For example, the expression 2 + varX will always return a Null value when the Variant varX is Null. However, 2 + Nz(varX) returns 2.
...
[ zaricmica @ 12.02.2010. 14:58 ] @
Kada u upitu sabiraš dve kolone, ako u jednoj nemaš podatak Access ne smatra da je u tom polju vrednost nula, to moramo da mu kažemo. Najbolje pomoću funkcije iif(). Konkretno, kada u i u koloni iznos uplate i u koloni iznos isplate imaš unete vrednosti, Access će ih sabrati, ako u jednoj od kolona nemaš ništa uneto Access neće vratiti rezultat.
U tvom upitu sam za izračunavanje stanja upisao : stanje: Sum(IIf([iznos uplate];[iznos uplate];0)+IIf([iznos isplate];[iznos isplate];0))
Ja obično za polja u koja se upisuju vrednosti koja kasnije služe za izračubavanja stavljam Default Value=0 i Required=Yes tako da ako nisam ništa uneo ne može da ostane polje prazno već ima vrednost =0.[/quote][quote] BiloKoje:
Eeee, hvala vam puno. Pretpostavljao sam da zeza zbog nule u polju, ali sam trazio neko komplikovano resenje, umesto da sam stavljao default nulu. Ja sam uradio dva upita u kojima se sumiraju uplate i isplate, pa sam onda napravio novi upit, koji racuna stanje. Posto cenim da je if malo komplikovano za ekonomiju :D hvala jos jednom, puno ste mi pomogli.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|