⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.pas

📁 简单的电力计息系统(针对用友财务系统)
💻 PAS
📖 第 1 页 / 共 3 页
字号:
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 + -