Witam wszystkich. Z uwagi na fakt, że to mój pierwszy post dwa zdania o mnie. Programuje w Delphi (wcześniej Pascalu) już 12 lat. Ostatnio dużo pod kątem baz danych z uwagi na potrzeby zawodowe (ułatwienia w pracy dla mnie). Chciałbym podzielić się moimi uwagami i moimi rozwiązaniami pewnych spraw oraz zapytać o kilka rzeczy, których nie znalazłem na forum. Bawiłem się bazą Paradox'a, ale niestety jako baza desktopowa ma poważne ograniczenia (przede wszystkim brak transakcyjności, a co za tym idzie nadaje się głównie do zastosowań jednostanowiskowych)
Ostatnio przesiadłem się na Delphi + Firebird i idzie mi całkiem dobrze, ale mam kilka pytań/uwag.
Zatem sprawa dotyczy bazy danych Firebird'a.
-
Czy używacie procedur zapamiętanych do wyświetlania danych? Chodzi mi o to, że mam program, który działa w sieci rozległej (jak wiadomo wąskie gardło przepustowości) i zastanawiałem się czy robić zapytania wybierające SELECT z kodu programu, czy też wywoływać procedury zapamiętane. Przeczytałem, że te drugie znacznie ograniczają ruch w sieci, a ich wykonanie odbywa się na serwerze (czyli teoretycznie szybciej). Zwracany jest tylko wynik zapytania. Jednakże z mojej obserwacji wynika, że nie ma wielkiej różnicy w szybkości działania operacj wyświetlania danych jeżeli używa się SELECT'a z kodu programu zamiast SELECT'a wywołującego procedurę zapamiętaną. CO WY O TYM SĄDZICIE I JAK (W KTÓRYCH WYPADKACH) STOSUJECUE TEN MECHANIZM? Będę wdzięczny za uwagi w tym temacie? Ja na razie pozostaje za procedurą zapamiętaną.
-
Jak radzicie sobie z wyświetlaniem rekordów detail dla tabeli master na formatce. Chodzi mi o taką hipotetyczną sytuację. Na jednej formatce mamy dwa DBGridy. Jedne zawiera nagłówki faktur, a drugi pod spodem rekordy będące asortymentem danej faktury (czyli detail dla rekordu master danej faktury).
Teraz zmieniamy (klikamy) fakturę na inną i powinny w dolnym DBGridzie wyświetlić się rekordy detail dla nowo wskazanej faktury. Gdzie obsługujecie to zdarzenie, żeby zawsze działało (zarówno dla klawiatury jak i myszki oraz innych zdarzeń operujących na rekordach). Ja próbowałem wielu sposobów i znalazłem tylko jeden, który działa za każdym razem. Otóż umieszczam na formatce niewidoczne pole ID tabeli master i obsługuje zdarzenie OnChange dla tego pola. Jeśli wartość się zmieni to ponownie wykonywane jest zapytanie SELECT dla tabeli detail (czyli asortymenty danej faktury). MOŻE JEST JAKIŚ PROSTSZY SPOSÓB?