Ovo sam i ocekivao
Citat:
Naime, na unos nove fakture (INSERT INTO FAKTURE), Faktura.Iznos dodaje se u polje Promet.Dugovanje (UPDATE PROMET...);
Na unos nove uplate (INSERT INTO UPLATE), Uplata.Iznos dodaje se u polje Promet.Potraznja (UPDATE PROMET...).
Posle bilo koje od ove dve vrste promena OBRACUNAVA SE SALDO, takodje sadrzan u tabeli Potraznja.
U tabeli Promet, sadrzaji kolona potraznja i dugovanje se
MENJAJU,
A NE DODAJE SE NOVI RED ZA SVAKU PROMENU, TJ. NE RADI
INSERT NEGO UPDATE ------- OKO OVOGA SE JOS UVEK DVOUMIM.
Ako malo bolje analiziras problem, mozes da zakljucis da ti tabela PROMET i ne treba kao tabela. Sve sto ima su toj tabeli mozes da dobijes kverijima iz tabela koje sadrze stvarne podatke a to su Fakture i Uplate. Saldo je druga rec za Stanje, a o tome smo pisali mnogo puta, vidi top teme koje se bave magacinima i kaficima i maloprodajama. Ni jedna od tih tema ne nudi gotovu aplikaciju, ali zato ima principe. U tvom slucaju, seti se da je
Saldo = (Ukupno Dugovanje) - (Ukupne Uplate)
Ukupno dugovanje se dobija direktno sabiranjem SVIH faktura, a ukupne uplate se dobijaju sumiranjem SVIH uplata, naravno po kupcu. Kad to sastavis u jedna kveri, dobijes neto sto lici na tvoju tabelu Promet.
Nekada se u starim sistemima Clipepr, DBase radilo ovako kako ti opisujes - ljudi su jednostavno napravili po tabelu za svaki papirni dokument i popunjavali tabele onako kako bi rucno popunjavali doumente. To je cesto u praksi stvaralo probleme, pa su jednog dana neki pametni ljudi seli i izmislili relacione baze, koje pomazu da se mnogi problemi ne rese, nego jednostavno nestanu. E sad, problem je sto relacione baze ne preslikavaju fizicke dokumente 100% u tabele, pa se ponekad programeri zbune. I opet, sto bolji programer, veca steta i zabuna na kraju, jer, progarmer ko programer, resi problem sa vise programiranja. Naravno da trigeri to mogu da rade, ali opet, namena trigera nije da to rade sto ti zelis u ovom slucaju.
Moja preporuka je da pogledas dizajn baze i uocis sva polja u svim tabelama koja su rezultat nekog proracuna. Ako ima takvih polja, izbaci ih i vidi kako mozes da ih izracunas kad ti pritreba ta informacija. Jedno od prvih pravila relacionih baza jeste 'izracunata polja se ne dozvoljavaju'. Tacno je da se to pravilo ponekad moze prekrsiti, ali ne trebe pravilo krsiti po pravilu. Pogotovu ako proracun za polje ukljucuje druge tabele.
Ako odlucis da svesno prekrsis pravila relacionih baza, onda ti tesko mozemo pomoci. Na forumu VB su verovatno bolji programeri nego ovde. Ovde razmisljamo relaciono, i kad se od toga odstupi mnogo onda to izlazi iz naseg domena.