selectarrearagefrm.~pas

来自「医药连锁经营管理系统源码」· ~PAS 代码 · 共 244 行

~PAS
244
字号
unit SelectArrearageFrm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGridEh, DbUtilsEh, EhLibCDS, xEhLibCtl, RzButton, DBCtrls, RzDBNav, RzPanel,
  StdCtrls, Mask, RzEdit, ExtCtrls, RzSplit, ImgList, DB, DBClient,
  ckDBClient, MConnect,IMainFrm, ComCtrls, RzDTP, RzRadChk,uDataTypes,
  RzTabs,DBGrids, DbFuncs,ShowProgress,FieldsLayoutFrm;

type
  TFrmSelectArrearage = class(TForm)
    DComm: TDCOMConnection;
    CdsSelectArrearage: TckClientDataSet;
    DsSelectArrearage: TDataSource;
    ImageList1: TImageList;
    DsSelectArrearageDtl: TDataSource;
    CdsSelectArrearageDtl: TckClientDataSet;
    RzPageControl1: TRzPageControl;
    TabSheet1: TRzTabSheet;
    TabSheet2: TRzTabSheet;
    dbgArrearage: TxDBGridEh;
    dbgArrearageDtl: TxDBGridEh;
    RzPanel1: TRzPanel;
    Label1: TLabel;
    ckProvNo: TRzCheckBox;
    ckBillNo: TRzCheckBox;
    ckDate: TRzCheckBox;
    dtpBeginDate: TRzDateTimePicker;
    dtpEndDate: TRzDateTimePicker;
    RzBitBtn2: TRzBitBtn;
    RzBitBtn1: TRzBitBtn;
    edProvNo: TRzEdit;
    edBillNo: TRzEdit;
    ckEmpNo: TRzCheckBox;
    ckCreater: TRzCheckBox;
    edEmpNo: TRzEdit;
    edCreater: TRzEdit;
    CdsSelectArrearageBillNo: TStringField;
    CdsSelectArrearageFDate: TDateTimeField;
    CdsSelectArrearageInOutKind: TSmallintField;
    CdsSelectArrearageDepartID: TIntegerField;
    CdsSelectArrearageDepartNo: TStringField;
    CdsSelectArrearageDepartName: TStringField;
    CdsSelectArrearageProvNo: TStringField;
    CdsSelectArrearageProvName: TStringField;
    CdsSelectArrearageLinkMan: TStringField;
    CdsSelectArrearageEmpNo: TStringField;
    CdsSelectArrearageName: TStringField;
    CdsSelectArrearageCreater: TStringField;
    CdsSelectArrearageCreateName: TStringField;
    CdsSelectArrearageAdsBrowArrearageDtl: TDataSetField;
    CdsSelectArrearageDtlBillNo: TStringField;
    CdsSelectArrearageDtlItemNo: TIntegerField;
    CdsSelectArrearageDtlGoodsID: TStringField;
    CdsSelectArrearageDtlName: TStringField;
    CdsSelectArrearageDtlSpecs: TStringField;
    CdsSelectArrearageDtlUnit: TStringField;
    CdsSelectArrearageDtlBatchNo: TStringField;
    CdsSelectArrearageDtlQty: TBCDField;
    CdsSelectArrearageDtlPrice: TFloatField;
    CdsSelectArrearageDtlTaxRate: TBCDField;
    CdsSelectArrearageDtlUnTaxPrice: TFloatField;
    CdsSelectArrearageDtlGoodsSum: TBCDField;
    CdsSelectArrearageDtlTaxSum: TBCDField;
    CdsSelectArrearageDtlAmount: TBCDField;
    CdsSelectArrearageDtlCostPrice: TFloatField;
    CdsSelectArrearageDtlCostAmount: TBCDField;
    CdsSelectArrearageDtlPBillNo: TStringField;
    CdsSelectArrearageDtlPItemNo: TIntegerField;
    CdsSelectArrearageDtlPaidUp: TBCDField;
    CdsSelectArrearageDtlPayDone: TBooleanField;
    CdsSelectArrearageDtlPayDoneDate: TDateTimeField;
    CdsSelectArrearageDtlRemark: TStringField;
    CdsSelectArrearageDtlUnPaid: TBCDField;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure RzBitBtn2Click(Sender: TObject);
    procedure RzBitBtn1Click(Sender: TObject);
    procedure dbgArrearageDtlDblClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
    IFmMain:iMainForm;
    LocSetting: PLocSetting;
    CdsFieldProPerty:TCKClientDataSet;
    SvrCommon: TDispatchConnection;
    CanMulti : Boolean;
    SvrArrearage:TDispatchConnection;

    Function FilterData:String;
  public
    { Public declarations }
  end;
Function SelectArrearage(DataSet: TDataSet;sBillNo:String;bAppend, bMultiSlt: Boolean): Boolean;

var
  FrmSelectArrearage: TFrmSelectArrearage;

Const
  sFieldProPerty='Select * From SysFieldProPerty Where TableName In(''Arrearage'',''ArrearageDtl'', ''Goodses'')';

implementation

{$R *.dfm}
Function SelectArrearage(DataSet: TDataSet;sBillNo:String;bAppend, bMultiSlt: Boolean): Boolean;
const
  c_Fields1: Array[0..6] of String = ('PBillNo', 'PItemNo', 'PInOutKind','PDate', 'PAmount', 'PPaidUp', 'PUnPaid');
  c_Fields2: Array[0..6] of String = ('PBillNo', 'PItemNo', 'InOutKind','PayDate','Amount', 'PaidUp', 'UnPaid');
var iCount,iLen,i,n : Integer;
    vField1, vField2: TField;
begin
  Result := false;
  with TFrmSelectArrearage.Create(NIl) do begin
    If not bAppend then Begin
      dbgArrearageDtl.Options := dbgArrearageDtl.Options-[dgMultiSelect];
      CanMulti := False;
    End Else
      CanMulti := True;
    CdsSelectArrearage.Filtered := False;
    If (CdsSelectArrearage.Active) And Not(bAppend) Then
      If sBillNo<>'' Then Begin
        edBillNo.Text := sBillNo;
        CdsSelectArrearage.Locate('BillNo',sBillNo,[loCaseInsensitive]);
      End;
    if ShowModal=mrOk then begin
      if bMultiSlt And bAppend Then
        iCount := dbgArrearageDtl.SelectedRows.Count
      Else
        iCount := 1;
      For n:= 0 to iCount-1 do begin
        If bAppend Then Begin
          CdsSelectArrearageDtl.Bookmark := dbgArrearageDtl.SelectedRows[n];
          DataSet.Append
        End Else
          DataSet.Edit;
        iLen := Length(c_Fields1);
        For i:=0 to iLen-1 do begin
          vField1 := DataSet.FindField(c_Fields1[i]);
          if vField1=nil then Continue;
          vField2 := CdsSelectArrearageDtl.FindField(c_Fields2[i]);
          if vField2=nil then Continue;
          vField1.Value := vField2.Value;
        end;
        DataSet.Post;
      End;
    End;
  End;
  Result := true;
end;

procedure TFrmSelectArrearage.FormCreate(Sender: TObject);
begin
  IFmMain := (Application.MainForm as IMainForm);
  SvrArrearage := IFmMain.GetConnection(Handle,'','CKPurchInBase.PurchInRDM');
  CdsFieldProPerty:=TCKClientDataSet.Create(Self);
  LocSetting := IFmMain.IFmMainEx.GetLocSetting;
  SetGressHint('正在连接到公用信息服务器...');
  SvrCommon:=IFmMain.GetConnection(Handle,'','CommonSvr.CommonRDM');
  CdsFieldProPerty.RemoteServer:=SvrCommon;
  CdsFieldProPerty.ProviderName:='DspTemp';
  CdsSelectArrearage.RemoteServer := SvrArrearage;
  CdsSelectArrearage.Open;
