📄 main.pas
字号:
BEGIN
IF PageRate.ActivePageIndex=0 THEN
BEGIN
ActiveGrid:=GridMx;
sReportTitle:='利 息 明 细 表';
END ELSE
BEGIN
ActiveGrid:=GridHz;
sReportTitle:='利 息 汇 总 表';
END;
PrintGrid.DBGridEh:=ActiveGrid;
PrintGrid.PageHeader.CenterText.Add(sReportTitle);
PrintGrid.PageHeader.CenterText.Add('');
END;
PROCEDURE TfmMain.BtnPrintPreviewClick(Sender:TObject);
BEGIN
PrintGrid.DBGridEh:=ActiveGrid;
PrintGrid.Preview;
END;
PROCEDURE TfmMain.BtnPrintClick(Sender:TObject);
BEGIN
PrintGrid.DBGridEh:=ActiveGrid;
PrintGrid.Print;
END;
FUNCTION TfmMain.FormatAccID(AID:STRING):STRING;
VAR k:integer;
BEGIN
k:=StrToInt(AID);
IF k<10 THEN
result:='00'+AID
ELSE IF (k>9)AND(k<100) THEN
result:='0'+AID
ELSE
result:=AID;
END;
PROCEDURE TfmMain.edtAccIDChange(Sender:TObject);
VAR s:STRING;
BEGIN
CurrAccID:=FormatAccID(edtAccID.Text);
//Format('%3d', [StrToInt()]);
TRY
Screen.Cursor:=crHourGlass;
s:=GetConnStr('master', trim(edtDataServer.Text), trim(edtDataPass.Text), trim(edtDataUser.Text));
bLinked:=(ConnectADO(FDM.DBConn, s, 30, false)=1);
IF NOT bLinked THEN
BEGIN
MyWarning('测试连接失败!'#13#10'请重新设置...');
exit;
END;
Self.SetYearRang();
FINALLY
Screen.Cursor:=crDefault;
END;
END;
FUNCTION TfmMain.OpenYearDB(bInfo:Boolean):Boolean;
VAR
s:STRING;
BEGIN
TRY
Screen.Cursor:=crHourGlass;
sRateKM:=trim(edtRateKM.Text);
CurrAccYear:=edtCurrYear.Text;
CurrAccID:=Format('%.3d', [StrToInt(edtAccID1.Text)]); //FormatAccID(edtAccID1.Text);
s:=GetConnStr('master', trim(edtDataServer.Text), trim(edtDataPass.Text), trim(edtDataUser.Text));
bLinked:=(ConnectADO(FDM.DBConn, s, 30, false)=1);
IF NOT bLinked THEN
BEGIN
MyWarning('测试连接失败!'#13#10'请重新设置...');
exit;
END;
AAccInfo:=FDM.GetAccountInfo(CurrAccID);
ShowInfo(Stat0, '帐套:'+CurrAccID+'_'+AAccInfo.Name+'(主管:'+AAccInfo.master+')');
ShowInfo(Stat1, '单位:'+AAccInfo.funit);
CurrYearDB:=FDM.GetYearDBName;
// FDM.CreateTables;
IF bLinked THEN
BEGIN
FDM.GetRateAccCode(FDM.aqKm);
IF bInfo THEN
MyInformation('成功打开'+CurrYearDB);
END
ELSE
BEGIN
IF bInfo THEN
MyWarning('打开'+CurrYearDB+'失败, 可能不存在该年度数据......');
END;
Self.SetButtonStat;
FINALLY
Screen.Cursor:=crDefault;
END;
END;
PROCEDURE TfmMain.TruncateTempData;
VAR s:STRING;
BEGIN
s:='truncate table pubs..Acc_rate';
TRY
ExecSQL(FDM.aqExec, s);
EXCEPT
END;
END;
PROCEDURE TfmMain.BtnInsertRecordClick(Sender:TObject);
BEGIN
cdsRate.Append;
Self.SetButtonStat;
END;
PROCEDURE TfmMain.BtnDeleteRecordClick(Sender:TObject);
BEGIN
IF Choice('真的要删除吗?(请谨慎)') THEN
BEGIN
cdsRate.Delete;
Self.SetButtonStat;
END;
END;
PROCEDURE TfmMain.BtnSaveClick(Sender:TObject);
BEGIN
cdsRate.Post;
Self.SetButtonStat;
END;
PROCEDURE TfmMain.BtnCancelClick(Sender:TObject);
BEGIN
cdsRate.Cancel;
Self.SetButtonStat;
END;
PROCEDURE TfmMain.BtnSaveAllClick(Sender:TObject);
VAR
DBGridEhToExcel:TDBGridEhToExcel;
BEGIN
DBGridEhToExcel:=TDBGridEhToExcel.Create(NIL);
TRY
DBGridEhToExcel.TitleName:=sReportTitle;
DBGridEhToExcel.BeginDate:='开始日期:'+FormatDateTime('yyyy-MM-dd', edtBeginDate.Date);
DBGridEhToExcel.EndDate:='结束日期:'+FormatDateTime('yyyy-MM-dd', edtEndDate.Date);
DBGridEhToExcel.UserName:='';
DBGridEhToExcel.DBGridEh:=ActiveGrid;
DBGridEhToExcel.ShowProgress:=true;
FDM.SaveDlg.Filter:='execl(*.xls)|*.xls';
FDM.SaveDlg.DefaultExt:='*.xls';
FDM.SaveDlg.InitialDir:=AppPath.Self;
IF FDM.SaveDlg.Execute THEN
DBGridEhToExcel.FileName:=FDM.SaveDlg.FileName;
DBGridEhToExcel.ExportToExcel;
FINALLY
DBGridEhToExcel.Free;
END;
END;
PROCEDURE TfmMain.BtnViewListClick(Sender:TObject);
VAR sSQL, sTmpFile:STRING;
StartDate, EndDate1:STRING;
BEGIN
StartDate:=FormatDateTime('yyyy-mm-dd', edtBeginDate.Date);
EndDate1:=FormatDateTime('yyyy-mm-dd', edtEndDate.Date);
sSQL:=' select a.*, b.ccode_name as kmmc, b.ccode_engl as bank, c.ccode_name '
+'as dfkmmc, c.ccode_engl as dfbank, c.bcDefine9 as flag from '
+' (SELECT ccode,ino_id, dbill_date, max(iperiod) as iperiod, max(cbill) '
+' as cbill, max(ccheck) as ccheck, max(cdigest) as digest, max('
+' ccode_equal) as code_equal, (sum(mc)-sum(md)) as fs'
+' FROM '+CurrYearDB+'..GL_accvouch '
+' where iflag is null and dbill_date>='+QuotedStr(StartDate)
+' and dbill_date<='+QuotedStr(EndDate1)
+' and ccode like '''+sRateKM+'%'''
+' group by ccode,ino_id, dbill_date '
+' ) as a, '+CurrYearDB+'..code as b, '+CurrYearDB+'..code as c '
+' where a.ccode=b.ccode and a.code_equal=c.ccode';
TRY
TRY
OpenSQL(FDM.aqShare, sSQL);
FDM.aqShare.DisableControls;
//sTmpFile:=GetTmpFileName(false);
//FDM.aqShare.SaveToFile(AppPath.Temp+sTmpFile, pfXML); }
mmtPZ.LoadFromDataSet(FDM.aqShare, FDM.aqShare.RecordCount, lmCopy, true);
//mmtPZ.FieldDefs.Add('flag',ftBoolean);// FieldByName('flag').ReadOnly:=false;
EXCEPT
//DeleteFile(AppPath.Temp+sTmpFile);
END;
FINALLY
FDM.aqShare.EnableControls;
FDM.aqShare.Close;
//DeleteFile(AppPath.Temp+sTmpFile);
END;
PageRate.ActivePageIndex:=2;
END;
FUNCTION TfmMain.GetOneVoucherInfo(AData:TDataSet):TAPz;
BEGIN
IF AData<>NIL THEN
BEGIN
result.pzbh:=AData.FieldByName('ino_id').AsString;
result.fse:=AData.FieldByName('fs').AsCurrency;
result.kmbh:=AData.FieldByName('ccode').AsString;
result.kmmc:=AData.FieldByName('kmmc').AsString;
result.billdate:=AData.FieldByName('dbill_date').AsDateTime;
result.bank:=AData.FieldByName('bank').AsString;
result.biller:=AData.FieldByName('cbill').AsString;
result.digest:=AData.FieldByName('digest').AsString;
result.dfbank:=AData.FieldByName('dfbank').AsString;
result.dfkmbh:=AData.FieldByName('code_equal').AsString;
result.dfkmmc:=AData.FieldByName('dfkmmc').AsString;
result.cpbh:=FormatDateTime('yyyyMMdd', result.billdate)+Format('%.4d', [StrToInt(result.pzbh)]);
END;
END;
PROCEDURE TfmMain.PrintABarCode(APz:TAPz; bPreview:Boolean=false);
VAR v:TfrxMemoView;
Page:TfrxPage;
s:STRING;
BEGIN
s:=AppPath.Report+'电力凭证.fr3';
frxReport.LoadFromFile(s);
Page:=frxReport.Pages[0];
v:=TfrxMemoView(Page.FindObject('mmcpbh'));
IF v<>NIL THEN v.Text:=APz.cpbh;
v:=TfrxMemoView(Page.FindObject('mmbank'));
IF v<>NIL THEN v.Text:=APz.bank;
v:=TfrxMemoView(Page.FindObject('mmbiller'));
IF v<>NIL THEN v.Text:=Format(v.Text, [APz.biller]);
v:=TfrxMemoView(Page.FindObject('mmDigest'));
IF v<>NIL THEN v.Text:=APz.digest;
v:=TfrxMemoView(Page.FindObject('mmkmbh'));
IF v<>NIL THEN v.Text:=APz.kmbh;
v:=TfrxMemoView(Page.FindObject('mmkmmc'));
IF v<>NIL THEN v.Text:=APz.kmmc;
v:=TfrxMemoView(Page.FindObject('mmpzbh'));
IF v<>NIL THEN v.Text:=APz.pzbh;
v:=TfrxMemoView(Page.FindObject('mmdfbank'));
IF v<>NIL THEN v.Text:=APz.dfbank;
v:=TfrxMemoView(Page.FindObject('mmdfkmbh'));
IF v<>NIL THEN v.Text:=APz.dfkmbh;
v:=TfrxMemoView(Page.FindObject('mmdfkmmc'));
IF v<>NIL THEN v.Text:=APz.dfkmmc;
v:=TfrxMemoView(Page.FindObject('mmJE'));
IF v<>NIL THEN v.Text:=FormatCurr('0,.00', APz.fse);
v:=TfrxMemoView(Page.FindObject('mmBigJE'));
IF v<>NIL THEN v.Text:=CurrToChinese(APz.fse);
v:=TfrxMemoView(Page.FindObject('mmBilldate'));
IF v<>NIL THEN v.Text:=FormatDateTime('yyyy"年"MM"月"dd"日"', APz.billdate);
//frxReport.PrepareReport;
frxReport.ShowReport;
// frxReport.PrintReport;
END;
FUNCTION TfmMain.PrintBarCode():integer;
VAR i, j, StatCode:integer;
//APz:TAPz;
bSel:Boolean;
BEGIN
result:=0;
GridPz.DataSource.DataSet.DisableControls;
j:=0;
FOR i:=0 TO GridPz.DataSource.DataSet.RecordCount-1 DO
BEGIN
bSel:=GridPz.DataSource.DataSet.FieldByName('flag').AsBoolean;
IF bSel THEN
BEGIN
APz:=Self.GetOneVoucherInfo(GridPz.DataSource.DataSet);
//打印一张卡片函数调用
PrintABarCode(APz);
Inc(j);
END;
GridPz.DataSource.DataSet.Next;
END;
GridPz.DataSource.DataSet.EnableControls;
result:=j;
END;
PROCEDURE TfmMain.frxReportGetValue(CONST VarName:STRING; VAR Value:Variant);
BEGIN
{ ShowMessage(VarName);
IF CompareText(VarName, 'cpbh')=0 THEN
Value:=APZ.cpbh; }
END;
PROCEDURE TfmMain.GridPzCellClick(Column:TColumnEh);
VAR k, x:Boolean;
BEGIN
IF Column.Field.FieldName='flag' THEN
BEGIN
IF (Column.CheckboxState=cbChecked)OR(Column.CheckboxState=cbGrayed) THEN
Column.CheckboxState:=cbUnchecked
ELSE
Column.CheckboxState:=cbChecked;
END;
END;
PROCEDURE TfmMain.pmiPzSingleClick(Sender:TObject);
BEGIN
APz:=Self.GetOneVoucherInfo(mmtPZ);
Self.PrintABarCode(APz);
END;
PROCEDURE TfmMain.pmiPzMultiClick(Sender:TObject);
BEGIN
Self.PrintBarCode;
END;
PROCEDURE TfmMain.GridPzKeyDown(Sender:TObject; VAR Key:Word;
Shift:TShiftState);
BEGIN
IF (ssCtrl IN Shift)AND(Key=68) THEN
BEGIN
BtnViewDetails.Visible:=true;
END;
IF (ssCtrl IN Shift)AND(Key=72) THEN
BEGIN
BtnViewDetails.Visible:=false;
END;
END;
PROCEDURE TfmMain.BtnViewDetailsClick(Sender:TObject);
VAR
s:STRING;
BEGIN
s:=AppPath.Report+'电力凭证.fr3';
frxReport.LoadFromFile(s); frxReport.DesignReport;
END;
END.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -