📄 ord150_03.pas
字号:
unit Ord150_03;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Bas100_01, Menus, StdCtrls, dxExEdtr, dxCntner, dxTL, dxDBCtrl,
dxDBGrid, Buttons, DB, ADODB, dxDBTLCl, dxGrClms;
type
TOrd150_03Form = class(TBas100_01Form)
gbFrom: TGroupBox;
dxDBGrid1: TdxDBGrid;
lblFromCust: TLabel;
edtFromCust: TEdit;
edtFromCustName: TEdit;
sbFromCust: TSpeedButton;
gbTo: TGroupBox;
lblToCust: TLabel;
sbToCust: TSpeedButton;
edtToCust: TEdit;
edtToCustName: TEdit;
bbtnOk: TBitBtn;
bbtnExit: TBitBtn;
qryOrd150: TADOQuery;
qryOrd153: TADOQuery;
dsOrd153: TDataSource;
qryOrd153FSel: TSmallintField;
qryOrd153I150_002: TWideStringField;
qryOrd153I150_003: TWideStringField;
qryOrd153O153_003: TWideStringField;
qryOrd153O153_004: TWideStringField;
qryOrd153O153_005: TWideStringField;
qryOrd153O153_006: TDateTimeField;
dxDBGrid1I150_002: TdxDBGridColumn;
dxDBGrid1I150_003: TdxDBGridColumn;
dxDBGrid1O153_003: TdxDBGridColumn;
dxDBGrid1O153_004: TdxDBGridColumn;
dxDBGrid1O153_005: TdxDBGridColumn;
dxDBGrid1O153_006: TdxDBGridDateColumn;
dxDBGrid1FSel: TdxDBGridCheckColumn;
qryOrd150O150_001: TAutoIncField;
qryOrd150O150_002: TWideStringField;
qryOrd150O150_003: TWideStringField;
qryOrd153O153_002: TIntegerField;
qryQuery: TADOQuery;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure sbFromCustClick(Sender: TObject);
procedure edtFromCustExit(Sender: TObject);
procedure sbToCustClick(Sender: TObject);
procedure edtToCustExit(Sender: TObject);
procedure bbtnOkClick(Sender: TObject);
procedure bbtnExitClick(Sender: TObject);
procedure dxDBGrid1KeyPress(Sender: TObject; var Key: Char);
procedure dxDBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
procedure SetInterface;
procedure UpdateCustItem(AFromCust,AToCust:Integer;AItemNo,AMacID:String);
{ Private declarations }
public
procedure OpenData(ACustNo:Integer);
{ Public declarations }
end;
var
Ord150_03Form: TOrd150_03Form;
implementation
uses SYSDATA, CommFun, HwSelData;
{$R *.dfm}
procedure TOrd150_03Form.OpenData(ACustNo:Integer);
begin
qryOrd153.Close;
qryOrd153.SQL.Clear;
qryOrd153.SQL.Add('select O153_012 as FSel,I150_002,I150_003,O153_002,O153_003,O153_004,O153_005,O153_006');
qryOrd153.SQL.Add('from ORD153,INV150');
qryOrd153.SQL.Add('where O153_002=I150_001');
qryOrd153.SQL.Add(' and O153_001='+IntToStr(ACustNo));
qryOrd153.SQL.Add('order by I150_002');
qryOrd153.Open;
qryOrd150.Locate('O150_001',ACustNo,[]);
edtFromCust.Text:=qryOrd150.FieldByName('O150_002').AsString;
edtFromCustName.Text:=qryOrd150.FieldByName('O150_003').AsString;
end;
procedure TOrd150_03Form.SetInterface;
begin
Caption:=GetDBString('ORD15004001'); //客户产品转移
lblFromCust.Caption:=GetDBString('ORD15004002'); //转出客户
lblToCust.Caption:=GetDBString('ORD15004003'); //转入客户
gbFrom.Caption:=GetDBString('ORD15004004'); //转出客户
gbTo.Caption:=GetDBString('ORD15004005'); //转入客户
bbtnOk.Caption:=GetDBString('ORD15004006'); //确定(&O)
bbtnExit.Caption:=GetDBString('ORD15004007'); //退出(&X)
qryOrd150O150_002.DisplayLabel:=GetDBString('ORD15004008'); //客户编号
qryOrd150O150_003.DisplayLabel:=GetDBString('ORD15004009'); //客户名称
qryOrd153FSel.DisplayLabel:=GetDBString('ORD15004010'); //选择
qryOrd153I150_002.DisplayLabel:=GetDBString('ORD15004011'); //产品编号
qryOrd153I150_003.DisplayLabel:=GetDBString('ORD15004012'); //产品名称
qryOrd153O153_003.DisplayLabel:=GetDBString('ORD15004013'); //机身编号
qryOrd153O153_004.DisplayLabel:=GetDBString('ORD15004014'); //控制器号
qryOrd153O153_005.DisplayLabel:=GetDBString('ORD15004015'); //系统软件
qryOrd153O153_006.DisplayLabel:=GetDBString('ORD15004016'); //安装日期
end;
procedure TOrd150_03Form.FormCreate(Sender: TObject);
begin
inherited;
SetInterface;
qryOrd150.Open;
end;
procedure TOrd150_03Form.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
qryOrd150.Close;
qryOrd153.Close;
end;
procedure TOrd150_03Form.sbFromCustClick(Sender: TObject);
begin
inherited;
//转出客户
if not edtFromCust.Focused then edtFromCust.SetFocus;
HwSelDataForm:=THwSelDataForm.Create(Application);
HwSelDataForm.OpenSelData(qryOrd150,nil);
if HwSelDataForm.ShowModal=1 then
begin
qryOrd153.Close;
qryOrd153.SQL.Clear;
qryOrd153.SQL.Add('select O153_012 as FSel,I150_002,I150_003,O153_002,O153_003,O153_004,O153_005,O153_006');
qryOrd153.SQL.Add('from ORD153,INV150');
qryOrd153.SQL.Add('where O153_002=I150_001');
qryOrd153.SQL.Add(' and O153_001='+qryOrd150.FieldByName('O150_001').AsString);
qryOrd153.SQL.Add('order by I150_002');
qryOrd153.Open;
edtFromCust.Text:=qryOrd150.FieldByName('O150_002').AsString;
edtFromCustName.Text:=qryOrd150.FieldByName('O150_003').AsString;
end;
end;
procedure TOrd150_03Form.edtFromCustExit(Sender: TObject);
begin
inherited;
//转出客户
if trim(edtFromCust.Text)='' then Exit;
if qryOrd150.Locate('O150_002',edtFromCust.Text,[]) then
begin
qryOrd153.Close;
qryOrd153.SQL.Clear;
qryOrd153.SQL.Add('select O153_012 as FSel,I150_002,I150_003,O153_002,O153_003,O153_004,O153_005,O153_006');
qryOrd153.SQL.Add('from ORD153,INV150');
qryOrd153.SQL.Add('where O153_002=I150_001');
qryOrd153.SQL.Add(' and O153_001='+qryOrd150.FieldByName('O150_001').AsString);
qryOrd153.SQL.Add('order by I150_002');
qryOrd153.Open;
edtFromCust.Text:=qryOrd150.FieldByName('O150_002').AsString;
edtFromCustName.Text:=qryOrd150.FieldByName('O150_003').AsString;
end else
begin
edtFromCust.Text:='';
edtFromCustName.Text:='';
ShowMsg('UMS10000598'); //无效的转出客户编号,请重新输入
edtFromCust.SetFocus;
Abort;
end;
end;
procedure TOrd150_03Form.sbToCustClick(Sender: TObject);
begin
inherited;
//转入客户
if not edtToCust.Focused then edtToCust.SetFocus;
HwSelDataForm:=THwSelDataForm.Create(Application);
HwSelDataForm.OpenSelData(qryOrd150,nil);
if HwSelDataForm.ShowModal=1 then
begin
edtToCust.Text:=qryOrd150.FieldByName('O150_002').AsString;
edtToCustName.Text:=qryOrd150.FieldByName('O150_003').AsString;
end;
end;
procedure TOrd150_03Form.edtToCustExit(Sender: TObject);
begin
inherited;
//转入客户
if trim(edtToCust.Text)='' then Exit;
if qryOrd150.Locate('O150_002',edtToCust.Text,[]) then
begin
edtToCust.Text:=qryOrd150.FieldByName('O150_002').AsString;
edtToCustName.Text:=qryOrd150.FieldByName('O150_003').AsString;
end else
begin
edtToCust.Text:='';
edtToCustName.Text:='';
ShowMsg('UMS10000599'); //无效的转入客户编号,请重新输入
edtToCust.SetFocus;
Abort;
end;
end;
procedure TOrd150_03Form.bbtnOkClick(Sender: TObject);
var
AFromCust,AToCust:Integer;
AItemNo,AMacID:String;
begin
inherited;
//确定
if trim(edtFromCust.Text)='' then
begin
ShowMsg('UMS10000600'); //转出客户编号不能为空
edtFromCust.SetFocus;
Abort;
end;
if not qryOrd150.Locate('O150_002',edtFromCust.Text,[]) then
begin
ShowMsg('UMS10000598'); //无效的转出客户编号,请重新输入
edtFromCust.SetFocus;
Abort;
end;
AFromCust:=qryOrd150.FieldByName('O150_001').AsInteger;
if trim(edtToCust.Text)='' then
begin
ShowMsg('UMS10000601'); //转出客户编号不能为空
edtToCust.SetFocus;
Abort;
end;
if not qryOrd150.Locate('O150_002',edtToCust.Text,[]) then
begin
ShowMsg('UMS10000599'); //无效的转出客户编号,请重新输入
edtToCust.SetFocus;
Abort;
end;
AToCust:=qryOrd150.FieldByName('O150_001').AsInteger;
if AFromCust=AToCust then
begin
ShowMsg('UMS10000602'); //转出转入客户编号不能相同
edtToCust.SetFocus;
Abort;
end;
qryOrd153.First;
if not qryOrd153.Locate('FSel',-1,[]) then
begin
ShowMsg('UMS10000603'); //必须选择至少一个要转移客户产品
dxDBGrid1.SetFocus;
Abort;
end;
//取得所有选择的产品电脑编号
Screen.Cursor:=crHourGlass;
qryOrd153.First;
while not qryOrd153.Eof do
begin
if qryOrd153.FieldByName('FSel').AsInteger=-1 then
begin
AItemNo:=qryOrd153.FieldByName('O153_002').AsString;
AMacID:=qryOrd153.FieldByName('O153_003').AsString;
UpdateCustItem(AFromCust,AToCust,AItemNo,AMacID);
end;
qryOrd153.Next;
end;
Screen.Cursor:=crDefault;
ShowMsg('UMS10000604'); //客户产品资料成功转移
ModalResult:=1;
end;
procedure TOrd150_03Form.bbtnExitClick(Sender: TObject);
begin
inherited;
//退出
Close;
end;
//更新数据
procedure TOrd150_03Form.UpdateCustItem(AFromCust,AToCust:Integer;AItemNo,AMacID:String);
begin
//变更客户产品表ORD153
qryQuery.Close;
qryQuery.SQL.Clear;
qryQuery.SQL.Add('update ORD153 set O153_001='+IntToStr(AToCust)+' where O153_001='+IntToStr(AFromCust)+' and O153_002='+AItemNo+' and O153_003='+''''+AMacID+'''');
qryQuery.ExecSQL;
//变更项目计划表TAS500
qryQuery.Close;
qryQuery.SQL.Clear;
qryQuery.SQL.Add('update TAS500 set T500_015='+IntToStr(AToCust)+' where T500_015='+IntToStr(AFromCust)+' and T500_016='+AItemNo+' and T500_017='+''''+AMacID+'''');
qryQuery.ExecSQL;
//变更任务计划表TAS510
qryQuery.Close;
qryQuery.SQL.Clear;
qryQuery.SQL.Add('update TAS510 set T510_016='+IntToStr(AToCust)+' where T510_016='+IntToStr(AFromCust)+' and T510_017='+AItemNo+' and T510_018='+''''+AMacID+'''');
qryQuery.ExecSQL;
end;
procedure TOrd150_03Form.dxDBGrid1KeyPress(Sender: TObject; var Key: Char);
var
ASelected:Integer;
begin
inherited;
if Key=#32 then //vk_space
begin
if qryOrd153.IsEmpty then Exit;
if qryOrd153.FieldByName('FSel').Value=-1 then ASelected:=0 else ASelected:=-1;
qryOrd153.Edit;
qryOrd153.FieldByName('FSel').Value:=ASelected;
qryOrd153.Post;
end;
end;
procedure TOrd150_03Form.dxDBGrid1MouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
ASelected:Integer;
begin
inherited;
if dxDBGrid1.GetColumnAt(X,Y)=nil then Exit;
if dxDBGrid1.GetColumnAt(X,Y).Field.FieldName='FSel' then
begin
if qryOrd153.IsEmpty then Exit;
if qryOrd153.FieldByName('FSel').Value=-1 then ASelected:=0 else ASelected:=-1;
qryOrd153.Edit;
qryOrd153.FieldByName('FSel').Value:=ASelected;
qryOrd153.Post;
end;
end;
initialization
RegisterClass(TOrd150_03Form);
finalization
UnRegisterClass(TOrd150_03Form);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -