Interface
uses
SysUtils, Classes, DB, ADODB, Dialogs;
type
TDM = class(TDataModule)
Connect: TADOConnection;
DSJurnal: TDataSource;
DSIzd: TDataSource;
Izdeliya: TADOQuery;
IzdeliyaIZD: TWideStringField;
Familiya: TADOQuery;
DSFamilii: TDataSource;
FamiliyaFamiliya: TWideStringField;
FamiliyaName: TWideStringField;
FamiliyaOtchestvo: TWideStringField;
J: TADOQuery;
Jid_j: TAutoIncField;
Jdata: TDateTimeField;
JPDM: TBooleanField;
JPrim: TBooleanField;
Jsostav: TIntegerField;
Jid_fam: TIntegerField;
JId_izd: TIntegerField;
Izdeliyaid_i: TAutoIncField;
Familiyaid_f: TAutoIncField;
JFAM: TStringField;
Prim: TADOQuery;
DSPrim: TDataSource;
JField: TStringField;
JN_izv: TWideStringField;
Primid_p: TAutoIncField;
PrimPrim: TWideStringField;
procedure JurnalAfterInsert(DataSet: TDataSet);
procedure JAfterInsert(DataSet: TDataSet);
procedure JPostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
DM: TDM;
implementation
uses Unit1;
{$R *.dfm}
procedure TDM.JurnalAfterInsert(DataSet: TDataSet);
begin
dM.J.FieldValues['id_izd']:=DM.Izdeliya.FieldValues['id_i'];
end;
procedure TDM.JAfterInsert(DataSet: TDataSet);
begin
dM.J.FieldValues['id_izd']:=DM.Izdeliya.FieldValues['id_i'];
end;
procedure TDM.JPostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
begin
MessageDlg('Поле "Номер извещения" обязательно для заполнения!',
mtError,[mbOK],0);
J.Cancel;
end;
end.
unit Unit3;
Interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TAdd_str = class(TForm)
Label1: TLabel;
Edit1: TEdit;
BitBtn1: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Add_str: TAdd_str;
implementation
uses unit1,unit2;
{$R *.dfm}
procedure TAdd_str.BitBtn1Click(Sender: TObject);
var
s,izv,izd:string;
postire,intizv,i,kolvo,code:integer;
begin
Add_str.Visible:=false;
Form1.Visible:=true;
with DM do begin
s:=J.FieldByName('n_izv').AsString;
kolvo:=StrToInt(Edit1.Text);
postire:=0; //позиция последнего тире
for i:=length(s) downto 1 do
if s[i]='-' then begin
postire:=i;
break;
end;
if postire<>0 then begin
izd:=copy(s,1,postire-1);
izv:=copy(s,postire+1,length(s)-postire);
val(izv,intizv,code);
end;
for i:=1 to kolvo do begin
J.APPEND;
if (postire=0) or (code<>0) then J.FieldByName('N_izv').AsString:=s
else J.FieldByName('N_izv').AsString:=izd+'-'+IntToStr(intizv+i);
j.fieldbyname('sostav').AsInteger:=2;
j.fieldbyname('id_fam').AsInteger:=9;
j.fieldbyname('pdm').AsBoolean:=false;
j.fieldbyname('pril').AsBoolean:=false;
J.Post;
end;
end;
end;
end.
unit Unit4;