Warsztat 2: Formuły w Accessie jak w Excelu.

AccFormulyExcel.zip
Autor: Krzysztof Naworyta
Baza w formacie MsAccess 97
53kB, 05-01-2003

Opis problemu:

Niektórzy użytkownicy naszych programów mogą być nieco rozczarowani ograniczeniami accessowych formularzy, bo wcześniej pracowali w Excelu i tam wszystkie formuły były widoczne, sami też mogli je definiować i zmieniać. W Accessie nie widzą wyrażeń w polach wyliczeniowych i muszą ufać, że programista użył właściwego wzoru do uzyskania ważnego dla nich wyniku.

Czy jest możliwość takiego zaprojektowania formularza w Accessie, żeby zapewniał on podobną funkcjonalność jak Excel, czyli możliwość wpisywania do pol tekstowych zarówno konkretnych wartości, np: 3,14 lub Jan Nowak, jak i formuł typu:

=sin(3)+2^log(exp(1.23))+1
'lub
=count(ID)/sum(Pole2)+1

bezpośrednio z poziomu interfejsu użytkownika.

Rozwiązanie:

Sposób na realizację tego zadania znalazł Krzysztof Naworyta i zawarł go w przykładzie AccFormulyExcel.zip. Krzysztof użył dwóch tabel, jednej do zapisu danych (tbDane) i drugiej do zapisu formuł (tbFormuly). Tabele są połączone relacja 1-1, która jasno przypisuje każdą formułe do konkretnej wartości z tabeli danych. W przypadku skasowania rekordu z wartością - usuwana jest jej formuła. Dzieje się to automatycznie, Krzysztof nigdzie w kodzie nie musi tego kontrolować, bo realizuje to sam Access ze względu na relację miedzy tabelami z ustawionym atrybutem: Kaskadowe usuwanie powiązanych rekordów.

Przykład jest dobrze skomentowany, co jest bardzo miłe podczas analizy kodu. Jednak o pewnych występujących w programie zagadnieniach i trudnościach, możemy dowiedzieć się dopiero z autorskiego opracowania. Potwierdza to zasadę, że jeśli widzimy gotowy produkt, ze sprawnie działającymi mechanizmami, to wydaje się nam, że to takie łatwe, miłe i przyjemne programowanie. Zapominamy, że w przypadku nietypowych rozwiązań, ktoś musi zwykle testować kilka metod, wyciągać wnioski z uzyskiwanych efektów i wybierać najlepsze ścieżki, zanim pojawi się ten ostateczny efekt, który nam podoba.