⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ord150_03.pas

📁 这是一个功能齐全的,代码完整的ERP企业信息管理系统,现在上传和大家分享
💻 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 + -