chore: 首次簽入 Thinkyu ASP.NET 專案
- 加入 Visual Studio / ASP.NET .gitignore - 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
This commit is contained in:
@@ -0,0 +1,285 @@
|
||||
unit unYearOpen;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
||||
Dialogs, ADODB, DB, StdCtrls, ExtCtrls, Grids, DBGrids, wdbreg, DBClient,
|
||||
Provider;
|
||||
|
||||
type
|
||||
TForm1 = class(TForm)
|
||||
Conn: TADOConnection;
|
||||
QBPAA: TADODataSet;
|
||||
DSBPAA: TDataSource;
|
||||
InsertBPAA: TADOCommand;
|
||||
WDBGRID1: WDBGRID;
|
||||
Panel1: TPanel;
|
||||
Label1: TLabel;
|
||||
eYY: TEdit;
|
||||
btnYYOk: TButton;
|
||||
Panel2: TPanel;
|
||||
btnOpenYear: TButton;
|
||||
InsertBPAB: TADOCommand;
|
||||
InsertBPJA: TADOCommand;
|
||||
InsertBPJB: TADOCommand;
|
||||
InsertRASN: TADOCommand;
|
||||
EndOldRASN: TADOCommand;
|
||||
DSPBPAA: TDataSetProvider;
|
||||
CDSBPAA: TClientDataSet;
|
||||
Memo1: TMemo;
|
||||
QBPAACHECKED: TStringField;
|
||||
QBPAABPPNM: TWideStringField;
|
||||
QBPAABPYER: TIntegerField;
|
||||
QBPAABPPYN: TWideStringField;
|
||||
QBPAABPPYM: TWideStringField;
|
||||
QBPAABPPME: TWideStringField;
|
||||
QBPAANEW_BPPNM: TStringField;
|
||||
spl1: TSplitter;
|
||||
Label2: TLabel;
|
||||
eNewYY: TEdit;
|
||||
cbInsertBPAA: TCheckBox;
|
||||
cbInsertBPJA: TCheckBox;
|
||||
cbInsertBPJB: TCheckBox;
|
||||
cbInsertRASN: TCheckBox;
|
||||
cbInsertBPAB: TCheckBox;
|
||||
cbClearFirst: TCheckBox;
|
||||
DeleteBPAA: TADOCommand;
|
||||
DeleteBPAB: TADOCommand;
|
||||
DeleteBPJA: TADOCommand;
|
||||
DeleteBPJB: TADOCommand;
|
||||
DeleteRASN: TADOCommand;
|
||||
procedure btnYYOkClick(Sender: TObject);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
||||
procedure btnOpenYearClick(Sender: TObject);
|
||||
procedure FormActivate(Sender: TObject);
|
||||
private
|
||||
{ Private declarations }
|
||||
oldYY, newYY: integer;
|
||||
procedure DoOpenYear;
|
||||
public
|
||||
{ Public declarations }
|
||||
end;
|
||||
|
||||
var
|
||||
Form1: TForm1;
|
||||
|
||||
implementation
|
||||
|
||||
uses WGUARD1;
|
||||
|
||||
{$R *.dfm}
|
||||
|
||||
procedure TForm1.btnYYOkClick(Sender: TObject);
|
||||
begin
|
||||
oldYY := StrToIntDef(eYY.Text, -1);
|
||||
if (oldYY < 0) then
|
||||
begin
|
||||
Application.MessageBox('年度不合理,請重新輸入', '錯誤', MB_ICONERROR);
|
||||
eYY.SetFocus;
|
||||
exit;
|
||||
end;
|
||||
|
||||
CDSBPAA.Close;
|
||||
CDSBPAA.Params.ParamValues['BPYER'] := oldYY;
|
||||
CDSBPAA.Open;
|
||||
CDSBPAA.FieldByName('CHECKED').ReadOnly := False;
|
||||
CDSBPAA.FieldByName('NEW_BPPNM').ReadOnly := False;
|
||||
end;
|
||||
|
||||
procedure TForm1.DoOpenYear;
|
||||
var newBPPYN, oldBPPYN, newBPPYM: string;
|
||||
begin
|
||||
CDSBPAA.First;
|
||||
CDSBPAA.DisableControls;
|
||||
while not CDSBPAA.Eof do
|
||||
begin
|
||||
if CDSBPAA.FieldByName('CHECKED').Value = 'N' then
|
||||
begin
|
||||
CDSBPAA.MoveBy(1);
|
||||
continue;
|
||||
end;
|
||||
|
||||
newBPPYN := FormatFloat('000', newYY) + CDSBPAA.FieldByName('NEW_BPPNM').AsString;
|
||||
oldBPPYN := CDSBPAA.FieldByName('BPPYN').AsString;
|
||||
newBPPYM := WNTSA(newYY, '', '2') + '年' + CDSBPAA.FieldByName('BPPME').AsString;
|
||||
|
||||
Conn.BeginTrans;
|
||||
try
|
||||
if cbInsertBPAA.Checked then
|
||||
begin
|
||||
if cbClearFirst.Checked then
|
||||
begin
|
||||
DeleteBPAA.Parameters.ParamValues['BPPYN'] := newBPPYN;
|
||||
DeleteBPAA.Execute;
|
||||
end;
|
||||
|
||||
InsertBPAA.Parameters.ParamValues['BPPNM'] := CDSBPAA.FieldByName('NEW_BPPNM').AsString;
|
||||
InsertBPAA.Parameters.ParamValues['BPYER'] := newYY;
|
||||
InsertBPAA.Parameters.ParamValues['BPPYN'] := newBPPYN;
|
||||
InsertBPAA.Parameters.ParamValues['BPPYM'] := newBPPYM;
|
||||
InsertBPAA.Parameters.ParamValues['TRDAT'] := Date;
|
||||
InsertBPAA.Parameters.ParamValues['OLD_BPPYN'] := oldBPPYN;
|
||||
InsertBPAA.Execute;
|
||||
end;
|
||||
|
||||
if cbInsertBPAB.Checked then
|
||||
begin
|
||||
if cbClearFirst.Checked then
|
||||
begin
|
||||
DeleteBPAB.Parameters.ParamValues['BPPYN'] := newBPPYN;
|
||||
DeleteBPAB.Execute;
|
||||
end;
|
||||
|
||||
InsertBPAB.Parameters.ParamValues['BPPYN'] := newBPPYN;
|
||||
InsertBPAB.Parameters.ParamValues['TRDAT'] := Date;
|
||||
InsertBPAB.Parameters.ParamValues['OLD_BPPYN'] := oldBPPYN;
|
||||
InsertBPAB.Execute;
|
||||
end;
|
||||
|
||||
if cbInsertBPJA.Checked then
|
||||
begin
|
||||
if cbClearFirst.Checked then
|
||||
begin
|
||||
DeleteBPJA.Parameters.ParamValues['BPPYN'] := newBPPYN;
|
||||
DeleteBPJA.Execute;
|
||||
end;
|
||||
|
||||
InsertBPJA.Parameters.ParamValues['BPPYN'] := newBPPYN;
|
||||
InsertBPJA.Parameters.ParamValues['TRDAT'] := Date;
|
||||
InsertBPJA.Parameters.ParamValues['OLD_BPPYN'] := oldBPPYN;
|
||||
InsertBPJA.Execute;
|
||||
end;
|
||||
|
||||
if cbInsertBPJB.Checked then
|
||||
begin
|
||||
if cbClearFirst.Checked then
|
||||
begin
|
||||
DeleteBPJB.Parameters.ParamValues['BPPYN'] := newBPPYN;
|
||||
DeleteBPJB.Execute;
|
||||
end;
|
||||
|
||||
InsertBPJB.Parameters.ParamValues['BPPYN'] := newBPPYN;
|
||||
InsertBPJB.Parameters.ParamValues['TRDAT'] := Date;
|
||||
InsertBPJB.Parameters.ParamValues['OLD_BPPYN'] := oldBPPYN;
|
||||
InsertBPJB.Execute;
|
||||
end;
|
||||
|
||||
if cbInsertRASN.Checked then
|
||||
begin
|
||||
if cbClearFirst.Checked then
|
||||
begin
|
||||
DeleteRASN.Parameters.ParamValues['BPPYN'] := newBPPYN;
|
||||
DeleteRASN.Execute;
|
||||
end;
|
||||
|
||||
InsertRASN.Parameters.ParamValues['BPPYN'] := newBPPYN;
|
||||
InsertRASN.Parameters.ParamValues['RASDT'] := EncodeDate(newYY + 1911, 1, 1);
|
||||
InsertRASN.Parameters.ParamValues['TRDAT'] := Date;
|
||||
InsertRASN.Parameters.ParamValues['OLD_BPPYN'] := oldBPPYN;
|
||||
InsertRASN.Execute;
|
||||
|
||||
EndOldRASN.Parameters.ParamValues['RAEDT'] := EncodeDate(oldYY + 1911, 12, 31);
|
||||
EndOldRASN.Parameters.ParamValues['OLD_RAPYN'] := oldBPPYN;
|
||||
EndOldRASN.Execute;
|
||||
end;
|
||||
|
||||
Conn.CommitTrans;
|
||||
Memo1.Lines.Add(newBPPYN + '年度開帳成功');
|
||||
except
|
||||
on E: Exception do
|
||||
begin
|
||||
Conn.RollbackTrans;
|
||||
Memo1.Lines.Add(newBPPYN + '年度開帳失敗!原因為:'#10 + E.Message);
|
||||
end;
|
||||
end;
|
||||
|
||||
CDSBPAA.MoveBy(1);
|
||||
end;
|
||||
CDSBPAA.EnableControls;
|
||||
end;
|
||||
|
||||
procedure TForm1.btnOpenYearClick(Sender: TObject);
|
||||
var valid: Boolean;
|
||||
selected: Boolean;
|
||||
begin
|
||||
if CDSBPAA.IsEmpty then
|
||||
begin
|
||||
Application.MessageBox('請先查詢要複製的年度專案資料後再處理', '錯誤', MB_ICONERROR);
|
||||
eNewYY.SetFocus;
|
||||
exit;
|
||||
end;
|
||||
|
||||
valid := True;
|
||||
selected := False;
|
||||
|
||||
CDSBPAA.First;
|
||||
CDSBPAA.DisableControls;
|
||||
while not CDSBPAA.Eof do
|
||||
begin
|
||||
if CDSBPAA.FieldByName('CHECKED').Value = 'Y' then
|
||||
begin
|
||||
selected := True;
|
||||
valid := valid and (CDSBPAA.FieldByName('NEW_BPPNM').AsString <> '');
|
||||
end;
|
||||
CDSBPAA.MoveBy(1);
|
||||
end;
|
||||
CDSBPAA.First;
|
||||
CDSBPAA.EnableControls;
|
||||
|
||||
if not selected then
|
||||
begin
|
||||
Application.MessageBox('請選擇要開帳的計畫', '錯誤', MB_ICONERROR);
|
||||
exit;
|
||||
end;
|
||||
|
||||
if not valid then
|
||||
begin
|
||||
Application.MessageBox('新計畫代號未輸入,請重新輸入', '錯誤', MB_ICONERROR);
|
||||
exit;
|
||||
end;
|
||||
|
||||
newYY := StrToIntDef(eNewYY.Text, -1);
|
||||
if (newYY < 0) then
|
||||
begin
|
||||
Application.MessageBox('新年度不合理,請重新輸入', '錯誤', MB_ICONERROR);
|
||||
eNewYY.SetFocus;
|
||||
exit;
|
||||
end;
|
||||
|
||||
if (newYY < oldYY) then
|
||||
begin
|
||||
Application.MessageBox('新年度不可小於原年度,請重新輸入', '錯誤', MB_ICONERROR);
|
||||
eNewYY.SetFocus;
|
||||
exit;
|
||||
end;
|
||||
|
||||
DoOpenYear;
|
||||
end;
|
||||
|
||||
procedure TForm1.FormActivate(Sender: TObject);
|
||||
begin
|
||||
eYY.SetFocus;
|
||||
end;
|
||||
|
||||
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
|
||||
begin
|
||||
CDSBPAA.Close;
|
||||
Conn.Connected := False;
|
||||
end;
|
||||
|
||||
procedure TForm1.FormCreate(Sender: TObject);
|
||||
begin
|
||||
Conn.Connected := False;
|
||||
Conn.ConnectionString := Format('FILE NAME=%sYearOpen.udl;', [ExtractFilepath(Application.ExeName)]);
|
||||
Conn.Connected := True;
|
||||
|
||||
CDSBPAA.CommandText :=
|
||||
' SELECT ''N'' AS CHECKED, A.BPPNM, A.BPYER, A.BPPYN, A.BPPYM, B.BPPME, A.BPPNM AS NEW_BPPNM '
|
||||
+ ' FROM BPAA A INNER JOIN BPRJ B ON A.BPPNM=B.BPPNM '
|
||||
+ ' WHERE A.BPYER=:BPYER AND A.BPPNM<>''000001'' ';
|
||||
CDSBPAA.Params.ParamByName('BPYER').DataType := ftInteger;
|
||||
end;
|
||||
|
||||
end.
|
||||
Reference in New Issue
Block a user