ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π»ΡΠ±ΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Π½Π°ΠΏΡΡΠΌΡΡ ΠΈΠ· SQLNavigator, ΠΈ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΎ SQLNavigator ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄Π΅Π»Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ Π³ΡΡΠΏΠΏΠ°ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΠΈΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΡΠΎΡΠΌΡ (ΡΠΈΡ. 2.55).
Π ΠΈΡ 2.55. ΠΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ Π³ΡΡΠΏΠΏΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ SQL Navigator
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΡ ΡΠ²ΠΎΠΉΡΡΠ² Π²ΠΎ Π²Π½Π΅ΡΠ½Π΅ΠΌ ΡΠ°ΠΉΠ»Π΅ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ Save selected SQLs ΠΈΠ»ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΈΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΡ ΠΏΡΡΠΌΠΎ Π² SQLNavigator ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ Check selected SQLs ΠΠ°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» Ρ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ²
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ SQLNavigator Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΡΠ΅ΠΊΡΡΠ° Π² SQL Π² ΡΠ°ΠΌΠΊΠ°Ρ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° ΡΠΈΡ. 2 56 Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΡ Π²ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΡΡΡΠΎΠΊΡ "ID"
ΠΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ Π½Π°ΠΆΠ°ΡΠΈΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ΅ SQLNavigator Π²ΡΠ±Π΅ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΌΠΎΠ³ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ SQL.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, SQLNavigator ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ΅Π½Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ SQL-ΠΊΠΎΠ΄ΠΎΠΌ Π² ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , ΠΏΠΎΠΆΠ°Π»ΡΠΉ, Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ Π² ΡΠ²ΠΎΠ΅ΠΌ ΡΠΎΠ΄Π΅
Π ΠΈΡ 2.56. Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΠΎΠΈΡΠΊΠ° ΡΠ΅ΠΊΡΡΠ° Π² Π·Π°ΠΏΡΠΎΡΠ°Ρ FIBPIus
Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ FIBPIus
ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΠΎΡΠ΅ΡΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ
ΠΠΎΡΡΠ΅ΠΊΡΠ½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΠΎΡΠ΅ΡΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΡΡΠΎΠΉΡΠΈΠ²ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π²ΠΎΠΎΠ±ΡΠ΅ ΠΈ, ΠΏΠΎΠΆΠ°Π»ΡΠΉ, ΡΠ°ΠΌΡΠΌ Π²Π°ΠΆΠ½ΡΠΌ Π²ΠΎΠΏΡΠΎΡΠΎΠΌ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΡΡΠ»ΠΎΠ²ΠΈΡΡ Π½Π΅ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π° ΡΠ²ΡΠ·ΠΈ (Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ dial-up).
FIBPIus ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ ΠΏΠΎΠ»Π½ΡΠΉ Π½Π°Π±ΠΎΡ ΡΡΠ΅Π΄ΡΡΠ² Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠΎΡΠ΅ΡΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ: Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π°ΠΊΠΊΡΡΠ°ΡΠ½ΠΎ Π·Π°ΠΊΡΡΡΡ Π²ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, "Π·Π°ΠΊΡΡΡΡ" (Ρ. Π΅. Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ) ΡΠ°ΠΌΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π±Π΅Π· Π·Π°ΠΊΡΡΡΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ².
ΠΠ»ΡΡΠ΅Π²ΡΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ TpFTBErrorHandler. Π€ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ, ΠΏΠΎΡΠ΅ΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° TpFIBDatabase Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ ΡΠΎΠ±ΡΡΠΈΡ OnLostConnect, ΠΎΠ΄Π½Π°ΠΊΠΎ Π±Π΅Π· "Π³Π»ΡΠ±ΠΎΠΊΠΎΠ³ΠΎ" ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΠ° Π² TpFIBErrorHandler ΠΌΡ Π½Π΅ ΡΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·Π±Π°Π²ΠΈΡΡΡΡ ΠΎΡ Π»ΠΈΡΠ½ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΎ ΠΏΠΎΡΠ΅ΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ.
ΠΡΠ°ΠΊ, ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΎΡΡΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅Π΅ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² TDBGrid ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΏΠΎΡΠ΅ΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ ΡΡΠ΅ΠΌΡ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ, ΠΏΡΠΎ ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΆΠ΅ Π±ΡΠ»ΠΎ ΡΠΏΠΎΠΌΡΠ½ΡΡΠΎ (ΡΠΈΡ. 2.57).
Π ΠΈΡ 2.57. ΠΠ½Π΅ΡΠ½ΠΈΠΉ Π²ΠΈΠ΄ Π³Π»Π°Π²Π½ΠΎΠΉ ΡΠΎΡΠΌΡ ΠΏΡΠΈΠΌΠ΅ΡΠ° Connection Lost
ΠΠ°ΠΏΠΎΠ»Π½ΠΈΠΌ SelectSQL Π΄Π»Ρ CompaniesDataSet: select * from "Companies" ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΠΌ CompaniesDataSet ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΡΡΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΡ (ΡΠΈΡ. 2.58).
Π ΠΈΡ 2.58. Π‘Π²ΠΎΠΉΡΡΠ²Π° AutoUpdateOptions ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° CompaniesDataSet
ΠΠΊΠ»ΡΡΠΈΠΌ ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅ΠΆΠΈΠΌ CachedUpdates (CompaniesDataSet.CachedUpdates := True), ΡΡΠΎΠ±Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π±Π΅Π· ΠΏΠΎΡΠ΅ΡΠΈ Π΄Π°Π½Π½ΡΡ .
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ cmbKindOnLost: TComboBox Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠΏΠΈΡΠΎΠΊ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΡΠ΅Π°ΠΊΡΠΈΠΉ Π½Π° ΠΏΠΎΡΠ΅ΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, ΡΡΠΎΠ±Ρ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ:
Close pFIBDataBase
Terminate application
Restore connect
Π’Π΅ΠΏΠ΅ΡΡ ΠΎΠ±ΡΠ°ΡΠΈΠΌ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ pFIBErrorHandlerl (ΡΠΈΡ. 2.59).
TpFIBErrorHandler ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ "ΠΎΡΠΎΠ±ΡΠΌ" ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π΄Π²Π° ΡΠΈΠΏΠ° ΠΎΡΠΈΠ±ΠΎΠΊ: ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈ ΠΏΠΎΡΠ΅ΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ . Π ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π·Π°Π»ΠΎΠΆΠ΅Π½Π° ΡΠ°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ Π½Π°ΡΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΡΡΠ»ΠΎΡΠ½ΠΎΠΉ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ Π²Π΅ΡΡΠΈΡΡ FIBPlus Π΄Π°Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π΅ΡΠ΅ Π½Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π°.
TpFIBErrorHandler ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎ ΡΠΎΠ±ΡΡΠΈΠ΅ - OnFIBErrorEvent, ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π½Π°ΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΏΠΎΡΠ΅ΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ :
procedure TForml.pFibErrorHandlerlFIBErrorEvent(Sender:
TObject;
ErrorValue: EFIBError; KindlBError: TKindlBError; var
DoRaise: Boolean);
begin
if KindlBError = keLostConnect then begin
DoRaise := false;
Abort;
end;
end;
Puc 2.59. Π‘Π²ΠΎΠΉΡΡΠ²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° pFIBErrorHandlerl
ΠΠΎΡ Π² ΠΎΠ±ΡΠ΅ΠΌ-ΡΠΎ ΠΈ Π²Π΅ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ - ΠΌΡ ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΏΡΠ΅ΡΠ°Π΅ΠΌ Π²ΡΠ²ΠΎΠ΄ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎ ΠΏΠΎΡΠ΅ΡΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ. ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ OnFIBEnorEvent Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ°Π·Π½ΠΎΠ³ΠΎ ΡΠΎΠ΄Π° ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠΈΡΡΠ°ΡΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ErrorValue. ΠΠ»Ρ Π½Π°ΡΠ΅Π³ΠΎ ΡΠ»ΡΡΠ°Ρ Π²Π°ΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ Π·Π½Π°ΡΡ ΡΡΠΎ, ΠΊΡΠΎΠΌΠ΅ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΡ QnFIBErrorEvent, TpFIBErrorHandler ΠΈΠ½ΠΈΡΠΈΠΈΡΡΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ OnLostConnection Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² TpFIBDatabase ΠΠΌΠ΅Π½Π½ΠΎ Π·Π΄Π΅ΡΡ ΠΌΡ ΠΈ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΏΠΎΡΠ΅ΡΠΈ ΠΏΠΎΠ΄ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ.
procedure TForml.DatabaseLostConnect(Database: TFIBDatabase; E:
EFIBError;
var Actions: TOnLostConnectActions);
begin
AttemptRest := 0;
case cmbKindOnLost.Itemlndex of 0: begin
Actions := laCloseConnect;
MessageDlg('Connection lost. TpFIBDatabase will be closed'',
mtlnformamon, [mbOk] , 0
);
end;
1: begin
Actions := laTerminateApp;
MessageDlg('Connection lost. Application will be closed',
mtlnformation, [mbOk], 0
);
end;
2: Actions := laWaitRestore;
end;
end;
Π‘ΠΌΡΡΠ» ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΎΡΠ΅Π²ΠΈΠ΄Π΅Π½ - Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° cmbKindOnLost Π½Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π»ΠΈΠ±ΠΎ "Π·Π°ΠΊΡΡΠ²Π°Π΅Ρ" Π°ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ Π²ΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, Π»ΠΈΠ±ΠΎ Π·Π°ΠΊΡΡΠ²Π°Π΅Ρ Π²ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π»ΠΈΠ±ΠΎ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠ΅ΠΆΠΈΠΌ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ΄ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ. ΠΠ΅ΡΠ²ΡΠ΅ Π΄Π²Π° ΡΠ»ΡΡΠ°Ρ ΠΎΡΠ΅Π²ΠΈΠ΄Π½Ρ ΠΈ Π² ΠΎΠ±ΡΠ΅ΠΌ-ΡΠΎ Π½Π΅ ΡΡΠ΅Π±ΡΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ°Π³ΠΎΠ², ΠΊΡΠΎΠΌΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Actions. ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΌΡ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠΌΡΡ Π½Π° Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ CompaniesDataSet Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ CachedUpdates, ΡΠΎ ΠΏΠΎΡΠ΅ΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π½Π΅ Π²Π»ΠΈΡΠ΅Ρ Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π±ΡΠ΄ΡΡ ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌ Π±ΡΡΠ΅ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° CompaniesDataSet Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π² Π·Π°Π΄Π°ΡΡ TpFIBDataBase Π²Ρ ΠΎΠ΄ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎ: ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΡΠ°ΡΡΡΡ Π²ΠΎΡΡΡΠ°Π½ΠΎ'Π²ΠΈΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠΎΠΎΠ±ΡΠ°ΡΡ ΠΎΠ± ΡΠ΄Π°ΡΠ½ΡΡ ΠΈ Π½Π΅ΡΠ΄Π°ΡΠ½ΡΡ ΠΏΠΎΠΏΡΡΠΊΠ°Ρ . ΠΠΎΠ³Π΄Π° ΠΏΠΎΠ΄ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ, ΠΌΡ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌ "ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΡΠ΅" ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊ Π΄Π°Π½Π½ΡΠΌ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π½ΠΈΠΊΡΠΎ Π½Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π½Π°ΡΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΠΏΠΎΡΠ΅ΡΡΡΡ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΡΡΡ.
ΠΡΠ°ΠΊ, Π½Π°ΠΏΠΈΡΠ΅ΠΌ Π΄Π²Π° ΠΏΡΠΎΡΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΠ΅ΡΠ²ΡΠΉ Π΄Π»Ρ ΡΠΎΠ±ΡΡΠΈΡ Database OnErrorRestoreConnect
procedure TForml.DatabaseErrorRestoreConnect(Database:
TFIBDatabase;
E: EFIBError; var Actions: TOnLostConnectActions);
begin
Inc(AttemptRest);
Label4.Caption := IntToStr(AttemptRest);
Label4.Refresh;
end;
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Label4 Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΡΠ΅ΡΡΠΈΠΊ ΠΏΠΎΠΏΡΡΠΎΠΊ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ΄ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ. ΠΡΠΎΡΠΎΠ΅ ΡΠΎΠ±ΡΡΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅Ρ, - AfterRestoreConnect:
procedure TForml DatabaseAfterRestoreConnect;
begin
MessageDlg('Connection restored. You can apply cached updates',
mtlnformation, [mbOk], 0
) ;
end;
ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊ Π±Π°Π·Π΅ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ, ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ Π²ΡΠ΅ ΡΠ΄Π΅Π»Π°Π½Π½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ.
procedure TForml.ButtonlClick(Sender: TObject);
begin
with CompaniesDataSet do
try
if not DataBase.Connected then begin
try
DataBase.Connected . = True;
except
MessageDlg('Can''t restore connect',
mtlnformation, [mbOk], 0
);
Exit;
end
end;
if not Transaction.Active then Transaction StartTransaction;
ApplyUpdToBase;
Transaction.CoimutRetaining;
CommitUpdToCach;
except
if Transaction.Active then Transaction.RollBack;
end;
end;
ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΡΡΠ°Π·Ρ ΠΈΠ· ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° AfterRestoreConnect. Π ΡΠ°ΠΌΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΌΠ΅ΡΠΎΠ΄Ρ ApplyUpdToBase ΠΈ CommitUpdToCach. Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° ApplyUpdates, Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΡ TDataSet, ΠΊΠΎΡΠΎΡΡΠΉ "Π½Π΅ Π·Π°ΠΌΠ΅ΡΠ°Π΅Ρ" ΡΠΊΡΡΡΡΠ΅ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ Π·Π°ΠΏΠΈΡΠΈ (Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ "ΠΠΎΠΊΠ°Π»ΡΠ½Π°Ρ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΡ"), ΠΌΠ΅ΡΠΎΠ΄Ρ ApplyUpdToBase ΠΈ CommitUpdToCach ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΎΠ±ΠΎΠΉΡΠΈ ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ VCL
ΠΠΌΡΠ»ΡΡΠΈΡ Boolean-ΠΏΠΎΠ»Π΅ΠΉ
ΠΡ ΡΠΆΠ΅ Π·Π½Π°Π΅ΡΠ΅, ΡΡΠΎ InterBase Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ . Π§Π΅ΠΌ Π±Ρ ΡΡΠΎ Π½ΠΈ Π±ΡΠ»ΠΎ Π²ΡΠ·Π²Π°Π½ΠΎ, Π½Π°ΠΌ ΠΎΡΡΠ°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ³ΠΎΡΡΠΈΡΡΡΡ ΡΡΠΈΠΌ ΡΠ°ΠΊΡΠΎΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠΈΠΏ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π΅Π½. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠ΅ InterBase, Π²ΡΠ½ΡΠΆΠ΄Π΅Π½Ρ Π·Π°ΠΌΠ΅Π½ΡΡΡ Π΅Π³ΠΎ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ, Π²Π²ΠΎΠ΄Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π΄ΠΎΠΌΠ΅Π½ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π΄Π²ΡΡ Π²ΠΈΠ΄ΠΎΠ².
CREATE DOMAIN TBOOLEAN_CHAR AS CHAR(1)
DEFAULT 'F' NOT NULL
CHECK (VALUE IN ('F', 'T'))
CREATE DOMAIN TBOOLEAN_INT AS INTEGER
DEFAULT 0 NOT NULL
CHECK (VALUE IN (0, 1))
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π»ΡΠ±ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ InterBase ΠΎΠ±Π° ΡΠΏΠΎΡΠΎΠ±Π° ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΡΠ°Π²Π½ΠΎΡΠ΅Π½Π½Ρ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΄Π»Ρ ΠΏΠΎΠ»Π΅ΠΉ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ Ρ ΡΠ°ΠΊΠΈΠΌΠΈ Π΄ΠΎΠΌΠ΅Π½Π°ΠΌΠΈ, Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ Π½Π΅ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Boolean-ΠΏΠΎΠ»Ρ. Π’ΠΎ Π΅ΡΡΡ Π΅ΡΠ»ΠΈ ΠΌΡ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΠΎΠ»Π΅ ΠΊ Π½Π°ΡΠ΅ΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅:
ALTER TABLE "Categories" ADD IS_ACTIVE TBOOLEAN_INT
NOT NULL
Π ΠΏΠΎΡΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ IBX, ΡΠ΄Π΅Π»Π°Π΅ΠΌ Π²ΡΠ±ΠΎΡΠΊΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° TIBDataSet:
SELECT "Categories"."Name", "Categories".IS_ACTIVE
FROM "Categories"
ΡΠΎ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π΄Π²Π° Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π΄Π»Ρ ΠΏΠΎΠ»Π΅ΠΉ:
* TIBStringField Π΄Π»Ρ ΠΏΠΎΠ»Ρ "Name" ΠΈ
* TmtergerField Π΄Π»Ρ ΠΏΠΎΠ»Ρ "IS_ACTIVE"
ΠΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π²Π΅ΡΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ ΠΏΠΎΠ»Π΅ "IS_ACTIVE" Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΌ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²ΡΠ΅ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΡΠΈΠΏΠ° TDBGnd ΠΈ Π΅Π³ΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΈ ΠΎΡ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ Π½Π΅ Π±ΡΠ΄ΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π΄Π°Π½Π½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ Π½Π°ΠΌ Π±Ρ Ρ ΠΎΡΠ΅Π»ΠΎΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΡΠΌΠ΅Π΅Ρ ΡΠΈΡΠΎΠ²Π°ΡΡ "Π³Π°Π»ΠΎΡΠΊΠΈ" Π΄Π»Ρ Boolean-ΠΏΠΎΠ»Π΅ΠΉ, Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π²Π½ΠΎ True, ΡΠΎ ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ "Π²ΠΈΠ΄Π΅ΡΡ" Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ»Π΅, ΡΠΎ ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ "0" ΠΈ "1" Π Π°Π·ΡΠΌΠ΅Π΅ΡΡΡ, Π΅ΡΠ»ΠΈ ΠΌΡ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ, ΡΠΎ ΡΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±ΠΈΡΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΡΠ½ΠΎΡΠ½ΠΎΠ³ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ Π²Π΅Π»ΠΈΡΠΈΠ½ Π΄Π»Ρ ΠΏΠΎΠ»Ρ TIntergerField, ΠΎΠ΄Π½Π°ΠΊΠΎ FIBPlus ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠ΅ ΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