📄 querylskccxunit.pas
字号:
unit QuerylskccxUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, QueryBassUnit, DB, DBTables, StdCtrls, ComCtrls, Buttons, Grids,
DBGrids, ExtCtrls;
type
TQuerylskccxForm = class(TQueryBassForm)
Query_add: TQuery;
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure CB_DepotChange(Sender: TObject);
procedure SB_queryClick(Sender: TObject);
function User_readdata: boolean;
procedure FormPaint(Sender: TObject);
procedure SB_printClick(Sender: TObject);
private
B_create: boolean;
{ Private declarations }
public
{ Public declarations }
end;
var
QuerylskccxForm: TQuerylskccxForm;
implementation
uses FunctionUnit, MainUnit, PrograssUnit, PrintlskcUnit, PrintBassUnit;
{$R *.dfm}
procedure TQuerylskccxForm.FormCreate(Sender: TObject);
var
B_find: Boolean;
I_temp: integer;
begin
inherited;
self.Caption := '历史库存查询';
B_create := true;
query_add.DatabaseName := 'CPXSGL';
with query_temp do
begin
close;
sql.Clear;
sql.Text := 'select name from depot';
open;
CB_depot.Items.Clear;
CB_depot.Style := csDropDownList;
CB_depot.Items.add('所有');
while not eof do
begin
CB_depot.Items.add(fieldbyname('name').asstring);
next;
end;
close;
sql.Clear;
sql.text := 'select * from goods order by name';
open;
CB_goods.Items.Clear;
CB_goods.Style := csDropDownList;
CB_goods.Items.add('所有');
while not eof do
begin
B_find := false;
for I_temp := 0 to CB_goods.items.Count - 1 do
begin
if CB_goods.Items[I_temp] = fieldbyname('name').asstring then
B_find := true; //找到相同名称
end;
if not B_find then //没有找到时增加
CB_goods.Items.add(fieldbyname('name').asstring);
next;
end;
close;
end;
end;
procedure TQuerylskccxForm.FormShow(Sender: TObject);
begin
inherited;
if User_readdata then
begin
B_create := true;
SB_query.Click;
end
else
B_create := false;
end;
procedure TQuerylskccxForm.CB_DepotChange(Sender: TObject);
begin
inherited;
query_data.Close;
sb_query.Enabled := true;
end;
procedure TQuerylskccxForm.SB_queryClick(Sender: TObject);
var
S_depotname, S_goodsname, S_date: string;
begin
inherited;
if not Checkrights(USERRIGHTS, '查看') then
begin
messagedlg(Errormsg0006 + '0007', mterror, [mbok], 0);
exit;
end;
S_depotname := cb_depot.Text;
S_goodsname := cb_goods.Text;
S_date := formatdatetime('yyyy-mm-dd', DTP_begin.Date);
if (S_depotname = '') or (S_depotname = '所有') then
S_depotname := '%';
if (S_goodsname = '') or (S_goodsname = '所有') then
S_goodsname := '%';
with query_data do
begin
close;
sql.Clear;
sql.Text := 'SELECT Depot.NAME depotname, goods.NAME goodsname, goods.TYPE, SUM( JXCrecord.NUMBER ) number,'
+ ' goods.UNIT, 0 price FROM JXCrecord'
+ ' INNER JOIN Depot ON (JXCrecord.DEPOTID = Depot.ID)'
+ ' INNER JOIN goods ON (JXCrecord.GOODSID = goods.ID)'
+ ' where depot.name like "' + S_depotname + '" and goods.name like "'
+ S_goodsname + '" and JXCrecord.mydate <= "' + S_date + '"'
+ ' GROUP BY Depot.NAME, goods.NAME, goods.TYPE, goods.UNIT';
try
open;
except
messagedlg(Errormsg0001 + '0027', mtError, [mbok], 0);
close;
end;
end;
end;
function TQuerylskccxForm.User_readdata: boolean;
begin
application.CreateForm(TPrograssForm, PrograssForm);
PrograssForm.P_message.Caption := '系统正在处理历史数据,请稍候……';
PrograssForm.FormStyle := fsStayOnTop;
PrograssForm.show;
PrograssForm.Update;
result := true;
with query_temp do
begin
close;
sql.Clear;
sql.text := 'delete from JXCrecord';
try
execsql;
except
messagedlg(Errormsg0005 + '0027', mtError, [mbok], 0);
close;
PrograssForm.Free;
result := false;
exit;
end;
//读入进货明细
close;
sql.Clear;
sql.Text := 'SELECT * from Stockrecord';
try
open;
except
messagedlg(Errormsg0001 + '0020', mtError, [mbok], 0);
close;
PrograssForm.Free;
result := false;
exit;
end;
//写入进货明细
first;
while not eof do
begin
with query_add do
begin
close;
sql.Clear;
sql.Text := 'insert into JXCrecord (depotid,mydate,jxc,goodsid,number,price,PEOPLEID,memo)' +
' values ("' + query_temp.fieldbyname('depotid').AsString + '","'
+ query_temp.fieldbyname('mydate').AsString + '","'
+ '进货' + '","' + query_temp.fieldbyname('goodsid').AsString
+ '",' + query_temp.fieldbyname('number').AsString + ',' + query_temp.fieldbyname('price').AsString
+ ',"","' + query_temp.fieldbyname('memo').AsString + '")';
try
execsql;
except
messagedlg(Errormsg0004 + '0027', mtError, [mbok], 0);
close;
PrograssForm.Free;
result := false;
exit;
end;
end;
next;
end;
//读入进货退货明细
close;
sql.Clear;
sql.text := 'SELECT * from Threcord';
try
open;
except
messagedlg(Errormsg0001 + '0025', mtError, [mbok], 0);
close;
PrograssForm.Free;
result := false;
exit;
end;
//写入进货退货明细
first;
while not eof do
begin
with query_add do
begin
close;
sql.Clear;
sql.Text := 'insert into JXCrecord (depotid,mydate,jxc,goodsid,number,price,PEOPLEID,memo)' +
' values ("' + query_temp.fieldbyname('depotid').AsString + '","'
+ query_temp.fieldbyname('mydate').AsString + '","'
+ '进货退货' + '","' + query_temp.fieldbyname('goodsid').AsString
+ '",-' + query_temp.fieldbyname('number').AsString + ',' + query_temp.fieldbyname('price').AsString
+ ',"","' + query_temp.fieldbyname('memo').AsString + '")';
try
execsql;
except
messagedlg(Errormsg0004 + '0027', mtError, [mbok], 0);
close;
PrograssForm.Free;
result := false;
exit;
end;
end;
next;
end;
//读入销售明细
close;
sql.Clear;
sql.text := 'SELECT * from Sellrecord';
try
open;
except
messagedlg(Errormsg0001 + '0018', mtError, [mbok], 0);
close;
PrograssForm.Free;
result := false;
exit;
end;
//写入销售明细
first;
while not eof do
begin
with query_add do
begin
close;
sql.Clear;
sql.Text := 'insert into JXCrecord (depotid,mydate,jxc,goodsid,number,price,PEOPLEID,memo)' +
' values ("' + query_temp.fieldbyname('depotid').AsString + '","'
+ query_temp.fieldbyname('mydate').AsString + '","'
+ '销售' + '","' + query_temp.fieldbyname('goodsid').AsString
+ '",-' + query_temp.fieldbyname('number').AsString + ',0,"'
+ query_temp.fieldbyname('PEOPLEID').AsString + '","' + query_temp.fieldbyname('memo').AsString + '")';
try
execsql;
except
messagedlg(Errormsg0004 + '0027', mtError, [mbok], 0);
close;
PrograssForm.Free;
result := false;
exit;
end;
end;
next;
end;
//读入销售退货明细
close;
sql.Clear;
sql.text := 'SELECT * from XSTHRECORD';
try
open;
except
messagedlg(Errormsg0001 + '0023', mtError, [mbok], 0);
close;
PrograssForm.Free;
result := false;
exit;
end;
//写入销售退货明细
first;
while not eof do
begin
with query_add do
begin
close;
sql.Clear;
sql.Text := 'insert into JXCrecord (depotid,mydate,jxc,goodsid,number,price,PEOPLEID,memo)' +
'values ("' + query_temp.fieldbyname('depotid').AsString + '","'
+ query_temp.fieldbyname('mydate').AsString + '","'
+ '销售退货' + '","' + query_temp.fieldbyname('goodsid').AsString
+ '",' + query_temp.fieldbyname('number').AsString + ',0,"'
+ query_temp.fieldbyname('peopleid').AsString + '","' + query_temp.fieldbyname('memo').AsString + '")';
try
execsql;
except
messagedlg(Errormsg0004 + '0027', mtError, [mbok], 0);
close;
PrograssForm.Free;
result := false;
exit;
end;
end;
next;
end;
end;
cb_depotchange(self);
PrograssForm.Free;
end;
procedure TQuerylskccxForm.FormPaint(Sender: TObject);
begin
if not B_create then self.Close; //数据查询不成功
end;
procedure TQuerylskccxForm.SB_printClick(Sender: TObject);
begin
inherited;
try
Application.CreateForm(TPrintlskcForm, PrintlskcForm);
Application.CreateForm(TprintBassForm, printBassForm);
except
messagedlg(Errormsg0011, mtError, [mbok], 0);
exit;
end;
PrintlskcForm.QuickRep_lskccx.preview;
PrintlskcForm.Free;
printBassForm.Free;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -