📄 unit_rubb_qryproccard.~pas
字号:
unit Unit_Rubb_QryProcCard;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, DBGrids, ExtCtrls, StdCtrls, Buttons, ComCtrls, Db, DBTables;
type
TForm_Rubb_QryProcCard = class(TForm)
Panel1: TPanel;
DBGrid1: TDBGrid;
BitBtn2: TBitBtn;
Qry_QryProcCard: TQuery;
DS_QryProcCard: TDataSource;
PageControl1: TPageControl;
TabSheet3: TTabSheet;
TabSheet4: TTabSheet;
DateTimePicker_from: TDateTimePicker;
DateTimePicker_to: TDateTimePicker;
RadioGroup1: TRadioGroup;
Edit_IgdCode: TEdit;
Edit_Source: TEdit;
Edit_Bat: TEdit;
BitBtn1: TBitBtn;
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
BitBtn5: TBitBtn;
Panel5: TPanel;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
Qry_Exe: TQuery;
Query3: TQuery;
Query2: TQuery;
Table1: TTable;
procedure BitBtn1Click(Sender: TObject);
procedure RadioGroup1Click(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure Qry_QryProcCardAfterScroll(DataSet: TDataSet);
procedure FormCreate(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure DBGrid1CellClick(Column: TColumn);
private
{ Private declarations }
public
{ Public declarations }
procedure zdyQueryScroll();
end;
var
Form_Rubb_QryProcCard: TForm_Rubb_QryProcCard;
sp:integer;
implementation
uses Unit_Rubb_ProcCard, Unit_Rubb_Main, UnitDM;
{$R *.DFM}
procedure TForm_Rubb_QryProcCard.zdyQueryScroll();
begin
Form_Rubb_Main.StatusBar1.Panels[1].Text:=format('共找到 %d 张工艺卡, 您现在浏览的是第 %d 张。',[Qry_QryProcCard.recordcount, Qry_QryProcCard.recno]);
with form_rubb_main.Qry_MaterCard do
begin
close;
sql.Clear;
sql.Add('select * from 炼胶用料单 where 主表标识号 = :v_mid ');
parambyname('v_mid').asinteger:=Qry_QryProcCard.fieldbyname('标识号').asinteger;
open;
// if recordcount = 0 then
// form_rubb_main.Qry_MaterCard.close;
end; //with
end;
procedure TForm_Rubb_QryProcCard.BitBtn1Click(Sender: TObject);
var
Mod_date:Tdate;
begin
Mod_date:=DateTimePicker_From.date;
Mod_date:=Mod_date-1;
if DateTimePicker_from.date > DateTimePicker_to.date then
begin
showmessage('开始日期大于结束日期!'+#13+#13+'请重新输入!');
exit;
end; //if
with Qry_QryProcCard do
begin
close;
sql.Clear;
sql.Add('select * from 炼胶工艺卡 ');
sql.Add('where 混炼日期 between :v_from and :v_to order by 编号 ');
parambyname('v_from').asdatetime:=Mod_date;
parambyname('v_to').asdatetime:=DateTimePicker_to.date;
open;
if recordcount = 0 then
showmessage('没有找到符合条件的工艺卡!');
end; //with
//激活从表
Form_Rubb_Main.Tab_RepCard.open;
end;
procedure TForm_Rubb_QryProcCard.RadioGroup1Click(Sender: TObject);
begin
case RadioGroup1.ItemIndex of
0:
begin
Edit_IgdCode.Enabled:=true;
Edit_Source.Enabled:=false;
Edit_Bat.Enabled:=false;
Edit_IgdCode.Color:=clwindow;
Edit_Source.Color:=clbtnface;
Edit_Bat.Color:=clbtnface;
Edit_Source.Text:='';
Edit_Bat.Text:='';
end;
1:
begin
Edit_IgdCode.Enabled:=false;
Edit_Source.Enabled:=true;
Edit_Bat.Enabled:=false;
Edit_IgdCode.Color:=clbtnface;
Edit_Source.Color:=clwindow;
Edit_Bat.Color:=clbtnface;
Edit_IgdCode.Text:='';
Edit_Bat.Text:='';
end;
2:
begin
Edit_IgdCode.Enabled:=false;
Edit_Source.Enabled:=false;
Edit_Bat.Enabled:=true;
Edit_IgdCode.Color:=clbtnface;
Edit_Source.Color:=clbtnface;
Edit_Bat.Color:=clwindow;
Edit_IgdCode.Text:='';
Edit_Source.Text:='';
end;
end; //case
end;
procedure TForm_Rubb_QryProcCard.BitBtn5Click(Sender: TObject);
begin
with Qry_QryProcCard do
begin
close;
sql.Clear;
case RadioGroup1.ItemIndex of
0:
begin
sql.Add('select * from 炼胶工艺卡 where 配方编号 = :v_IgdCode ');
parambyname('v_IgdCode').asstring:=Edit_IgdCode.text;
end;
1:
begin
sql.Add('select * from 炼胶工艺卡 where 货源号 = :v_Source ');
parambyname('v_Source').asstring:=Edit_Source.text;
end;
2:
begin
sql.Add('select * from 炼胶工艺卡 where 生产批号 = :v_bat ');
parambyname('v_bat').asstring:=Edit_Bat.text;
end;
end; //case
open;
if recordcount = 0 then
showmessage('没有找到符合条件的工艺卡!');
end; //with
//激活从表
Form_Rubb_Main.Tab_RepCard.open;
end;
procedure TForm_Rubb_QryProcCard.BitBtn2Click(Sender: TObject);
begin
Form_Rubb_QryProcCard.close;
Form_Rubb_Main.If_ShowPic:=false;
Form_Rubb_Main.Panel1.Visible:=true;
Form_Rubb_Main.PageControl1.Visible:=true;
Form_Rubb_Main.Panel104.Visible:=true;
Form_Rubb_Main.DBNavigator1.Visible:=true;
Form_Rubb_Main.BitBtn1.Visible:=true;
Form_Rubb_Main.Index:=DBGrid1.Fields[0].asinteger;
Form_Rubb_Main.Index1:=DBGrid1.Fields[1].asinteger;
Form_Rubb_Main.Tab_RepCard.Open;
end;
procedure TForm_Rubb_QryProcCard.Qry_QryProcCardAfterScroll(
DataSet: TDataSet);
begin
zdyQueryScroll;
end;
procedure TForm_Rubb_QryProcCard.FormCreate(Sender: TObject);
begin
sp:=0;
DateTimePicker_From.date:=date - 30;
DateTimePicker_To.date:=date;
end;
procedure TForm_Rubb_QryProcCard.BitBtn4Click(Sender: TObject);
var
n_id:integer;
s_mater, s_OutCardNum :string;
f_per:real;
begin
if not Form_Rubb_QryProcCard.Qry_QryProcCard.Active then
begin
showmessage('请先查询并调出工艺卡!');
exit;
end; // if
if sp=0 then
begin
showmessage('请选择要删除的工艺卡!');
exit;
end; // if
if messagedlg('确要删除当前的工艺卡及相关的报告单和用料单吗?',mtwarning,[mbyes,mbno],0) = mrno then
exit;
if messagedlg('是否同时要从原材料仓库中删除'+#13+#13'该工艺卡对应的出库记录?',mtWarning,[mbYes,mbNo],0) = mrYes then
begin
with Query2 do
begin
close;
sql.Clear;
sql.add('select * from 炼胶用料单 where 主表标识号 = :v_id');
parambyname('v_id').asinteger:=Form_Rubb_QryProcCard.Qry_QryProcCard.fieldbyname('标识号').asinteger;
open;
if recordcount=0 then
begin
//showmessage('无记录可删除!');
with Qry_Exe do
begin
close;
sql.Clear;
sql.Add('delete from 炼胶工艺卡 where 标识号 = :v_id ');
parambyname('v_id').asinteger:=Form_Rubb_QryProcCard.Qry_QryProcCard.fieldbyname('标识号').asinteger;
execsql;
close;
sql.Clear;
sql.Add('delete from 炼胶用料单 where 主表标识号 = :v_id ');
parambyname('v_id').asinteger:=Form_Rubb_QryProcCard.Qry_QryProcCard.fieldbyname('标识号').asinteger;
execsql;
close;
sql.Clear;
sql.Add('delete from 炼胶指标报告单 where 标识号 = :v_id ');
parambyname('v_id').asinteger:=Form_Rubb_QryProcCard.Qry_QryProcCard.fieldbyname('标识号').asinteger;
execsql;
end; //with
with table1 do
begin
open;
first;
while not eof do
begin
if fieldbyname('编号').asinteger>sp then
begin
edit;
fieldbyname('编号').asinteger:=fieldbyname('编号').asinteger-1;
post;
sp:=sp+1;
end;
next;
end;
end;
sp:=0;
table1.Close;
Form_Rubb_QryProcCard.Qry_QryProcCard.close;
Form_Rubb_Main.Qry_MaterCard.close;
showmessage('已删除当前工艺卡!');
exit;
end;
//判断日期是否小于等于结账日期
if fieldbyname('riqi').asdatetime <=dm.zdyGetmaterCheckDate then //d_LimDate then
begin
showmessage('不允许删除结账日期之前的记录!'+#13+#13+'上次结帐日期是:'+datetostr(dm.zdyGetmaterCheckDate));
perform(WM_NEXTDLGCTL,0,0);
exit;
end;
first;
while not eof do
begin
Query3.close;
Query3.sql.Clear;
Query3.sql.add('select * from 原材料台帐 where 日期 = :vd and 出库数量=:nu and 单价=:v_Per and 领料单号=:v_out and 材料名称=:v_mater');
Query3.parambyname('vd').asdatetime:=Query2.fieldbyname('riqi').asdatetime;
Query3.parambyname('v_mater').asstring:=Query2.fieldbyname('材料名称').asstring;
Query3.parambyname('v_Out').asstring:=Query2.fieldbyname('领料单号').asstring;
Query3.parambyname('nu').asfloat:=Query2.fieldbyname('用料数量').asfloat;
Query3.parambyname('v_Per').asfloat:=Query2.fieldbyname('单价').asfloat;
Query3.open;
// showmessage(Query3.fieldbyname('材料名称').asstring);
//为刷新表格记录数据
s_mater:=Query3.fieldbyname('材料名称').asstring;
s_OutCardNum:=Query3.fieldbyname('领料单号').asstring;
f_per:=Query3.fieldbyname('单价').asfloat;
// showmessage(datetostr(Query2.fieldbyname('riqi').asdatetime));
//修改该记录日期以后的相关记录库存
with Qry_exe do
begin
close;
sql.Clear;
sql.Add('update 原材料台帐 set 库存 = (库存*1000 + :v_Rewt)/1000 ');
sql.Add('where 库存 < :v_stock and 材料名称 = :v_mater and 领料单号 = :v_outCardNum and 单价 = :v_Per ');
parambyname('v_stock').asfloat:=Query3.fieldbyname('库存').asfloat;
parambyname('v_mater').asstring:=Query3.fieldbyname('材料名称').asstring;
parambyname('v_OutCardNum').asstring:=Query3.fieldbyname('领料单号').asstring;
parambyname('v_Rewt').asfloat:=Query3.fieldbyname('出库数量').asfloat*1000;
parambyname('v_Per').asfloat:=Query3.fieldbyname('单价').asfloat;
execsql;
end; //with
//修改相关入库记录 剩余库存
with Qry_exe do
begin
close;
sql.Clear;
sql.Add('update 原材料台帐 set 剩余库存 = (剩余库存*1000 + :v_Rewt)/1000 ');
sql.Add('where 出入标识 = :v_IfOut and 材料名称 = :v_mater and 领料单号 = :v_outCardNum and 单价 = :v_Per');
parambyname('v_Rewt').asfloat:=Query3.fieldbyname('出库数量').asfloat*1000;
parambyname('v_IfOut').asboolean:=false;
parambyname('v_mater').asstring:=Query3.fieldbyname('材料名称').asstring;
parambyname('v_OutCardNum').asstring:=Query3.fieldbyname('领料单号').asstring;
parambyname('v_Per').asfloat:=Query3.fieldbyname('单价').asfloat;
execsql;
end; //with
//删除该记录
with Qry_exe do
begin
close;
sql.Clear;
sql.Add('delete from 原材料台帐 where 标识号 = :v_id ');
parambyname('v_id').asinteger:=Query3.fieldbyname('标识号').asinteger;
execsql;
end; //with
//修改最后领料标识的位置 先全部False 在最后一个True
with Qry_exe do
begin
close;
sql.Clear;
sql.Add('update 原材料台帐 set 最后领料标识 = :v_LastOutCardFlag');
sql.Add('where 材料名称 = :v_mater and 领料单号 = :v_outCardNum and 单价 = :v_per ');
parambyname('v_LastOutCardFlag').asboolean:=false;
parambyname('v_mater').asstring:=Query3.fieldbyname('材料名称').asstring;
parambyname('v_OutCardNum').asstring:=Query3.fieldbyname('领料单号').asstring;
parambyname('v_Per').asfloat:=Query3.fieldbyname('单价').asfloat;
execsql;
close;
sql.Clear;
sql.Add('select * from 原材料台帐 ');
sql.Add('where 材料名称 = :v_mater and 领料单号 = :v_outCardNum and 单价 = :v_per ');
sql.Add('order by 库存 ');
parambyname('v_mater').asstring:=Query3.fieldbyname('材料名称').asstring;
parambyname('v_OutCardNum').asstring:=Query3.fieldbyname('领料单号').asstring;
parambyname('v_Per').asfloat:=Query3.fieldbyname('单价').asfloat;
open;
n_id:=fieldbyname('标识号').asinteger;
close;
sql.Clear;
sql.Add('update 原材料台帐 set 最后领料标识 = :v_LastOutCardFlag ');
sql.Add('where 标识号 = :v_id');
parambyname('v_LastOutCardFlag').asboolean:=true;
parambyname('v_id').asinteger:=n_id;
execsql;
end; //with
next;
end;
end;
end;
with Qry_Exe do
begin
close;
sql.Clear;
sql.Add('delete from 炼胶工艺卡 where 标识号 = :v_id ');
parambyname('v_id').asinteger:=Form_Rubb_QryProcCard.Qry_QryProcCard.fieldbyname('标识号').asinteger;
execsql;
close;
sql.Clear;
sql.Add('delete from 炼胶用料单 where 主表标识号 = :v_id ');
parambyname('v_id').asinteger:=Form_Rubb_QryProcCard.Qry_QryProcCard.fieldbyname('标识号').asinteger;
execsql;
close;
sql.Clear;
sql.Add('delete from 炼胶指标报告单 where 标识号 = :v_id ');
parambyname('v_id').asinteger:=Form_Rubb_QryProcCard.Qry_QryProcCard.fieldbyname('标识号').asinteger;
execsql;
end; //with
with table1 do
begin
open;
first;
while not eof do
begin
if fieldbyname('编号').asinteger>sp then
begin
edit;
fieldbyname('编号').asinteger:=fieldbyname('编号').asinteger-1;
post;
sp:=sp+1;
end;
next;
end;
end;
sp:=0;
table1.Close;
Form_Rubb_QryProcCard.Qry_QryProcCard.close;
Form_Rubb_Main.Qry_MaterCard.close;
showmessage('已删除当前工艺卡!');
{
if not Form_Rubb_QryProcCard.Qry_QryProcCard.Active then
begin
showmessage('请先查询并调出工艺卡!');
exit;
end; // if
if messagedlg('要删除当前的工艺卡 以及 相关的报告单 和 用料单!',mtwarning,[mbyes,mbno],0) = mrno then
exit;
with Qry_Exe do
begin
close;
sql.Clear;
sql.Add('delete from 炼胶工艺卡 where 标识号 = :v_id ');
parambyname('v_id').asinteger:=Form_Rubb_QryProcCard.Qry_QryProcCard.fieldbyname('标识号').asinteger;
execsql;
close;
sql.Clear;
sql.Add('delete from 炼胶用料单 where 主表标识号 = :v_id ');
parambyname('v_id').asinteger:=Form_Rubb_QryProcCard.Qry_QryProcCard.fieldbyname('标识号').asinteger;
execsql;
close;
sql.Clear;
sql.Add('delete from 炼胶指标报告单 where 标识号 = :v_id ');
parambyname('v_id').asinteger:=Form_Rubb_QryProcCard.Qry_QryProcCard.fieldbyname('标识号').asinteger;
execsql;
end; //with
Form_Rubb_QryProcCard.Qry_QryProcCard.close;
Form_Rubb_QryProcCard.Qry_QryProcCard.open;
form_rubb_main.Qry_MaterCard.close;
showmessage('已删除当前工艺卡!');
}
end;
procedure TForm_Rubb_QryProcCard.DBGrid1CellClick(Column: TColumn);
begin
sp:=Qry_QryProcCard.fieldbyname('编号').asinteger;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -