📄 caicangdan.pas
字号:
unit CaiCangDan;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls, Buttons, Grids, DBGrids, ExtCtrls,
ComCtrls, RpDefine, RpCon, RpConDS, Menus, Mask, DBCtrls;
type
TFrmCaiCangDan = class(TForm)
DataSource: TDataSource;
AddBtn: TBitBtn;
EdtBtn: TBitBtn;
DelBtn: TBitBtn;
SaveBtn: TBitBtn;
CancelBtn: TBitBtn;
ExtBtn: TBitBtn;
ADOQuery1: TADOQuery;
ADOQtmp: TADOQuery;
ADOQuery1log_id: TAutoIncField;
ADOQuery1ord_id: TStringField;
ADOQuery1bed_id: TIntegerField;
ADOQuery1zh_id: TIntegerField;
ADOQuery1size_name: TStringField;
ADOQuery1color: TStringField;
ADOQuery1num: TIntegerField;
Label2: TLabel;
DBEdit2: TDBEdit;
Label3: TLabel;
DBEdit3: TDBEdit;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
DBEdit6: TDBEdit;
SpeedButton1: TSpeedButton;
DBComboBox1: TDBComboBox;
DBComboBox2: TDBComboBox;
Label1: TLabel;
ComboBox1: TComboBox;
Bevel1: TBevel;
Label7: TLabel;
Label8: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Label9: TLabel;
Edit3: TEdit;
Bevel2: TBevel;
Panel1: TPanel;
DBGrid: TDBGrid;
Panel2: TPanel;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
Btnlocate: TBitBtn;
edt_ccNo: TEdit;
edt_zhNO: TEdit;
ComboBox_size: TComboBox;
procedure FormShow(Sender: TObject);
procedure SaveBtnClick(Sender: TObject);
procedure CancelBtnClick(Sender: TObject);
procedure EdtBtnClick(Sender: TObject);
procedure AddBtnClick(Sender: TObject);
procedure DelBtnClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure DataSourceStateChange(Sender: TObject);
procedure ADOQuery1AfterInsert(DataSet: TDataSet);
procedure ADOQuery1BeforePost(DataSet: TDataSet);
procedure SpeedButton1Click(Sender: TObject);
procedure ComboBox1KeyPress(Sender: TObject; var Key: Char);
procedure ComboBox1Change(Sender: TObject);
procedure ADOQuery1BeforeInsert(DataSet: TDataSet);
procedure BtnlocateClick(Sender: TObject);
private
{ Private declarations }
total_bed_id, total_zhi_id, total_num,
size_index, total_color:integer;
procedure change_control;
public
{ Public declarations }
end;
var
FrmCaiCangDan: TFrmCaiCangDan;
implementation
uses data,sharevar,sharefun, ColorSetup;
{$R *.dfm}
procedure tfrmcaicangdan.change_control;
begin
if (not(ADOQuery1.Active)) or (ADOQuery1.RecordCount<0) then
begin
edt_ccNo.ReadOnly:=true;
edt_ccno.ParentColor:=true;
edt_zhNO.ReadOnly:=true;
edt_zhno.ParentColor:=true;
combobox_size.ParentColor:=true;
ComboBox_size.Enabled:=false;
Btnlocate.Enabled:=false;
end;
if (ADOQuery1.Active) and (ADOQuery1.RecordCount>0) then
begin
edt_ccNo.ReadOnly:=false;
edt_ccno.ParentColor:=false;
edt_ccno.Color:=clwindow;
edt_zhNO.ReadOnly:=false;
edt_zhno.ParentColor:=false;
edt_zhno.Color:=clwindow;
ComboBox_size.Enabled:=true;
combobox_size.ParentColor:=false;
combobox_size.Color:=clwindow;
Btnlocate.Enabled:=true;
end
end;
procedure TFrmCaiCangDan.FormShow(Sender: TObject);
begin
//添加订单号
with ADOQtmp do
begin
close;sql.clear;
sql.add('select ord_id from order_msg order by ord_id');
open;
if recordcount =0 then
begin
MsgErr(handle,'当前无订单信息,请先定义!');
exit;
end;
first;
while not eof do
begin
ComboBox1.Items.Add(fieldvalues['ord_id']);
next;
end;
end;
//添加颜色
DBComboBox1.Clear;
with ADOQtmp do
begin
close;sql.clear;
sql.add('select color from color order by id');
open;
if recordcount =0 then
begin
MsgErr(handle,'当前无颜色信息,请先定义!');
exit;
end;
DBComboBox1.Items.Add(' ');
first;
while not eof do
begin
DBComboBox1.Items.Add(fieldvalues['color']);
next;
end;
end;
end;
procedure TFrmCaiCangDan.SaveBtnClick(Sender: TObject);
begin
if not ADOQuery1.Active then exit;
ADOQuery1.Post;
end;
procedure TFrmCaiCangDan.CancelBtnClick(Sender: TObject);
begin
if not ADOQuery1.Active then exit;
ADOQuery1.cancel;
end;
procedure TFrmCaiCangDan.EdtBtnClick(Sender: TObject);
begin
if not ADOQuery1.Active then exit; ADOQuery1.Edit;
DBEdit6.SetFocus;
end;
procedure TFrmCaiCangDan.AddBtnClick(Sender: TObject);
begin
if not ADOQuery1.Active then exit;
ADOQuery1.Append;
DBEdit2.SetFocus;
end;
procedure TFrmCaiCangDan.DelBtnClick(Sender: TObject);
begin
if not ADOQuery1.Active then exit;
if ADOQuery1.RecordCount = 0 then exit;
//判断当前物品类别在物品表中是否用到
if MsgQst(handle,'确定删除当前记录码?') =IDNO then exit;
try
ADOQuery1.Delete;
except
abort;
MsgErr(handle,'当前数据在相关连的表中用到,不能删除!');
end;
end;
procedure TFrmCaiCangDan.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action:=Cafree;
end;
procedure TFrmCaiCangDan.DataSourceStateChange(Sender: TObject);
begin
if (Sender as TDataSource).DataSet.State in [dsedit,dsinsert] then
Begin
AddBtn.Enabled :=False;
EdtBtn.Enabled :=False;
DelBtn.Enabled :=False;
CancelBtn.Enabled :=True;
SaveBtn.Enabled :=True;
ExtBtn.Enabled :=False;
DBEdit2.ReadOnly:=false;
DBEdit3.ReadOnly:=false;
DBComboBox2.ReadOnly:=false;
DBComboBox1.ReadOnly:=false;
DBEdit6.ReadOnly:=false;
DBGrid.Enabled:=false;
end;
if (Sender as TDataSource).DataSet.State in [dsedit] then
begin
DBEdit2.ReadOnly:=true;
DBEdit3.ReadOnly:=true;
DBComboBox2.ReadOnly:=true;
DBEdit2.ParentColor:=true;
DBEdit3.ParentColor:=true;
DBComboBox2.ParentColor:=true;
end;
if (Sender as TDataSource).DataSet.State in [dsinsert] then
begin
DBEdit2.ReadOnly:=false;
DBEdit3.ReadOnly:=false;
DBComboBox2.ReadOnly:=false;
DBEdit2.ParentColor:=false;
DBEdit3.ParentColor:=false;
DBComboBox2.ParentColor:=false;
DBEdit2.Color:=clwindow;
DBEdit3.Color:=clwindow;
DBComboBox2.Color:=clwindow;
end;
if (Sender as TDataSource).DataSet.State in [dsBrowse] then
Begin
AddBtn.Enabled :=True;
EdtBtn.Enabled :=True;
DelBtn.Enabled :=True;
CancelBtn.Enabled :=False;
SaveBtn.Enabled :=False;
ExtBtn.Enabled :=True;
DBEdit2.ReadOnly:=true;
DBEdit3.ReadOnly:=true;
DBComboBox2.ReadOnly:=true;
DBComboBox1.ReadOnly:=true;
DBEdit6.ReadOnly:=true;
DBGrid.Enabled:=true;
DBEdit2.ParentColor:=false;
DBEdit3.ParentColor:=false;
DBComboBox2.ParentColor:=false;
DBEdit2.Color:=clwindow;
DBEdit3.Color:=clwindow;
DBComboBox2.Color:=clwindow;
end;
end;
procedure TFrmCaiCangDan.ADOQuery1AfterInsert(DataSet: TDataSet);
begin
DataSet.FieldValues['ord_id']:=trim(ComboBox1.Text);
if total_bed_id>0 then
Dataset.FieldValues['bed_id']:=total_bed_id
else Dataset.FieldValues['bed_id']:=0;
if total_zhi_id>0 then
Dataset.FieldValues['zh_id']:=total_zhi_id
else Dataset.FieldValues['zh_id']:=0;
if not (size_index<0) then
begin
DBComboBox2.ItemIndex:=size_index;
DBComboBox2.Text:=DBComboBox2.Items.Names[size_index];
Dataset.FieldValues['size_name']:=DBComboBox2.text;
end
else Dataset.FieldValues['size_name']:='';
if not(total_color<0) then
begin
DBComboBox1.ItemIndex:=total_color;
DBComboBox1.Text:=DBComboBox1.Items.Names[total_color];
Dataset.FieldValues['color']:=DBComboBox1.text;
end
else Dataset.FieldValues['color']:='';
if total_num>0 then
Dataset.FieldValues['num']:=total_num
else Dataset.FieldValues['num']:=0;
end;
procedure TFrmCaiCangDan.ADOQuery1BeforePost(DataSet: TDataSet);
var tmpstr:string;
begin
if not (Dataset.State in[dsedit,dsinsert]) then exit;
if trim(Dataset.FieldValues['ord_id'])='' then
begin
MsgErr(handle,'订单批号不能为空!');ComboBox1.SetFocus;abort; exit;
end;
if Dataset.FieldValues['bed_id']<=0 then
begin
MsgErr(handle,'指定裁床号!');DBEdit2.SetFocus;abort; exit;
end;
if Dataset.FieldValues['zh_id']<=0 then
begin
MsgErr(handle,'指定扎号!');DBEdit3.SetFocus;abort; exit;
end;
if (Dataset.FieldValues['size_name'])='' then
begin
MsgOK(handle,'请指定规格!');DBComboBox2.SetFocus;abort; exit;
end;
if trim(Dataset.FieldValues['color'])='' then
begin
MsgOK(handle,'请指定布料颜色!'); DBComboBox1.SetFocus;abort; exit;
end;
if Dataset.FieldValues['num']<=0 then
begin
MsgOK(handle,'请指定件数!');DBEdit6.SetFocus;abort; exit;
end;
//不能存在1个以上完全相同的编号
tmpstr:=Dataset.FieldValues['ord_id']+'_';
tmpstr:=tmpstr+inttostr(Dataset.FieldValues['bed_id'])+'_';
tmpstr:=tmpstr+inttostr(Dataset.FieldValues['zh_id'])+'_';
tmpstr:=tmpstr+Dataset.FieldValues['size_name'];
if (Dataset.State in [dsinsert]) then
with ADOQtmp do
begin
close;sql.clear;
sql.add('select * from v_caicangdan where id=:v_id');
parameters.ParamValues['v_id']:=tmpstr;
open;
if recordcount>0 then
begin
MsgErr(handle,'当前裁床信息在当前数据内已存在,请重新定义!');
close; abort; exit;
end;
end;
//检测新增或修改的载床数量是否同先前相同
with adoqtmp do
begin
close;sql.clear;
sql.add('select * from v_caicangdan where ord_id=:v_ord_id and bed_id=:V_bed_id and zh_id=:V_zh_id');
parameters.ParamValues['v_ord_id']:=Dataset.FieldValues['ord_id'];
parameters.ParamValues['V_bed_id']:=Dataset.FieldValues['bed_id'];
parameters.ParamValues['V_zh_id']:=Dataset.FieldValues['zh_id'];
open;
if recordcount>0 then
begin
if Dataset.FieldValues['num']<>ADOQtmp.fieldvalues['num'] then
begin
if Msgqst(handle,'当前裁床信息的件数与已定义的相同裁床的件数不一致,还要继续吗?')=idno then
begin
CancelBtnClick(self);
close; abort; exit;
end;
end;
end;
end;
end;
procedure TFrmCaiCangDan.SpeedButton1Click(Sender: TObject);
begin
FrmColorSetup:=TFrmColorSetup.create(self);
FrmColorSetup.showmodal;
//添加颜色
DBComboBox1.Clear;
with ADOQtmp do
begin
close;sql.clear;
sql.add('select color from color order by id');
open;
if recordcount =0 then
begin
MsgErr(handle,'当前无颜色信息,请先定义!');
exit;
end;
DBComboBox1.Items.Add(' ');
first;
while not eof do
begin
DBComboBox1.Items.Add(fieldvalues['color']);
next;
end;
end;
end;
procedure TFrmCaiCangDan.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
if trim(ComboBox1.Text)='' then exit;
if key<>chr(13) then exit;
ADOQuery1.Close;
with ADOQtmp do
begin
close;sql.clear;
sql.add('select ord_id,costume_name,cust_name,clo_name from order_msg,customer,clothing where order_msg.cust_id=customer.cust_id and');
sql.add(' order_msg.clo_id=clothing.clo_id and ord_id=:v_ord_id');
Parameters.ParamValues['v_ord_id']:=ComboBox1.Text;
open;
if recordcount =0 then
begin
MsgErr(handle,'当前不存在该订单批号,请重新选择!');
change_control; exit;
end;
edit1.Text:=fieldvalues['cust_name'];
edit2.Text:=fieldvalues['costume_name'];
edit3.Text:=fieldvalues['clo_name'];
end;
with adoqtmp do
begin
close;sql.clear;
sql.add('select * from sequence_price where ord_id=:v_ord_id');
Parameters.ParamValues['v_ord_id']:=ComboBox1.Text;
open;
if recordcount=0 then
begin
MsgErr(handle,'当前订单没有定义工序,请先定义!');
close;
change_control; exit;
end;
end;
with ADOQuery1 do
begin
close;sql.clear;
sql.Add('select * from caicangdan where ord_id = :v_ord_id');
Parameters.ParamValues['v_ord_id']:=ComboBox1.Text;
try
ADOQuery1.open;
except
MsgErr(handle,'打开数据库表失败[caicangdan]!');
change_control; exit;
end;
end;
ADOQuery1.Last;
change_control;
end;
procedure TFrmCaiCangDan.ComboBox1Change(Sender: TObject);
begin
ComboBox1.Text:=trim(ComboBox1.Text);
Edit1.Clear; edit2.Clear; edit3.Clear;
end;
//在新增得到对应的已存在的裁床信息
procedure TFrmCaiCangDan.ADOQuery1BeforeInsert(DataSet: TDataSet);
begin
with dataset do
begin
if dataset.RecordCount=0 then exit;
total_bed_id:=fieldvalues['bed_id'];
total_zhi_id:=fieldvalues['zh_id'];
total_num:=fieldvalues['num'];
if DBComboBox2.ItemIndex<5 then
size_index:=DBComboBox2.ItemIndex+1;
total_color:=DBComboBox1.ItemIndex;
end;
end;
procedure TFrmCaiCangDan.BtnlocateClick(Sender: TObject);
var
ccno, zhno:integer;
size_name:string;
begin
if not ADOQuery1.Active then exit;
if ADOQuery1.RecordCount=0 then exit;
if trim(edt_ccNo.Text)='' then
begin
Msgok(handle,'请输入裁床号!');
edt_ccno.SetFocus; exit;
end;
try
ccno:=strtoint(trim(edt_ccNo.Text));
except
MsgERR(handle,'请输入正确的裁床号!');
edt_ccno.SetFocus; exit;
end;
if trim(edt_zhno.Text)<>'' then
begin
try
zhno:=strtoint(trim(edt_zhNo.Text));
except
MsgERR(handle,'请输入正确的扎号!');
edt_zhno.SetFocus; exit;
end;
if trim(ComboBox_size.Text)='' then
begin
if not ADOQuery1.Locate('bed_id;zh_id', VarArrayOf([ccno,zhno]), [])
then msgok(handle,'没找到对应条件的裁床信息!');
abort; exit;
end;
end;
if trim(ComboBox_size.Text)<>'' then
begin
size_name:=trim(ComboBox_size.Text);
if not ADOQuery1.Locate('bed_id;zh_id;size_name', VarArrayOf([ccno,zhno,size_name]), [])
then msgok(handle,'没找到对应条件的裁床信息!');
abort; exit;
end;
if not ADOQuery1.Locate('bed_id', ccno, []) then msgok(handle,'没找到对应条件的裁床信息!');
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -