MotlawaTech:Funkcjonalność "kosza" w kartotece: Różnice pomiędzy wersjami
(Nie pokazano 12 wersji utworzonych przez jednego użytkownika) | |||
Linia 1: | Linia 1: | ||
Tabela w bazie powinna posiadać kolumnę - znacznik usunięcia oraz kolumnę - znacznik czasu edycji; jeśli ich nie posiada, to należy je dodać: | Tabela w bazie powinna posiadać kolumnę - znacznik usunięcia oraz kolumnę - znacznik czasu edycji; jeśli ich nie posiada, to należy je dodać: | ||
− | <pre>add ` | + | <pre>add `alocaltime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, |
add deleted integer default 0;</pre> | add deleted integer default 0;</pre> | ||
− | pole typu ''timestamp'' powinno zostać dodane do CDSa jako ''TSQLTimeStampField'' - definicja w DFM: | + | pole typu ''timestamp'' powinno zostać dodane do zapytania SQL shella oraz do CDSa jako ''TSQLTimeStampField'' - definicja w DFM: |
<pre>object cdslocaltime: TSQLTimeStampField | <pre>object cdslocaltime: TSQLTimeStampField | ||
− | FieldName = ' | + | FieldName = 'alocaltime' |
ProviderFlags = [] | ProviderFlags = [] | ||
Visible = False | Visible = False | ||
end</pre> | end</pre> | ||
− | Nie ma potrzeby dodawania pola - znacznika usunięcia do CDSa. | + | Nie ma potrzeby dodawania pola - znacznika usunięcia do CDSa, ani do zapytania shella warunku na wartość tego pola (jest on dodawany automatycznie). |
− | W shellu przeglądarki należy zdefiniować property ''DeletedFieldName'' oraz ''MaxTimeFieldName'' i podając w/w pola tabeli np. | + | W shellu przeglądarki należy zdefiniować property ''DeletedFieldName'' oraz ''MaxTimeFieldName'' i podając w/w pola tabeli np.: |
<pre>shl.DeletedFieldName := 'deleted'; | <pre>shl.DeletedFieldName := 'deleted'; | ||
shl.MaxTimeFieldName := 'localtime';</pre> | shl.MaxTimeFieldName := 'localtime';</pre> | ||
+ | |||
+ | W oknie FDBC przeglądarki (w zdarzeniu ''Create'' lub ''ChldMayOpen'') należy ustawić: | ||
+ | <pre>DeleteRecHandled := True;</pre> | ||
+ | a w akcji usunięcia rekordu zamiast | ||
+ | <pre>DBPlaces.GUI_OperExecute_Handle_And_Editor(null, hrtExistDelete, 0);</pre> | ||
+ | należy wywołać: | ||
+ | <pre>DeleteRecShell;</pre> | ||
+ | |||
+ | |||
+ | Jeśli z jakiś powodów nie można po prostu usuwać należy w shellu przeglądarki dodać własną definicję dla: | ||
+ | <pre>DoDeletedOnServer</pre> | ||
+ | i wewnątrz oprogramować co i jak (na wejście wchodzi klucz i tryb deleted 0 lub 1) | ||
+ | |||
+ | |||
+ | [[Kategoria:Programowanie|Funkcjonalność "kosza" w kartotece]] |
Aktualna wersja na dzień 09:11, 20 lis 2012
Tabela w bazie powinna posiadać kolumnę - znacznik usunięcia oraz kolumnę - znacznik czasu edycji; jeśli ich nie posiada, to należy je dodać:
add `alocaltime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, add deleted integer default 0;
pole typu timestamp powinno zostać dodane do zapytania SQL shella oraz do CDSa jako TSQLTimeStampField - definicja w DFM:
object cdslocaltime: TSQLTimeStampField FieldName = 'alocaltime' ProviderFlags = [] Visible = False end
Nie ma potrzeby dodawania pola - znacznika usunięcia do CDSa, ani do zapytania shella warunku na wartość tego pola (jest on dodawany automatycznie).
W shellu przeglądarki należy zdefiniować property DeletedFieldName oraz MaxTimeFieldName i podając w/w pola tabeli np.:
shl.DeletedFieldName := 'deleted'; shl.MaxTimeFieldName := 'localtime';
W oknie FDBC przeglądarki (w zdarzeniu Create lub ChldMayOpen) należy ustawić:
DeleteRecHandled := True;
a w akcji usunięcia rekordu zamiast
DBPlaces.GUI_OperExecute_Handle_And_Editor(null, hrtExistDelete, 0);
należy wywołać:
DeleteRecShell;
Jeśli z jakiś powodów nie można po prostu usuwać należy w shellu przeglądarki dodać własną definicję dla:
DoDeletedOnServer
i wewnątrz oprogramować co i jak (na wejście wchodzi klucz i tryb deleted 0 lub 1)