stockinqryfrm.~pas
来自「群星医药系统源码」· ~PAS 代码 · 共 418 行
~PAS
418 行
unit StockInQryFrm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, RzButton, ImgList, ActnList, ModuleAction, DB, DBClient, MConnect,
Menus, TFlatSpeedButtonUnit, RzStatus, TFlatPanelUnit, RzRadChk, StdCtrls,
RzCmboBx, RzBtnEdt, Mask, RzEdit, ComCtrls, RzDTP, RzLabel, RzPanel, ExtCtrls,
Grids, DBGridEh, xEhLibCtl, RzSplit, StrUtils,
xBaseFrm, IMainFrm, uGlobal, uDataTypes, ckDBClient, ceGlobal;
type
TFmStockInQry = class(TxBaseForm)
ptBkPanel: TFlatPanel;
FlatPanel2: TPanel;
BtnWhatIs: TFlatSpeedButton;
BtnHelp: TFlatSpeedButton;
FlatPanel3: TPanel;
BtnPopMenu: TFlatSpeedButton;
TopPopMenu: TPopupMenu;
SetFields1: TMenuItem;
refresh1: TMenuItem;
ActionList1: TActionList;
ActQuery: TModlAction;
ActReport: TModlAction;
ActFieldsLayout: TModlAction;
ActDataExport: TModlAction;
ActDesignReport: TModlAction;
ActViewBill: TModlAction;
ImageList1: TImageList;
grdStockIn: TxDBGridEh;
DataSource: TDataSource;
cdsStockIn: TckClientDataSet;
Panel1: TRzSizePanel;
Panel2: TPanel;
RzGroupBox1: TRzGroupBox;
Label3: TLabel;
Label4: TLabel;
Label7: TLabel;
Label9: TLabel;
Label10: TLabel;
Label15: TLabel;
Label16: TLabel;
Label5: TLabel;
Label11: TLabel;
RzLabel18: TRzLabel;
Label6: TLabel;
Label13: TLabel;
edtBillNo1: TRzEdit;
edtBillNo2: TRzEdit;
edtProvNo: TRzButtonEdit;
edtGoodsID: TRzButtonEdit;
edtEmpNo: TRzButtonEdit;
edtCreater: TRzButtonEdit;
cmbAudit: TRzComboBox;
edtAudit: TRzButtonEdit;
dtpBegin: TRzDateTimePicker;
dtpEnd: TRzDateTimePicker;
chkMultiSelect: TRzCheckBox;
edtPBillNo: TRzEdit;
RzBitBtn2: TRzBitBtn;
RzBitBtn1: TRzBitBtn;
btnAll: TRzBitBtn;
Label1: TLabel;
Label2: TLabel;
Label8: TLabel;
edtDepotID: TRzButtonEdit;
edtGrup: TRzButtonEdit;
cmbInOutKind: TRzComboBox;
cdsInOutKind: TckClientDataSet;
procedure FormShow(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ActQueryExecute(Sender: TObject);
procedure edtProvNoButtonClick(Sender: TObject);
procedure edtCreaterButtonClick(Sender: TObject);
procedure edtEmpNoButtonClick(Sender: TObject);
procedure edtAuditButtonClick(Sender: TObject);
procedure edtGoodsIDButtonClick(Sender: TObject);
procedure ActReportExecute(Sender: TObject);
procedure BtnPopMenuClick(Sender: TObject);
procedure cdsStockInAfterOpen(DataSet: TDataSet);
procedure ActViewBillExecute(Sender: TObject);
procedure edtGrupButtonClick(Sender: TObject);
procedure edtDepotIDButtonClick(Sender: TObject);
procedure dtpBeginKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure SetFields1Click(Sender: TObject);
procedure refresh1Click(Sender: TObject);
procedure ActFieldsLayoutExecute(Sender: TObject);
procedure ActDataExportExecute(Sender: TObject);
private
{ Private declarations }
IFmMain: IMainForm;
LocSetting: PLocSetting;
iClientID: Integer;
SvrCommon: TDispatchConnection;
CdsFieldProperty :TckClientDataSet;
procedure GetInOutKind;
public
{ Public declarations }
end;
var
FmStockInQry: TFmStockInQry;
implementation
uses SelectProvFrm, SelectBerthFrm, SelectDepartFrm, SelectGoodsFrm, SelectEmpFrm,
FieldsLayoutFrm, SelectDepotFrm, INOutKindFm, DataExportFrm, ShowProgress, DbFuncs, RepSelectFrm;
{$R *.dfm}
Const
sFieldProPerty='Select * From SysFieldProperty Where TableName=''StockIn''';
procedure TFmStockInQry.FormCreate(Sender: TObject);
var SystemTime: TSystemTime;
sTableNames: string;
begin
CdsFieldProperty := TckClientDataSet.Create(Self);
GetLocalTime(SystemTime);
with SystemTime do
dtpBegin.Date := EncodeDate(wYear, wMonth, 1);
dtpEnd.Date := Date;
IFmMain := Application.MainForm as IMainForm;
LocSetting := IFmMain.IFmMainEx.GetLocSetting;
iClientID := IFmMain.IFmMainEx.ClientID;
SetGressHint('正在连接到公用信息服务器...');
SvrCommon := IFmMain.GetConnection(Handle, '', 'CommonSvr.CommonRDM');
cdsStockIn.RemoteServer := SvrCommon;
cdsInOutKind.RemoteServer := SvrCommon;
CdsFieldProPerty.RemoteServer:=SvrCommon;
CdsFieldProPerty.ProviderName:='DspTemp';
end;
procedure TFmStockInQry.FormShow(Sender: TObject);
var sTableNames: string;
begin
SetGressHint('初始化本地环境...');
ptBkPanel.Color := TitlePanelColor;
IFmMain.SetActionStatus(ActionList1, hInstance, self.ClassName);
SysFieldXml(CdsFieldProPerty,sFieldProPerty,'TFmStockInQry.Xml');
sTableNames:='StockInDtl';
SetFieldProperty(CdsFieldProPerty,cdsStockIn,sTableNames);
SetGridEhColor([grdStockIn]);
GetInOutKind;
FreeGressForm;
end;
procedure TFmStockInQry.ActQueryExecute(Sender: TObject);
var
s, MStr, DStr: string;
sTableNames: string;
i: Integer;
begin
MStr := ' and M.FDate >= ''' + FormatDateTime('yyyy-mm-dd', dtpBegin.date)
+ ''' and M.FDate <= ''' + FormatDateTime('yyyy-mm-dd', dtpEnd.Date) + '''';
s := edtProvNo.Text;
if s <> '' then
begin
i := AnsiPos('(', s);
if i>0 then
s := Copy(s, 1, i-1);
MStr := MStr + ' and M.ProvNo = ''' + s +'''';
end;
s := edtDepotID.Text;
if s <> '' then
MStr := MStr + ' and M.DepotID = ' + IntToStr(edtDepotID.Tag);
s := edtEmpNo.Text;
if s <> '' then
MStr := MStr + ' and M.EmpNo = ''' + s + '''';
s := edtAudit.Text;
if s <> '' then
MStr := MStr + ' and M.Audit = ''' + s + '''';
s := edtPBillNo.Text;
if s <> '' then
MStr := MStr + ' and M.PBillNo = ''' + s + '''';
s := edtCreater.Text;
if s <> '' then
MStr := MStr + ' and M.Creater = ''' + s + '''';
if edtGrup.Text <> '' then
MStr := MStr + ' and M.Grup = ' + IntToStr(edtGrup.Tag);
s := cmbInOutKind.Text;
if s <> '' then
begin
i := AnsiPos('-', s);
if i > 0 then
s := copy(cmbInOutKind.Text, 1, i - 2)
else
s := cmbInOutKind.Text;
try
i := StrToInt(s);
except
Application.MessageBox('入库方式无效!请检验[入库方式]!','警告',MB_OK+MB_ICONINFORMATION);
exit;
end;
MStr := MStr + ' and M.InOutKind = ' + s;
end;
if cmbAudit.ItemIndex>0 then
MStr := MStr + ' and M.Transfer='+IntToStr(cmbAudit.ItemIndex-1);
s := edtBillNo1.Text;
if s <> '' then
begin
if edtBillNo2.Text <> '' then
MStr := MStr + ' and M.BillNo >= ''' + s + ''' and M.BillNo <= ''' + edtBillNo2.Text + ''''
else
MStr := MStr + ' and M.BillNo = ''' + s + '''';
end;
s := edtGoodsID.Text;
if s <> '' then
begin
if AnsiPos(',', s) <> 0 then
DStr := DStr + ' and GoodsID in(''' + AnsiReplaceText(s, ',', ''',''') + ''')'
else
DStr := DStr + ' and GoodsID Like ''' + s + '''';
end;
cdsStockIn.Close;
cdsStockIn.Data := SvrCommon.AppServer.QueryBill(iClientID, 'StockIn', MStr, DStr);
sTableNames := 'StockIn';
SetFieldProperty(CdsFieldProPerty,cdsStockIn,sTableNames);
end;
procedure TFmStockInQry.edtProvNoButtonClick(Sender: TObject);
var
sProvNo, sProvName: string;
begin
sProvNo := '';
sProvName := '';
if SelectProv(sProvNo, sProvName) then
begin
edtProvNo.Text := sProvNo+'('+sProvName+')';
end;
end;
procedure TFmStockInQry.edtCreaterButtonClick(Sender: TObject);
var
sEmpNo, sEmpName: string;
begin
sEmpNo := '';
sEmpName := '';
if SelectEmp(sEmpNo, sEmpName) then
edtCreater.Text := sEmpNo;
end;
procedure TFmStockInQry.edtEmpNoButtonClick(Sender: TObject);
var
sEmpNo, sEmpName: string;
begin
sEmpNo := '';
sEmpName := '';
if SelectEmp(sEmpNo, sEmpName) then
edtEmpNo.Text := sEmpNO;
end;
procedure TFmStockInQry.edtAuditButtonClick(Sender: TObject);
var
sEmpNo, sEmpName: string;
begin
sEmpNo := '';
sEmpName := '';
if SelectEmp(sEmpNo, sEmpName) then
edtAudit.Text := sEmpNo;
end;
procedure TFmStockInQry.edtGoodsIDButtonClick(Sender: TObject);
var
sGoodsID: string;
begin
sGoodsID := '';
if ChkMultiSelect.Checked then
begin
if SelectGoodsID(sGoodsID, true) then
If edtGoodsID.Text<>'' Then
edtGoodsId.Text := edtGoodsId.Text+','+sGoodsId
else
edtGoodsId.Text := sGoodsID;
End
else if SelectGoodsID(sGoodsID, false) then
edtGoodsID.text := sGoodsID;
end;
procedure TFmStockInQry.ActReportExecute(Sender: TObject);
begin
SelRepPrint(self.Name, [cdsStockIn], '入库单查询', ActDesignReport.Enabled);
end;
procedure TFmStockInQry.BtnPopMenuClick(Sender: TObject);
var tp:TPoint;
begin
tp.X:=BtnPopMenu.Left;
tp.Y:=BtnPopMenu.Top+BtnPopMenu.Height+1;
tp:=ClientToScreen(tp);
TopPopmenu.Popup(tp.x,tp.Y);
end;
procedure TFmStockInQry.cdsStockInAfterOpen(DataSet: TDataSet);
begin
LoadFieldsLayOut(LocSetting^.FieldLayoutCfgFile, Name, [grdStockIn]);
end;
procedure TFmStockInQry.ActViewBillExecute(Sender: TObject);
var Values: Variant;
sBillNo, sBills: String;
mark: TBookmark;
begin
if cdsStockIn.IsEmpty then Exit;
with cdsStockIn do begin
sBillNo := FieldByName('BillNo').AsString; //取得单号
mark := GetBookmark;
DisableControls;
try
First;
while not Eof do begin //单号有可能是多个,
sBills := sBills+FieldByName('BillNo').AsString+#13; //取出所有单号
Next;
end;
finally
GotoBookmark(mark);
FreeBookmark(mark);
EnableControls;
end;
end;
Values := VarArrayCreate([0,1], varOleStr); //
Values[0] := sBillNo; //查询后的第一张单据
Values[1] := sBills; //查询后的所有单据
IFmMain.DoSome(ActViewBill.ModuleFile, 'ViewBill', Values);
Values := NULL;
end;
procedure TFmStockInQry.edtGrupButtonClick(Sender: TObject);
var iID: Integer;
sNo, sName: String;
begin
iID := 0;
if SelectDepart(iID, sNo, sName) then
begin
edtGrup.Tag := iID;
edtGrup.Text:= sNo;
end;
end;
procedure TFmStockInQry.edtDepotIDButtonClick(Sender: TObject);
var
nDepotID: integer;
sDepotNO, sDepotName: string;
begin
nDepotID := 0;
sDepotNO := '';
sDepotName := '';
if SelectDepot(nDepotID, sDepotNo, sDepotName) then
begin
edtDepotID.Tag := nDepotID;
edtDepotID.Text := sDepotName;
end;
end;
procedure TFmStockInQry.GetInOutKind;
var
i: integer;
begin
cdsInOutKind.Data := SvrCommon.AppServer.GetInOutKind(iClientID, '0');
if cdsInOutKind.IsEmpty then exit;
cdsInOutKind.first;
for i:=0 to cdsInOutKind.RecordCount - 1 do
begin
cmbInOutKind.Items.Add(cdsInOutKind.fieldbyname('KindID').AsString
+ ' - ' + cdsInOutKind.fieldbyname('KindName').AsString);
cdsInOutKind.next;
end;
cdsInOutKind.Close;
end;
procedure TFmStockInQry.dtpBeginKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key=13 then
ActQuery.Execute;
end;
procedure TFmStockInQry.SetFields1Click(Sender: TObject);
begin
inherited;
SetFieldsLayOut(LocSetting^.FieldLayoutCfgFile, Name, [grdStockIn], '入库单查询');
end;
procedure TFmStockInQry.refresh1Click(Sender: TObject);
begin
inherited;
ExportData([cdsStockIn], '入库单查询', '');
end;
procedure TFmStockInQry.ActFieldsLayoutExecute(Sender: TObject);
begin
SetFieldsLayOut(LocSetting^.FieldLayoutCfgFile, Name, [grdStockIn], '入库单查询');
end;
procedure TFmStockInQry.ActDataExportExecute(Sender: TObject);
begin
ExportData([cdsStockIn], '入库单查询', '');
end;
initialization
RegisterClass(TFmStockInQry);
finalization
UnRegisterClass(TFmStockInQry);
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?