chore: 首次簽入 Thinkyu ASP.NET 專案

- 加入 Visual Studio / ASP.NET .gitignore
- 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
This commit is contained in:
2026-09-10 09:42:37 +08:00
commit 577060bc78
2496 changed files with 501389 additions and 0 deletions
+285
View File
@@ -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.