MotlawaTech:Funkcjonalność "kosza" w kartotece: Różnice pomiędzy wersjami

Z Motława
 
(Nie pokazano 11 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 `localtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+
<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 = 'localtime'
+
       FieldName = 'alocaltime'
 
       ProviderFlags = []
 
       ProviderFlags = []
 
       Visible = False
 
       Visible = False
 
end</pre>
 
end</pre>
Nie ma potrzeby dodawania do CDSa pola - znacznika usunięcia.
+
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)