📄 gl_enter_credencetype.pas
字号:
unit Gl_Enter_CredenceType;
Interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Base_Entry_Body, ExtPrintReport, Db, ActnList, AdODB, Grids, DBGridEh,
ExtCtrls, ComCtrls, ToolWin, Mask, StdCtrls, linkedit, jpeg;
Type
TFrm_Gl_Enter_CredenceType = Class(TFrm_Base_Entry_Body)
Label1: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Edt_CharacterName: TEdit;
Edt_CharacterNo: TEdit;
Edt_CharacterCode: TEdit;
Cmb_LimitType: TComboBox;
AdoQry_BodyCharacterNo: TStringField;
AdoQry_BodyKmCode: TStringField;
AdoQry_BodyKmName: TStringField;
AdoQry_BodyCredenceTypeLineId: TAutoIncField;
AdoQry_BodyendKm: TIntegerField;
procedure FormCreate(Sender: TObject);
procedure Act_DeleteLineExecute(Sender: TObject);
private
CurrentFormStatus,BeModifyCreatureCode:String;
procedure SaveCredenceTypeHistory(AdoConnection:TAdoConnection;CharacterNo:string;UserCode:string;HisType:integer);
procedure SaveCredenceTypeLineHistory(AdoConnection:TAdoConnection;CharacterNo,CredenceTypeLineId:string;UserCode:string;HisType:integer);
{ Private declarations }
public
DeletedLineId : String;
procedure SetStatus(CurrentStatus:String;var AnswerStatus,
EnableControls:String); Override;//设置各种状态下那些控件Enable
procedure InitControls; Override;//初始化Form上所有控件
procedure SaveData; Override;//把表头控件写入缓存,不要Post
{ Public declarations }
end;
var
Frm_Gl_Enter_CredenceType: TFrm_Gl_Enter_CredenceType;
Month:String;
implementation
uses Gl_Enter_CredenceType_D, Sys_Global;
{$R *.DFM}
{ TFrm_Gl_Enter_ForeignCurrencyRate }
procedure TFrm_Gl_Enter_CredenceType.FormCreate(Sender: TObject);
begin
inherited;
Frm_Gl_Enter_CredenceType_D:=TFrm_Gl_Enter_CredenceType_D.Create(Self);
Frm_Entry_Detail:=Frm_Gl_Enter_CredenceType_D;
end;
procedure TFrm_Gl_Enter_CredenceType.SetStatus(
CurrentStatus: String; var AnswerStatus, EnableControls: String);
begin
inherited;
IF Status='Add' then
EnableControls := 'Edt_CharacterNo,Edt_CharacterCode,Edt_CharacterName,Cmb_LimitType,'
else
EnableControls := 'Edt_CharacterCode,Edt_CharacterName,Cmb_LimitType,';
end;
procedure TFrm_Gl_Enter_CredenceType.InitControls;
var
SqlText:String;
begin
inherited;
If Status='Add' then
begin
CurrentFormStatus:='Add';
Edt_CharacterNo.Text := '';
Edt_CharacterCode.Text := '';
Edt_CharacterName.Text := '';
Cmb_LimitType.ItemIndex := 0;
SqlText:=' Select top 0 Gl_CredenceTypeLine.*,Gl_AccountSubject.KmName,Gl_AccountSubject.endKm '
+' From Gl_CredenceTypeLine Join Gl_AccountSubject '
+' On Gl_CredenceTypeLine.KmCode=Gl_AccountSubject.KmCode ';
AdoQry_Body.Close;
AdoQry_Body.SQL.Text:=SqlText;
AdoQry_Body.Open;
DataSource.DataSet:=AdoQry_Body;
end
else
begin
With AdoQry_Head do
begin
Edt_CharacterNo.Text := fieldbyname('CharacterNo').AsString;
Edt_CharacterCode.Text := fieldbyname('CharacterCode').AsString;
BeModifyCreatureCode := fieldbyname('CharacterCode').AsString;
Edt_CharacterName.Text := fieldbyname('CharacterName').AsString;
Cmb_LimitType.ItemIndex := fieldbyname('LimitType').AsInteger;
SqlText:=' Select Gl_CredenceTypeLine.*,Gl_AccountSubject.KmName,Gl_AccountSubject.endKm '
+' From Gl_CredenceTypeLine Join Gl_AccountSubject '
+' On Gl_CredenceTypeLine.KmCode=Gl_AccountSubject.KmCode '
+' Where Gl_CredenceTypeLine.CharacterNo='''+fieldbyname('CharacterNo').AsString+''' ';
AdoQry_Body.Close;
AdoQry_Body.SQL.Text:=SqlText;
AdoQry_Body.Open;
end;
end;
if Status='Add' then
begin
if Edt_CharacterNo.CanFocus then
Edt_CharacterNo.SetFocus;
TlBtn_InsertLine.Enabled := True;
TlBtn_DeleteLine.Enabled := True;
end
else
begin
if Edt_CharacterCode.CanFocus then
Edt_CharacterCode.SetFocus;
// TlBtn_InsertLine.Enabled := False;
// TlBtn_DeleteLine.Enabled := False;
end;
DeletedLineId := '0';
end;
procedure TFrm_Gl_Enter_CredenceType.SaveData;
var
SqlText:String;
begin
inherited;
if (Cmb_LimitType.ItemIndex <> 0) And (AdoQry_Body.RecordCount=0)then
begin
DispInfo('没有行数据,不能保存!',1);
Abort;
end;
if (Status='Add') then
begin
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.clear;
AdoQry_Tmp.SQL.Text := ' Select * From Gl_CredenceType '
+' Where CharacterNo = '''+Edt_CharacterNo.Text+''' ';
AdoQry_Tmp.Open;
if not AdoQry_Tmp.Eof then
begin
DispInfo('凭证类别字代码不可重复!',1);
Edt_CharacterNo.SetFocus;
Abort;
end;
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.clear;
AdoQry_Tmp.SQL.Text := ' Select * From Gl_CredenceType '
+' Where CharacterCode = '''+Edt_CharacterCode.Text+''' ';
AdoQry_Tmp.Open;
if not AdoQry_Tmp.Eof then
begin
DispInfo('凭证类别字不可重复!',1);
Edt_CharacterCode.SetFocus;
Abort;
end;
end;
If (Status <> 'Add') And (BeModifyCreatureCode <> Trim(Edt_CharacterCode.Text)) Then
begin
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.clear;
AdoQry_Tmp.SQL.Text := ' Select * From Gl_CredenceType '
+' Where CharacterCode = '''+Trim(Edt_CharacterCode.Text)+''' ';
AdoQry_Tmp.Open;
if not AdoQry_Tmp.Eof then
begin
DispInfo('凭证类别字不可重复!',1);
Edt_CharacterCode.SetFocus;
Abort;
end;
end;
DbConnect.beginTrans;
Try
AdoQry_Tmp.Close;
If (Status='Add') Then
begin
SqlText:='Insert Gl_CredenceType '
+' (CharacterNo,CharacterCode,CharacterName,LimitType)'
+' Values('
+''''+Trim(Edt_CharacterNo.Text)+''','
+''''+Trim(Edt_CharacterCode.Text)+''','
+''''+Trim(Edt_CharacterName.Text)+''','
+''''+Inttostr(Cmb_LimitType.ItemIndex)+''')';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.ExecSQL;
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.clear;
SaveCredenceTypeHistory(DbConnect,Trim(Edt_CharacterNo.Text),UserCode,0);
AdoQry_Body.First;
While Not AdoQry_Body.Eof Do
begin
SqlText:='Insert Gl_CredenceTypeLine '
+' (CharacterNo,KmCode)'
+'Values('
+''''+Trim(Edt_CharacterNo.Text)+''','
+''''+AdoQry_Body.fieldbyname('KmCode').AsString+''')';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.ExecSQL;
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Select @@Identity As No';
AdoQry_Tmp.Open;
SaveCredenceTypeLineHistory(DbConnect,Trim(Edt_CharacterNo.Text),AdoQry_Tmp.fieldbyname('No').AsString,UserCode,0);
AdoQry_Body.Next;
end;
end
else
begin
SaveCredenceTypeHistory(DbConnect,Trim(Edt_CharacterNo.Text),UserCode,1);
SqlText:='Update Gl_CredenceType '
+' Set CharacterCode='''+Trim(Edt_CharacterCode.Text)+''','
+' CharacterName= '''+Trim(Edt_CharacterName.Text)+''','
+' LimitType = '''+IntToStr(Cmb_LimitType.ItemIndex)+''' '
+' Where CharacterNo='''+Trim(Edt_CharacterNo.Text) +'''';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.ExecSQL;
AdoQry_Body.First;
While Not AdoQry_Body.Eof Do
begin
if AdoQry_Body.fieldbyname('endKm').AsInteger=-1 then
begin
SqlText:='Insert Gl_CredenceTypeLine '
+' (CharacterNo,KmCode)'
+'Values('
+''''+Trim(Edt_CharacterNo.Text)+''','
+''''+AdoQry_Body.fieldbyname('KmCode').AsString+''')';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.ExecSQL;
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:='Select @@Identity As No';
AdoQry_Tmp.Open;
SaveCredenceTypeLineHistory(DbConnect,Trim(Edt_CharacterNo.Text),AdoQry_Tmp.fieldbyname('No').AsString,UserCode,0);
end
else
begin
SaveCredenceTypeLineHistory(DbConnect,Edt_CharacterNo.Text,AdoQry_Body.fieldbyname('CredenceTypeLineId').AsString,UserCode,1);
SqlText:=' UpDate Gl_CredenceTypeLine '
+' Set KmCode='+''''+AdoQry_Body.fieldbyname('KmCode').AsString+''''+''
+' Where CharacterNo='+''''+Trim(Edt_CharacterNo.Text) +''''
+' And CredenceTypeLineId ='''+AdoQry_Body.fieldbyname('CredenceTypeLineId').AsString+''' ';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.Text:=SqlText;
AdoQry_Tmp.ExecSQL;
end;
AdoQry_Body.Next;
end; //end while
if deletedLineId<>'0' then
begin
SqlText := 'delete from Gl_CredenceTypeLine where CredenceTypeLineId in ('+deletedLineId+')';
ExecuteSql(AdoQry_Tmp,SqlTExt,1) ;
end;
end; //end if
DbConnect.CommitTrans;
Act_Save.Enabled:=False;
DispInfo('数据保存成功!',3);
Except
on e:Exception do
begin
If DbConnect.InTransaction Then
DbConnect.RollBackTrans;
RecOrderror(Self,AdoQry_tmp,E.message);
DispInfo('保存数据失败,请重试!',1);
Abort;
end ;
end;
with AdoQry_Head do
begin
fieldbyname('CharacterNo').AsString := Edt_CharacterNo.Text;
fieldbyname('CharacterCode').AsString := Edt_CharacterCode.Text;
fieldbyname('CharacterName').AsString := Edt_CharacterName.Text ;
fieldbyname('LimitType').AsInteger := Cmb_LimitType.ItemIndex;
end;
end;
procedure TFrm_Gl_Enter_CredenceType.SaveCredenceTypeHistory(
AdoConnection: TAdoConnection; CharacterNo, UserCode: string;
HisType: integer);
var AdoQry:TAdoQuery;
AdoQrytmp:TAdoQuery;
sqltext:string;
chgType:string;
begin
case hisType of
0: chgType:='新增';
1: chgType:='修改';
2: chgType:='删除';
end;
AdoQry:=TAdoQuery.Create(Application);
AdoQry.EnableBCD:=False;
AdoQry.Connection:=AdoConnection;
AdoQrytmp:=TAdoQuery.Create(Application);
AdoQrytmp.EnableBCD:=False;
AdoQrytmp.Connection:=AdoConnection;
SqlText := ' Select * From Gl_CredenceType Where CharacterNo = '''+CharacterNo+''' ';
AdoQry.Close;
AdoQry.SQL.clear;
AdoQry.Sql.Text := SqlText;
AdoQry.Open;
SqlText:='Insert Gl_CredenceTypeHistory '
+' (CharacterNo,CharacterCode,CharacterName,LimitType, '
+' ChgEmployeeCode,ChgTime,ChgType )'
+' Values('
+''''+ AdoQry.fieldbyname('CharacterNo').AsString+''','
+''''+ AdoQry.fieldbyname('CharacterCode').AsString+''','
+''''+ AdoQry.fieldbyname('CharacterName').AsString+''','
+''''+ AdoQry.fieldbyname('LimitType').AsString+''','
+Quotedstr(userCode)+','
+'getdate(),'
+quotedstr(chgType)+')';
with AdoQrytmp do
begin
Close;
sql.clear;
sql.Text:=sqltext;
try
execsql;
except
end;
end;
try
AdoQry.Free;
AdoQrytmp.Free;
except
end;
end;
procedure TFrm_Gl_Enter_CredenceType.SaveCredenceTypeLineHistory(
AdoConnection: TAdoConnection; CharacterNo, CredenceTypeLineId,
UserCode: string; HisType: integer);
var AdoQry:TAdoQuery;
AdoQrytmp:TAdoQuery;
sqltext:string;
chgType:string;
begin
case hisType of
0: chgType:='新增';
1: chgType:='修改';
2: chgType:='删除';
end;
AdoQry:=TAdoQuery.Create(Application);
AdoQry.EnableBCD:=False;
AdoQry.Connection:=AdoConnection;
AdoQrytmp:=TAdoQuery.Create(Application);
AdoQrytmp.EnableBCD:=False;
AdoQrytmp.Connection:=AdoConnection;
with AdoQry do
begin
Close;
sql.clear;
sql.Text:='select * from Gl_CredenceTypeLine where CharacterNo='+Quotedstr(CharacterNo)
+' and CredenceTypeLineId='+CredenceTypeLineId;
Prepared;
open;
end;
SqlText:='Insert Gl_CredenceTypeLineHistory '
+' (CredenceTypeLineId,CharacterNo,KmCode, '
+' ChgEmployeeCode,ChgTime,ChgType)'
+' Values('
+ Quotedstr(AdoQry.fieldbyname('CredenceTypeLineId').AsString)+','
+ Quotedstr(AdoQry.fieldbyname('CharacterNo').AsString)+','
+ Quotedstr(AdoQry.fieldbyname('KmCode').AsString)+','
+ quotedstr(userCode)+','
+'getdate(),'
+ quotedstr(chgType)+')';
with AdoQrytmp do
begin
Close;
sql.clear;
sql.Text:=sqltext;
try
execsql;
except
end;
end;
try
AdoQry.Free;
AdoQrytmp.Free;
except
end;
end;
procedure TFrm_Gl_Enter_CredenceType.Act_DeleteLineExecute(
Sender: TObject);
begin
If status<>'Add' then
if AdoQry_Body.fieldbyname('endkm').Asinteger<>-1 then
DeletedLineId := DeletedLineId+','+AdoQry_Body.fieldbyname('CredenceTypeLineId').AsString;
inherited;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -