pablo397 [ sport addicted ]
jak to rozwiązać? (MS ACCESS 07)
witam, mam problem z formułą. użwam jej do wyświetlenia mi w kwerendzie pewnej wartości. formuła jest długa i skomplikowana i access nie daje rady jej uruchomić - co z tym fantem zrobić?
ogólnie formuła ma wyglądać tak: (((-INT(-wartość1))-wartość1) / (wartość2 * ATRYBUT) * 30
ATRYBUT przyjmuje wartości od uzytkownika (od 1 do 12)
zarówno wartość1 jak i wartość2 są formułami samymi w sobie mnożącymi pole z jednej tabeli przez pole z drugiej tabeli, więc całość rozwleka mi się do takiej postaci:
((( -INT( -( [tabela1].[pole1]*[tabela2].[pole2])) -( [tabela1].[pole1]*[tabela2].[pole2])) / ([tabela3].[pole3]*[tabela4].[pole4] * ATRYBUT)) * 30
wartość1 jest liczona w innym polu kwerendy i wyswietla jako wynik, ale nie mam pojecia jak sie do niej odwołac ani gdzie ja przechowac. gdy probowalem odwolywac sie do aliasu tamtej formuly to cos tam niby kwerenda liczyla, ale przy kazdym uruchomieniu żądala podania jej wartosci - gdy nic nie wpisywalem wyliczenia wydawaly sie w miare dobre, ale srednio dokladne - przy wiekszych wartosciach ATRYBUTU zaczynaly sie duze rozbieznosci.
mysle, ze wyrazenie nie jest na tyle skomplikowane, zeby access nie mogl go policzyc, ale dochodza tu duze liczby po przecinku i za cholere nie wiem jak zmusic kwerende zeby liczyla tylko do powiedzmy dwoch miejsc po przecinku (to w zupelnosci by mi wystarczylo) - zmiany we wlasciwosciach pola zmieniaja tylko format wyswietlania a nie przechowywania danych - a mysle, ze to glowny powod dla ktorego kwerenda nie daje rady (drugi to pewnie liczba rekordow - ogolnie wynosi okolo 200 rekordow, niektore maja dosyc duze wartosci. gdy ustawilem zeby pokazywala z 10 rekordow ze srednimi wartosciami - liczyla wszystko i generowala raporty w oka mgnieniu. po wprowadzanieu pozostalych 190 rekordow - błąd)
ktos cos ciekawego poradzi? w teorii moglby dorobic kolejna tabelka z czescia wyliczen, zrobic druga kwerende aktualizujaca, ktora by mi wypelnila ta tabelke i kwerenda pierwsza (ta na ktorej obecnie pracuje) czesc danych by liczyla na biezaco a czesc pobierala z nowej tabelki, ale
raz - duzo dodatkowej roboty. dwa, musialbym odpalac kwerende aktualizujaca za kazdym razem, gdy uzytkownik zmieni wartosc ATRYBUT, a to bedzie raczej czesto sie dzialo.
edit:
doszedlem do punktu w ktorym głównym problemem w formule jest dzielenie. uproszeczenie dzielnika (ktory prawdopodobnie przymuje za dluga ilosc cyfr po przecinku) powinno sprawe rozwiazac. ew. poprobuje z dzieleniem calkowitym.
pablo397 [ sport addicted ]
uff...
pół dnia siedzenia i znalazlem o co chodzilo. w dzielniku jeden z iloczynów wyrazenia pobieral rekordy z tabeli, w ktorej jeden rekord mial wartość zero - caly iloczyn przyjmowal zero a co za tym szlo - caly dzielnik wychodzil zero. a dzielenie przez zero...
btw. nie ma to jak dialog sam ze soba :D