end;

procedure TFrmSelectArrearage.FormShow(Sender: TObject);
begin
  LoadFieldsLayOut(LocSetting^.FieldLayoutCfgFile, Name, [dbgArrearage,dbgArrearageDtl]);
  SetGressHint('初始化本地环境...');
  SysFieldXml(CdsFieldProPerty,sFieldProPerty,'TFrmSelectArrearage.Xml');
  SetFieldProperty(CdsFieldProPerty,CdsSelectArrearage,'Arrearage');
  SetFieldProperty(CdsFieldProPerty,CdsSelectArrearageDtl, 'ArrearageDtl,Goodses');
  FreeGressForm;
end;

procedure TFrmSelectArrearage.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  Action := caFree;
end;

function TFrmSelectArrearage.FilterData: String;
Var
  SqlText:String;
begin
  SqlText:='';
  If ckBillNo.Checked Then
    If edBillNo.Text<>'' Then
      SqlText:=' BillNo Like '''+edBillNo.Text+'%''';
  If ckProvNo.Checked Then
    If edProvNo.Text<>'' Then
      If SqlText<>'' Then
        SqlText:=SqlText+' OR (ProvNo Like '+''''+edProvNo.Text+'%'+''' Or ProvName Like '+''''+edProvNo.Text+'%'+''')'
      Else
        SqlText:=' (ProvNo Like '+''''+edProvNo.Text+'%'+''' Or ProvName Like '+''''+edProvNo.Text+'%'+''')';
  If ckDate.Checked Then
    If SqlText<>'' Then
      SqlText:=SqlText+' OR (Fdate<= '+DateToStr(dtpEndDate.Date)+' And FDate>= '+DateToStr(dtpBeginDate.Date)+')'
    Else
      SqlText:=' (Fdate<= '+DateToStr(dtpEndDate.Date)+' And FDate>= '+DateToStr(dtpBeginDate.Date)+')';
  If ckEmpNo.Checked Then
    If edEmpNo.Text <>'' Then
      If SqlText<>'' Then
        SqlText:=SqlText+' OR (EmpNo Like '+''''+edEmpNo.Text+'%'+''' Or Name Like '+''''+edEmpNo.Text+'%'+''')'
      Else
        SqlText:=' (EmpNo Like '+''''+edEmpNo.Text+'%'+''' Or Name Like '+''''+edEmpNo.Text+'%'+''')';
  If ckCreater.Checked Then
    If edCreater.Text<>'' Then
      If SqlText<>'' Then
        SqlText:=SqlText+' OR (Creater Like '+''''+edCreater.text+'%'+''' Or CreateName Like '+''''+edCreater.Text+'%'+''')'
      Else
        SqlText:=' (Creater Like '+''''+edCreater.Text+'%'+''' Or CreateName Like '+''''+edCreater.Text+'%'+''')';
  Result:=SqlText;
end;

procedure TFrmSelectArrearage.RzBitBtn2Click(Sender: TObject);
begin
  CdsSelectArrearage.Filtered:= False;
  CdsSelectArrearage.Filter := FilterData;
  CdsSelectArrearage.Filtered := True;
end;

procedure TFrmSelectArrearage.RzBitBtn1Click(Sender: TObject);
Var iCount : Integer;
begin
  If NOt(CanMulti) Then
    iCount := 0
  Else
    iCount := 1;
  If dbgArrearageDtl.SelectedRows.Count< iCount Then Begin
    MessageBox(Handle,Pchar('请选择应付款单据明细数据!'),'提示',64);
    Exit;
  End;
  ModalResult := mrOK;
end;

procedure TFrmSelectArrearage.dbgArrearageDtlDblClick(Sender: TObject);
begin
  RzBitBtn1Click(niL);
end;

end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?