📄 salesm_unit.~pas
字号:
unit SALESM_Unit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGridEh, StdCtrls, Buttons, ToolWin, ComCtrls, DB, ADODB,
ExtCtrls,dbgridehimpexp;
type
TSALESM_Form = class(TForm)
CoolBar1: TCoolBar;
ScrollBox3: TScrollBox;
BitBtn3: TBitBtn;
BitBtn5: TBitBtn;
BitBtn10: TBitBtn;
BitBtn6: TBitBtn;
DBGridEh1: TDBGridEh;
BitBtn1: TBitBtn;
HZADOQ: TADOQuery;
INSADOQ: TADOQuery;
Panel1: TPanel;
Label1: TLabel;
BitBtn2: TBitBtn;
Label2: TLabel;
BitBtn7: TBitBtn;
BitBtn4: TBitBtn;
DBGridEh2: TDBGridEh;
BitBtn8: TBitBtn;
Label3: TLabel;
DATACS_ADOQ: TADOQuery;
CX_ADOQ: TADOQuery;
DBGridEh3: TDBGridEh;
Button1: TButton;
Button2: TButton;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
procedure BitBtn10Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
procedure BitBtn6Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn7Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure BitBtn8Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
function ExportToExcel(Grid:TDBGridEh):Boolean;
{ Private declarations }
public
LSNO:integer;//流水号
{ Public declarations }
end;
var
SALESM_Form: TSALESM_Form;
implementation
uses DMUnit, U_CheckRights, MainUnit, JSZTJ_Unit, BEGSTOCK_Unit, RPTUnit,
zf_Unit, csUnit;
{$R *.dfm}
procedure TSALESM_Form.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action:=cafree;
end;
procedure TSALESM_Form.FormDestroy(Sender: TObject);
begin
SALESM_Form:=nil;
end;
procedure TSALESM_Form.BitBtn10Click(Sender: TObject);
begin
Close;
end;
procedure TSALESM_Form.BitBtn1Click(Sender: TObject);
begin
if Application.FindComponent('JSZTJ_FORM')<>NIL Then
JSZTJ_FORM.Show
Else
JSZTJ_FORM:=TJSZTJ_FORM.Create(Application);
JSZTJ_FORM.Show;
end;
procedure TSALESM_Form.FormCreate(Sender: TObject);
begin
with DM.SALE_ADOQ do
begin
Close;
SQL.Clear;
SQL.Add('SELECT Top 100 * FROM SALE');
Open;
end;
end;
procedure TSALESM_Form.BitBtn3Click(Sender: TObject);
var
CARNO:String; //车号
HZ: string; //汇总编号
begin
HZ:= InputBox('请输入汇总编号', '编号', '');
if Trim(HZ)='' Then
begin
Showmessage('汇总编号不能为空');
Exit;
end;
Try
if DM.ADOC.InTransaction then DM.ADOC.RollbackTrans;
DM.ADOC.BeginTrans;
with HZADOQ do
begin
Close;
SQL.Clear;
SQL.Add('SELECT S.ITEM_CARNO,S.ITEM_BZ,S.ITEM_NO,I.ITEM_NAME,U.NUIT_NAME,SO.SORTNAME ,ITEM_NUM=SUM(I.ITEM_NUM*S.ITEM_NUM) ');
SQL.Add('FROM SALE S LEFT JOIN LCITEM_ITEM I ON I.ITEM_FBS=S.ITEM_NO LEFT JOIN ITEM_UNIT U ON ');
SQL.Add('U.NUIT_ID=I.ITEM_UNIT LEFT JOIN ITEM_SORT SO ON SO.SORTID=I.ITEM_SORT ');
SQL.Add('GROUP BY I.ITEM_NAME,U.NUIT_NAME,SO.SORTNAME,S.ITEM_CARNO,S.ITEM_BZ,S.ITEM_NO ');
Open;
end;
HZADOQ.First;
while not HZADOQ.Eof do
begin
with INSADOQ do
begin
Close;
SQl.Clear;
SQL.Add('INSERT INTO LCSALE_HZ(SALE_CARNO,SALE_BZ,SALE_HZ,SALE_ITEMNO,SALE_ITEMNAME,SALE_UNIT,SALE_NUM,SALE_SORT)VALUES(:SALE_CARNO,:SALE_BZ, ');
SQL.Add(':SALE_HZ,:SALE_ITEMNO,:SALE_ITEMNAME,:SALE_UNIT,:SALE_NUM,:SALE_SORT)');
INSADOQ.Parameters.ParamByName('SALE_CARNO').Value:=HZADOQ.FieldByName('ITEM_CARNO').AsString;
INSADOQ.Parameters.ParamByName('SALE_BZ').Value:=HZADOQ.FieldByName('ITEM_BZ').AsString;
INSADOQ.Parameters.ParamByName('SALE_HZ').Value:=HZ;
INSADOQ.Parameters.ParamByName('SALE_ITEMNO').Value:=HZADOQ.FieldByName('ITEM_NO').AsString;
INSADOQ.Parameters.ParamByName('SALE_ITEMNAME').Value:=HZADOQ.FieldByName('ITEM_NAME').AsString;
INSADOQ.Parameters.ParamByName('SALE_UNIT').Value:=HZADOQ.FieldByName('NUIT_NAME').AsString;
INSADOQ.Parameters.ParamByName('SALE_NUM').Value:=HZADOQ.FieldByName('ITEM_NUM').AsFloat;
INSADOQ.Parameters.ParamByName('SALE_SORT').Value:=HZADOQ.FieldByName('SORTNAME').AsString;
INSADOQ.ExecSQL;
end;
HZADOQ.Next;
end;
DM.ADOC.CommitTrans;
showmessage('销售单单品汇总完毕');
Except
DM.ADOC.RollbackTrans;
end;
end;
procedure TSALESM_Form.FormShow(Sender: TObject);
begin
BitBtn6.Enabled:=CheckRights('销售管理单','打印');
BitBtn5.Enabled:=CheckRights('销售管理单','查找');
BitBtn3.Enabled:=CheckRights('销售管理单','汇总');
BitBtn1.Enabled:=CheckRights('销售管理单','采集');
BitBtn8.Enabled:=CheckRights('销售管理单','传输');
BitBtn4.Enabled:=CheckRights('销售管理单','导出');
BitBtn2.Enabled:=CheckRights('销售管理单','作废');
end;
procedure TSALESM_Form.BitBtn5Click(Sender: TObject);
begin
if Application.FindComponent('BEGSTOCK_Form')<>nil then
BEGSTOCK_Form.Show
else
begin
BEGSTOCK_Form:=TBEGSTOCK_Form.Create(Application);
BEGSTOCK_Form.Show;
end;
end;
procedure TSALESM_Form.BitBtn6Click(Sender: TObject);
begin
RPTDM.SALE_Rpt.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'RPT/销售.frf');
RPTDM.SALE_Rpt.ShowReport;
end;
procedure TSALESM_Form.BitBtn2Click(Sender: TObject);
begin
LSNO:=DM.SALE_ADOQ.FieldByName('SALENO').AsInteger;
if Application.FindComponent('ZF_Form')<>nil then
ZF_Form.Show
else
begin
ZF_Form:=TZF_Form.Create(Application);
ZF_Form.Show;
end;
end;
procedure TSALESM_Form.BitBtn7Click(Sender: TObject);
begin
with DM.SALE_ADOQ do
begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM SALE WHERE 2>1 ');
open;
end;
end;
procedure TSALESM_Form.BitBtn4Click(Sender: TObject);
begin
ExportToExcel(dbgrideh2);
end;
function TSALESM_Form.ExportToExcel(Grid: TDBGridEh): Boolean;
const
Filter='Excel文件(*.xls)|*.xls';
var
SaveDiaLog:TSaveDialog;
fileName:String;
begin
Result:=false;
if Grid=nil then exit;
if Grid.DataSource=nil then exit;
if Grid.DataSource.DataSet=nil then exit;
if Not Grid.DataSource.DataSet.Active then exit;
if Grid.DataSource.DataSet.RecordCount<=0 then exit;
SaveDiaLog:=TSaveDialog.Create(nil);
SaveDiaLog.Options:=SaveDiaLog.Options+[ofOverwritePrompt];
try
try
SaveDiaLog.Filter:=Filter;
if SaveDiaLog.Execute then
begin
fileName:=SaveDiaLog.FileName;
if UpperCase(ExtractFileExt(fileName))<>'.XLS' then
fileName:=fileName+'.xls';
// SaveDBGridEhToExportFile(TDBGridEhExportAsHTML,Grid,FileName,true);
SaveDBGridEhToExportFile(TDBGridEhExportAsXLS,Grid,FileName,true);
Application.MessageBox('文件导出成功!','提示',MB_OK+MB_IconInformation);
// SetOtherAction(GetParent(Grid.Handle).Name,daExcel,'');
//postmessage(Application.MainForm.Handle,WM_LOG,integer(@LogInfo),0);
result:=true;
end;
except
Raise Exception.Create('文件导出失败:'+Exception(ExceptObject).Message);
end;
finally
SaveDialog.Free;
end;
end;
procedure TSALESM_Form.BitBtn8Click(Sender: TObject);
begin
DM.ADOCo.Connected:=false;
DM.ADOCo.ConnectionString:='';
if MainForm.DATACS='' then
begin
ShowMessage('请先配置服务器!');
Exit;
end;
if Application.MessageBox('是否确认传输该收银机数据?', '提示',
MB_ICONQUESTION + MB_YESNO + MB_DEFBUTTON2) = IDYES then
DM.ADOCo.ConnectionString:=MainForm.DATACS;
DM.ADOCo.Connected:=True;
DATACS_ADOQ.Connection:=DM.ADOCo;
with DATACS_ADOQ do
begin
Close;
SQL.Clear;
SQL.Add('SELECT TOP 10 * FROM SALE');
Open;
end;
DM.SALE_ADOQ.First;
while not DM.SALE_ADOQ.Eof do
begin
with DATACS_ADOQ do
begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM SALE WHERE ITEM_CARNO='''+DM.SALE_ADOQ.FieldByname('ITEM_CARNO').AsString+''' AND ITEM_BZ='''+DM.SALE_ADOQ.FieldByname('ITEM_BZ').AsString+''' AND ITEM_DATE='''+DM.SALE_ADOQ.FieldByname('ITEM_DATE').AsString+''' AND ITEM_LSNO='''+DM.SALE_ADOQ.FieldBYNAME('ITEM_LSNO').AsString+''' AND ITEM_NO='''+DM.SALE_ADOQ.FieldBYNAME('ITEM_NO').AsString+'''');
Open;
end;
if DATACS_ADOQ.RecordCount>0 then
begin
ShowMessage('该收银机销售数据已经传输,不能再次传输!');
Exit;
end ;
{ else
begin
Try
csform:=Tcsform.Create(application);
csform.Show;
if DM.ADOC.InTransaction then DM.ADOC.RollbackTrans;
DM.ADOC.BeginTrans;
begin
DATACS_ADOQ.Append;
DATACS_ADOQ.FieldByName('ITEM_CARNO').AsString:=DM.SALE_ADOQ.FieldByName('ITEM_CARNO').AsString;
DATACS_ADOQ.FieldByName('ITEM_BZ').AsString:=DM.SALE_ADOQ.FieldByName('ITEM_BZ').AsString;
DATACS_ADOQ.FieldByName('ITEM_SJDM').AsString:=DM.SALE_ADOQ.FieldByName('ITEM_SJDM').AsString;
DATACS_ADOQ.FieldByName('ITEM_CSJNO').AsString:=DM.SALE_ADOQ.FieldByName('ITEM_CSJNO').AsString;
DATACS_ADOQ.FieldByName('ITEM_LSNO').AsString:=DM.SALE_ADOQ.FieldByName('ITEM_LSNO').AsString;
DATACS_ADOQ.FieldByName('ITEM_JYNUM').ASinteger:=DM.SALE_ADOQ.FieldByName('ITEM_JYNUM').AsInteger;
DATACS_ADOQ.FieldByName('ITEM_NO').AsString:=DM.SALE_ADOQ.FieldByName('ITEM_NO').AsString;
DATACS_ADOQ.FieldByName('ITEM_PRICE').AsCurrency:=DM.SALE_ADOQ.FieldByName('ITEM_PRICE').AsCurrency;
DATACS_ADOQ.FieldByName('ITEM_NUM').AsInteger:=DM.SALE_ADOQ.FieldByName('ITEM_NUM').AsInteger;
DATACS_ADOQ.FieldByName('ITEM_MON').AsCurrency:=DM.SALE_ADOQ.FieldByName('ITEM_MON').AsCurrency;
DATACS_ADOQ.FieldByName('ITEM_TIME').AsDateTime:=DM.SALE_ADOQ.FieldByName('ITEM_TIME').AsDateTime;
DATACS_ADOQ.FieldByName('ITEM_MEN').AsString:=DM.SALE_ADOQ.FieldByName('ITEM_MEN').AsString;
DATACS_ADOQ.FieldByName('ITEM_MARKS').AsString:=DM.SALE_ADOQ.FieldByName('ITEM_MARKS').AsString;
DATACS_ADOQ.FieldByName('ITEM_BS').AsString:=DM.SALE_ADOQ.FieldByName('ITEM_BS').AsString;
DATACS_ADOQ.FieldByName('ITEM_DATE').AsDateTime:=DM.SALE_ADOQ.FieldByName('ITEM_DATE').AsDateTime;
DATACS_ADOQ.Post;
end;
DM.ADOC.CommitTrans;
csform.Close;
Except
DM.ADOC.RollbackTrans;
end;
end; }
DM.SALE_ADOQ.Next;
end;
ShowMessage('数据传输成功!');
end;
procedure TSALESM_Form.Button1Click(Sender: TObject);
begin
DBGridEh3.SendToBack;
end;
procedure TSALESM_Form.Button2Click(Sender: TObject);
begin
DBGridEh3.BringToFront;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -