📄 cj_main.pas
字号:
except
Screen.Cursor := crDefault;
ShowMessage('无法清空采集退货库内有关机器' + IntToStr(MachineNo) + '收据号'
+ IntToStr(SjNo) + '的数据,系统无法继续工作!');
Exit;
end;
end;
Result := True;
end;
{--------------------删除采集交易表中当前机器号和交易号的记录-----------}
function TFrmCJ_Main.EmptyCurrentJyfs(MachineNo, SjNo: integer; Date1, Date2:
TDate): Boolean;
begin
Result := False;
with FrmCJ_DataModule.ADOQuery2 do
begin
Close;
Sql.Clear;
Sql.Add('Delete');
Sql.Add('From SCSJ_DJYFS');
Sql.Add('Where 设备编码=' + IntToStr(MachineNo));
Sql.Add('And 收据号=' + IntToStr(SjNo));
Sql.Add('And Convert(char(10),日期,20)>=''' + DateToStr(Date1) + '''');
Sql.Add('And Convert(char(10),日期,20)<=''' + DateToStr(Date2) + '''');
try
ExecSql;
except
Screen.Cursor := crDefault;
ShowMessage('无法清空采集交易库内有关机器' + IntToStr(MachineNo) + '收据号'
+ IntToStr(SjNo) + '的数据,系统无法继续工作!');
Exit;
end;
end;
Result := True;
end;
{--------------向数据库中插入每一笔交易数据--------------------------------}
function TFrmCJ_Main.InsertRecord(jlh: integer): Boolean;
var
i: integer;
scxx: TScxx;
aSpxx: TSpxx;
zkl, zke, yxse, sxse: double;
{商品价格,商品数量,折扣率,折扣额,原销售额,实销售额}
begin
Result := False;
for i := 0 to TScxx(RecordList.Objects[jlh]).Spxx.Count - 1 do
begin
with FrmCJ_DataModule.ADOQuery2 do
begin
scxx := TScxx(RecordList.Objects[jlh]);
aSpxx := TSpxx(TScxx(RecordList.Objects[jlh]).Spxx.Objects[i]);
zke := 0;
zkl := 0;
yxse := aSpxx.sl * aSpxx.je;
sxse := aSpxx.sl * aSpxx.je;
Close;
Sql.Clear;
Sql.Add('Insert into SCSJ_DSYJXSXX1');
Sql.Add('(设备编码,日期,星期,收据号,商品号,商品名称,交易名称,商品价格,商品数量,是否打折, 折扣率,服务员姓名,收款员姓名,折扣额,原销售额,实销售额)');
Sql.Add('values (');
Sql.Add(inttostr(Scxx.jqh) + ',''' + (Scxx.rq) + ''',''' +
floattostr(Scxx.xq) + ''',' + inttostr(Scxx.sjh) + ',' +
inttostr(ASpxx.spdl));
Sql.Add(',''' + ASpxx.spmc + ''',''' + Scxx.jyfsm + ''',' +
floattostr(aSpxx.je) + ',' + floattostr(aSpxx.sl) + ',' +
inttostr(Scxx.zkflag) + ',' + floattostr(zkl) + ',''' + scxx.fwym +
''','''
+ scxx.skym + '''');
Sql.Add(',' + floattostr(zke) + ',' + floattostr(yxse) + ',' +
floattostr(sxse) + ')');
try
ExecSql;
except
Screen.Cursor := crDefault;
ShowMessage('向数据库中写入记录失败!');
Exit;
end;
end;
if TSpxx(TScxx(RecordList.Objects[jlh]).Spxx.Objects[i]).thflag then
if not InsertToTh(jlh, i) then
Exit;
end;
Result := True;
end;
{-----------------------向交易方式数据库中插入交易方式列表------------------}
function TFrmCJ_Main.InsertJyRecord(jlh: integer): Boolean;
var
i: integer;
scxx: TScxx;
aJyList: TJyfsList;
begin
Result := False;
for i := 0 to TScxx(RecordList.Objects[jlh]).JyfsList.Count - 1 do
with FrmCJ_DataModule.ADOQuery2 do
begin
scxx := TScxx(RecordList.Objects[jlh]);
aJyList := TJyfsList(TScxx(RecordList.Objects[jlh]).JyfsList.Objects[i]);
Close;
Sql.Clear;
Sql.Add('Insert into SCSJ_DJYFS');
Sql.Add('(设备编码,日期,星期,收据号,交易名称,交易金额,收款员姓名)');
Sql.Add('values (');
Sql.Add(inttostr(Scxx.jqh) + ',''' + (Scxx.rq) + ''',''' +
floattostr(Scxx.xq) + ''',' + inttostr(Scxx.sjh));
Sql.Add(',''' + aJyList.jymc + ''',' + FloatToStr(aJyList.jyje / 100) +
',''' + Trim(scxx.skym) + ''')');
try
ExecSql;
except
Screen.Cursor := crDefault;
ShowMessage('向数据库中写入记录失败!');
Exit;
end;
end;
Result := True;
end;
{-----------------------向退货数据库中插入退货记录----------------------}
function TFrmCJ_Main.InsertToTh(jlh, xh: integer): Boolean;
var
scxx: TScxx;
aSpxx: TSpxx;
spje: double; {商品价格,商品数量,商品金额}
begin
Result := False;
with FrmCJ_DataModule.ADOQuery2 do
begin
scxx := TScxx(RecordList.Objects[jlh]);
aSpxx := TSpxx(TScxx(RecordList.Objects[jlh]).Spxx.Objects[xh]);
spje := aSpxx.sl * aSpxx.je;
Close;
Sql.Clear;
Sql.Add('Insert into SCSJ_DTH');
Sql.Add('(设备编码,日期,星期,收据号,商品号,商品名称,商品价格,退货商品数量,退货商品金额,收款员姓名)');
Sql.Add('values (');
Sql.Add(inttostr(Scxx.jqh) + ',''' + (Scxx.rq) + ''',''' +
floattostr(Scxx.xq) + ''',' + inttostr(Scxx.sjh) + ',' +
inttostr(ASpxx.spdl));
Sql.Add(',''' + ASpxx.spmc + ''',' + floattostr(aSpxx.je) + ',' +
floattostr(aSpxx.sl) + ',' + FloatToStr(spje) + ',''' + Trim(scxx.skym) +
''')');
try
ExecSql;
except
Screen.Cursor := crDefault;
ShowMessage('向数据库中写入记录失败!');
Exit;
end;
end;
Result := True;
end;
{-------------------------将日志信息保存到数据库----------------------------}
procedure TFrmCJ_Main.ResultLog(Sj: TDate; Jqh: integer; StartRq, EndRq: TDate;
CjResult: string);
begin
with FrmCJ_DataModule.ADOQuery2 do
begin
Close;
Sql.Clear;
Sql.Add('Insert Into SCSJ_DLogFile');
Sql.Add('(采集时间,机器号,起始日期,终止日期,采集结果)');
Sql.Add('values (');
Sql.Add('''' + DateTimeToStr(Sj) + ''',' + IntToStr(Jqh) + ',''' +
DateToStr(StartRq) + ''',''' + DateToStr(EndRq) + ''',''' + CjResult +
''')');
try
ExecSql;
except
ShowMessage('向数据库中写入日志信息失败!');
Exit;
end;
end;
end;
{---------------------更新折扣率'折扣额'原销售额'实销售额------------------------}
function TFrmCJ_Main.UpdateZkxx(Date1, Date2: TDate; Lx, Jqhm: Integer):
Boolean;
var
jqh, sjh: string;
zkl, zke, yxse, sxse: Double; //折扣率,折扣额,原销售额,实销售额
spdm, zkflag, xh: integer;
rq: TDateTime;
begin
Result := False;
with FrmCJ_DataModule.ADOQuery2 do
begin
Close;
Sql.Clear;
Sql.Add('Select SCSJ_DSYJXSXX1.设备编码,SCSJ_DSYJXSXX1.日期,SCSJ_DSYJXSXX1.星期,');
Sql.Add('SCSJ_DSYJXSXX1.收据号,SCSJ_DSYJXSXX1.商品号,SCSJ_DSYJXSXX1.商品名称,');
Sql.Add('SCSJ_DSYJXSXX1.交易名称,SCSJ_DSYJXSXX1.IC卡号,SCSJ_DSYJXSXX1.商品价格,');
Sql.Add('SCSJ_DSYJXSXX1.商品数量,SCSJ_DSYJXSXX1.是否打折,PZXX_DZKXX1.折扣率,');
Sql.Add('SCSJ_DSYJXSXX1.折扣额,SCSJ_DSYJXSXX1.原销售额,SCSJ_DSYJXSXX1.实销售额,');
Sql.Add('SCSJ_DSYJXSXX1.服务员姓名,SCSJ_DSYJXSXX1.收款员姓名,PZXX_DSPXX1.商品号,');
Sql.Add('PZXX_DSPLB1.商品类别名称,PZXX_DZKXX1.起始日期,PZXX_DZKXX1.终止日期,SCSJ_DSYJXSXX1.序号');
Sql.Add('From SCSJ_DSYJXSXX1,PZXX_DSPXX1,PZXX_DSPLB1,PZXX_DZKXX1');
Sql.Add('Where SCSJ_DSYJXSXX1.是否打折=1');
Sql.Add('AND SCSJ_DSYJXSXX1.商品号=PZXX_DSPXX1.商品号');
Sql.Add('AND PZXX_DSPXX1.商品类别号=(PZXX_DSPLB1.商品类别号-5001)');
Sql.Add('AND substring(PZXX_DZKXX1.选项2,7,2)=substring(PZXX_DSPLB1.选项2,7,2)');
Sql.Add('AND convert(char(10),SCSJ_DSYJXSXX1.日期,20)>=''' + DateToStr(Date1)
+ '''');
Sql.Add('AND convert(char(10),SCSJ_DSYJXSXX1.日期,20)<=''' + DateToStr(Date2)
+ '''');
Sql.Add('AND 设备编码=' + IntTostr(jqhm));
Sql.Add('Order By SCSJ_DSYJXSXX1.商品号');
try
Open;
except
Screen.Cursor := crDefault;
ShowMessage('无法打开记录集');
Exit;
end;
if RecordCount = 0 then
begin
Result := True;
Exit;
end;
First;
while not Eof do
begin
if (FieldByName('日期').AsDateTime >= FieldByName('起始日期').AsDateTime)
and (FieldByName('日期').AsDateTime <=
FieldByName('终止日期').AsDateTime) then
begin
jqh := FieldByName('设备编码').AsString;
sjh := FieldByName('收据号').AsString;
spdm := FieldByName('商品号').AsInteger;
zkflag := FieldByName('是否打折').AsInteger;
rq := FieldByName('日期').AsDateTime;
zkl := FieldByName('折扣率').AsFloat / 10000;
zke := FieldByName('商品价格').AsFloat * FieldByName('商品数量').AsFloat
* zkl;
yxse := FieldByName('商品价格').AsFloat *
FieldByName('商品数量').AsFloat;
sxse := yxse - zke;
xh := FieldByName('序号').AsInteger;
with FrmCJ_DataModule.ADOQuery1 do
begin
Close;
Sql.Clear;
Sql.Add('Update SCSJ_DSYJXSXX1');
Sql.Add('Set 折扣率=' + FloatToStr(zkl) + ',折扣额=' + FloatToStr(zke)
+ ',原销售额=' + FloatToStr(yxse) + ',实销售额=' +
FloatToStr(sxse));
Sql.Add('Where 日期=''' + DateTimeToStr(rq) + '''And 设备编码=' + jqh
+
'And 收据号=' + sjh + 'And 商品号=' + IntToStr(spdm));
Sql.Add('And 是否打折=' + IntToStr(zkflag));
Sql.Add('And 序号=' + IntToStr(xh));
try
ExecSql;
except
Screen.Cursor := crDefault;
ShowMessage('更新折扣信息失败');
Exit;
end;
end;
end;
Next;
end;
end;
Result := True;
end;
procedure TFrmCJ_Main.Checkrq(Date1, Date2: TDate; rqxh, Recordcon: TStrings);
var
rq1, rq2: TDate;
i: integer;
FindFlag: Boolean;
begin
rq1 := StrToDate(DateToStr(Date1));
rq2 := StrToDate(DateToStr(Date2));
while rq1 <= rq2 do
begin
FindFlag := False;
for i := 0 to rqxh.count - 1 do
begin
if StrToDate(Copy(TScxx(Recordcon.Objects[StrToInt(rqxh[i])]).rq, 1, 10))
= rq1 then
begin
FindFlag := True;
break;
end
else
continue;
end;
if not FindFlag then
ShowMessage('文件中没有' + DateToStr(rq1) + '日数据,无法采集');
rq1 := rq1 + 1;
end;
end;
{---------------------- 清空选定日期的记录---------------------------------}
procedure TFrmCJ_Main.DeletePart(Jqh: integer; FromDate, ToDate: TDate);
begin
with FrmCJ_DataModule.ADOQuery2 do
begin
Close;
Sql.Clear;
Sql.Add('Delete');
Sql.Add('From SCSJ_DSYJXSXX1');
Sql.Add('Where Convert(char(10),日期,20)>=''' + DateToStr(FromDate) + '''');
Sql.Add(' And Convert(char(10),日期,20)<=''' + DateToStr(ToDate) + '''');
Sql.Add(' And 设备编码=''' + IntToStr(Jqh) + '''');
try
ExecSql;
except
Screen.Cursor := crDefault;
ShowMessage('无法清空库内日期' + DateToStr(FromDate) + '到' +
DateToStr(ToDate) + '的数据!');
Exit;
end;
end;
end;
{------------------------清空全部记录----------------------------}
procedure TFrmCJ_Main.DeleteAll;
begin
with FrmCJ_DataModule.ADOQuery2 do
begin
Close;
Sql.Clear;
Sql.Add('Delete');
Sql.Add('From SCSJ_DSYJXSXX1');
try
ExecSql;
except
Screen.Cursor := crDefault;
ShowMessage('无法清空库内全部数据!');
Exit;
end;
end;
end;
procedure TFrmCJ_Main.ShowResult(FromDate, ToDate: TDate; jqh, lx: integer);
var
jycount: integer;
spsl, zke, yxse, sxse: Double;
resultmsg: string;
begin
with FrmCJ_DataModule.ADOQuery2 do
begin
Close;
DisableControls;
Sql.Clear;
Sql.Add('Select Distinct(收据号)');
Sql.Add('From SCSJ_DSYJXSXX1');
Sql.Add('Where Convert(char(10),日期,20)>=''' + DateToStr(FromDate) + '''');
Sql.Add(' And Convert(char(10),日期,20)<=''' + DateToStr(ToDate) + '''');
Sql.Add(' And 设备编码=' + IntToStr(jqh));
try
Open;
except
ShowMessage('无法打开记录集');
Exit;
end;
if RecordCount = 0 then
begin
Screen.Cursor := crDefault;
ShowMessage('从' + DateToStr(FromDate) + '至' + DateToStr(ToDate) +
'的交易数为0');
Exit;
end;
jycount := RecordCount;
Sql.Clear;
Sql.Add('Select Sum(商品数量),Sum(折扣额),Sum(原销售额),Sum(实销售额)');
Sql.Add('From SCSJ_DSYJXSXX1');
Sql.Add('Where Convert(char(10),日期,20)>=''' + DateToStr(FromDate) + '''');
Sql.Add(' And Convert(char(10),日期,20)<=''' + DateToStr(ToDate) + '''');
Sql.Add(' And 设备编码=' + IntToStr(jqh));
try
Open;
except
Screen.Cursor := crDefault;
ShowMessage('无法打开记录集');
Exit;
end;
spsl := Fields[0].AsInteger;
zke := Fields[1].AsFloat;
yxse := Fields[2].AsFloat;
sxse := Fields[3].AsFloat;
resultmsg := resultmsg + IntToStr(jqh) + '号收银机' + #13 + #10;
resultmsg := resultmsg + '从' + DateToStr(FromDate) + '至' +
DateToStr(ToDate) + #13 +
#10;
resultmsg := resultmsg + '的交易数为' + IntToStr(jycount) + '笔' + #13 +
#10;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -