aquo;Id_stoimraquo;,s_kod);;TDM.QOplataAfterOpen(DataSet: TDataSet) ;: word; i:=0 to DataSet.FieldCount - 1 do beginnot (DataSet.Fields [i] .Lookup or DataSet.Fields [i] .Calculated) then.Fields [i] .OnChange:=qrChange; UpperCase (DataSet.Fields [i] .FieldName)= DATE_OPL then.Fields [i] .EditMask:=! 99.99.0000; 1; _ raquo ;;;; TDM.QStoimostAfterOpen (DataSet: TDataSet) ;: word; i:=0 to DataSet.FieldCount - 1 do beginnot (DataSet.Fields [i] .Lookup or DataSet.Fields [i] .Calculated) then.Fields [i] .OnChange:=qrChange ;;; TDM.AppException (Sender: TObject; E: Exception); s_mes, s_msgerr: string; , s_pos, n_kod: integer;
//Помилки, які не пов'язані з БД
if E is EDivByZero then ( Помилка поділу на 0 , mtError, [mbOk], 0)
//Помилка введення неправ.датиif E is EConvertError then begin_pos:=pos ( is not a valid date , (e) .Message); s_pos gt; 0 then begin_mes:=copy (EconvertError (e) .Message, 1, _pos - 1) +
невірний формат дати! ';
MessageDlg (s_mes, mtError, [mbOk], 0)
//Помилки БДif E is EDBEngineError then begin_mes:= raquo ;;
//For Sybase5 беремо код останньої помилки
//n_kod:=EdbEngErr (e) .Err..s [EdbEngErr (e) .ErrorCount - 1] .NatiVe;
//For Sybase8 беремо код 2-й помилки
n_kod:=EdbEngineError (e) .Errors [1] .NatiVeError; n_kod lt; gt; 0 then beginn_kod of
- 193://- 193 - код ош.Sybase Порушення РК
//Коди помилок BDE $ 2 601: {+9729}
s_mes:= Дублювати т. записи не допускається raquo ;;
://Порушення FK
s_mes:= Такого коду в довіднику немає raquo ;;
://Наруш Not Null
s_mes:= Поле має бути заповнене raquo ;;
://Є посилання в дочірніх
s_mes:= На запис є посилання в др.табліце! Видаляти можна raquo ;;
//- 121 - порушення прав доступу
//- 209 - порушення ограніч.на поле табл
//- 196 - порушення унікальності неключ.реквізіта
://Помилки з тригерів БД
for i:=1 to EDBEngineError (e) .ErrorCount - 1begin_msgerr:=EdbEngineError (e) [i] .Message; s_mes lt; gt; then s_mes:=s_mes + raquo ;; _ pos:=pos ( RAISERROR EXECUTED ,//19сімв (s_msgerr)); s_pos gt; 0 then_mes:=s_mes + copy (s_msgerr, s_pos + 19, (s_msgerr) -s_pos - 19 + 2) _mes :=s_mes + s_msgerr//- 99999;// Case (s_mes, mtError, [mbOk], 0)//n_kod lt; gt; 0begini:=0 to EDBEngineError (e) .ErrorCount - 1 do_mes:=s_mes + EDBEngineError (e) .Errors [i] .Message; (s_mes, mtError, [mbOk], 0);
else {Якщо помилка не визначена, даємо можливість вивести помилку Delphi}
Application.ShowException (E) ;;. uEdDogovor ;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ,, StdCtrls, DBCtrls, Grids, DBGrids, ExtCtrls, Mask, Buttons, DB ;=class (TForm): TPanel ;: TPanel ;: TPanel; _Oplata: TDBGrid ;: TLabel ;: TLabel ;: TLabel ;: TLabel ;: TLabel ;: TLabel ;: TBitBtn ;: TBitBtn; _Oplata: TDBNavigator ;: TPanel; _Stoimost: TDBNavigator; _dogov: TDBEdit ;: TDBEdit ;: TDBEdit ;: TDBGrid ;: TDBEdit; _KodSt: TDBLookupComboBox; _Kod_gr: TDBLookupComboBox; FormShow (Sender: TObject); SetButton; BbOkClick (Sender: TObject); BbCancelClick (Sender: TObject) ;
{Private declarations}
{Public declarations} ;: TFrmEdDogovor; uDM;
{$ R * .dfm} TFrmEdDogovor.FormShow (Sender: TObject); not DM.QOplata.Active then.QOplata.Open; not DM.QStoimost.Active then.QStoimost.Open; not DM.QStudent.Active then.QStudent.Open; not DM.QGruppa.Active then.QGruppa.Open ;;; TFrmEdDogovor.SetButton; DM.QDogovor.State in [dsInsert, dsEdit] then begin
BbOk.Caption:= ????????? ; .Caption:= Laquo; ?????? raquo ;;
DBN_Oplata.Enabled:=false; _Oplata.ReadOnly:=true; begin
BbOk.Caption:= ????????????? ; .Caption:= Laquo; ????? raquo ;;
DBN_Oplata.Enabled:=true; _Oplata.ReadOnly:=false ;; TFrmEdDogovor.BbOkClick (Sender: TObject); DM.QDogovor.State in
[dsInsert, dsEdit] then.QDogovor.Post.QDogovor.Edit ;;; TFrmEdDogovor.BbCancelClick (Sender: TObject); DM.QDogovor.State=dsEdit then.QDogovor.CancelbeginDM.QDogovor.State =dsInsert then.QDogovor.Cancel ;;; begin ;;;;; Ulib; Windows, sysutils, DB ,, Forms ,, Dialogs; ClearUpdate (DS: TDataSet); SetUpdate (sender: Tfield); CreateUpdateSql (DS: TDataSet; qSQL: TQuery; ntable: string); CreateDeleteSql (ntable: string; fld_name, fld_value: string): Boolean; dsBeforePost (DS...