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

📄 baseinbase.pas

📁 产品信息系统!关于产品基础信息的系统!功能强大!
💻 PAS
字号:
unit BaseInBase;

interface

uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   Dialogs, InfoBase, wwDialog, wwidlg, DB, ADODB, ActnList, ComCtrls,
   ToolWin, Grids, DBGridEh, ExtCtrls, StdCtrls, DBGridEhImpExp;

type
   TfrmBaseInBase = class(TfrmInfoBase)
      Panel1: TPanel;
      Panel2: TPanel;
      DBGridEh1: TDBGridEh;
      GroupBox1: TGroupBox;
      actCopy: TAction;
      Label1: TLabel;
      Label2: TLabel;
      Button1: TButton;
      Button2: TButton;
      DateTimePicker1: TDateTimePicker;
      Label3: TLabel;
    ADOQuery1: TADOQuery;
      procedure DBGridEh1KeyPress(Sender: TObject; var Key: Char);
      procedure DBGridEh1MouseDown(Sender: TObject; Button: TMouseButton;
         Shift: TShiftState; X, Y: Integer);
      procedure FormCreate(Sender: TObject);
      procedure QBaseInfoBeforePost(DataSet: TDataSet);
      procedure QBaseInfoBeforeEdit(DataSet: TDataSet);
      procedure Button1Click(Sender: TObject);
      procedure Button2Click(Sender: TObject);
      procedure DBGridEh1ColExit(Sender: TObject);
      procedure ToolButton2Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure DBGridEh1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);

   private
      { Private declarations }
   public
      function GetOrderData():Integer;
      procedure CopyOrderData();
      { Public declarations }
   end;

var
   frmBaseInBase    : TfrmBaseInBase;

implementation

uses Global, DataModule,AssistantInput,pasStockInput;

{$R *.dfm}

function TfrmBaseInBase.GetOrderData():Integer;
var tmpHTH:string ;
begin
    tmpHTH:=QBaseInfo.FieldValues['fHth'];
    with dmClient.qry_cx do
    begin
        close;
        SQL.Clear;
        SQL.Add(' select distinct hth,xh,sizes,sh_remark from vGetOrderDate where hth like '+'''%'+trim(tmpHTH)+'%''');
        dmClient.qry_cx.Open;
        if dmClient.qry_cx.IsEmpty then
            Result:=0 //没有返回结果集
        else if  dmClient.qry_cx.RecordCount  > 1 then
            result:=2//返回数目大于1的结果集
        else result:=1;//返回数目等于1的结果集
    end;
end;

procedure TfrmBaseInBase.CopyOrderData();
begin
    if dmClient.qry_cx.active then
        if dmClient.qry_cx.FieldCount >0 then
        begin
            self.QBaseInfo.FieldbyName('fHth').asString:=WCI_fHth;
            self.QBaseInfo.FieldbyName('fModel').asString:=Trim(WCI_fModel);
            self.QBaseInfo.FieldbyName('fName').asString:=Trim(WCI_fModel);
            self.QBaseInfo.FieldbyName('fSize').asString:=WCI_fSize;
            self.QBaseInfo.FieldbyName('fSH').asString:=WCI_fSH;
        end;
end;

procedure TfrmBaseInBase.DBGridEh1KeyPress(Sender: TObject; var Key: Char);
begin
   inherited;
   if QBaseInfo.State in [dsInsert, dsEdit] then
   begin
      //-----自动复制数据
      if DBGridEh1.SelectedField.FieldName = 'fAudit' then
      begin
         Button1.Click;
         QBaseInfo.Last;
         QBaseInfo.Edit;
         DBGridEh1.SelectedIndex := 0;
         //ShowMessage('hello!');
      end;
      //-----------

      if DBGridEh1.SelectedIndex = 0 then
      begin
         QBaseInfo.FieldbyName('fDate').AsDateTime := strtodate(FormatDateTime('yyyy-mm-dd', DateTimePicker1.Date));
         QBaseInfo.FieldbyName('fchecker').asString := G_sUserName;
         QBaseInfo.FieldbyName('fsize').asString := '/';
      end;

      if DBGridEh1.SelectedField.FieldName = 'fOutSource' then
         DBGridEh1.SelectedIndex := 17;

      if DBGridEh1.SelectedField.FieldName = 'fUnit' then
      begin
            //ShowMessage('jin');
         with QIsUnique do
         begin
            close;
            SQL.Clear;
            SQL.Add('select * from tAmount where fModel=:a and fSH=:b and fsize=:c');
            parameters.ParamByName('a').Value := QBaseInfo.FieldValues['fmodel'];
            parameters.ParamByName('b').Value := QBaseInfo.FieldValues['fSH'];
            parameters.ParamByName('c').Value := QBaseInfo.FieldValues['fsize'];
            QIsUnique.Open;
            if QIsUnique.Eof then
               showmessage('型号、规格、色号不匹配,对应数量或重量将无法自动计算,请检查后输入!');
         end;
      end;

      if DBGridEh1.SelectedField.FieldName = 'fName' then
      begin
         with QIsUnique do
         begin
            close;
            SQL.Clear;
            SQL.Add('select * from tAmount where fModel=:a and fsh=:b and fsize=:c');
            parameters.ParamByName('a').Value := QBaseInfo.FieldValues['fmodel'];
            parameters.ParamByName('b').Value := QBaseInfo.FieldValues['fsh'];
            parameters.ParamByName('c').Value := QBaseInfo.FieldValues['fsize'];
            QIsUnique.Open;
            if not QIsUnique.Eof then
               QBaseInfo.FieldbyName('fname').Value := QIsUnique.FieldValues['fname']
            else
               ShowMessage('没有找到对应的名称!');
         end;
      end;

      DBGridEh1.FieldColumns['funit'].PickList.Text := '粒' + #13 + #10 + '付' + #13 + #10 + '套' + #13 + #10 + 'GR' + #13 + #10 + '打' + #13 + #10 + '百粒' + #13 + #10 + '百付' + #13 + #10 + '百套';
      //if QBaseInfo.State in [dsInsert, dsEdit] then
      //begin
        if (GetKeyState(vk_Control) < 0) and (GetKeyState(VK_RETURN) < 0) then
        begin
            GetOrderData();
            Application.CreateForm(TfrmStockInput,frmStockInput);
            G_CanInput:=False;
            frmStockInput.ShowModal;
            if G_CanInput then
            begin
                CopyOrderData();
            end;
        end;
      //end;
   end;
end;

procedure TfrmBaseInBase.DBGridEh1MouseDown(Sender: TObject;
   Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
   inherited;
   if QBaseInfo.State in [dsInsert, dsEdit] then
   begin
      if DBGridEh1.SelectedField.FieldName = 'fDate' then
         QBaseInfo.FieldbyName('fDate').AsDateTime := strtodate(FormatDateTime('yyyy-mm-dd', DateTimePicker1.Date));
   end;
end;

procedure TfrmBaseInBase.FormCreate(Sender: TObject);
//var i:Integer;
begin
   inherited;
   DateTimePicker1.DateTime:=StrToDate(FormatDateTime('yyyy-mm-dd', Date()));
   tbtFind.visible := False;
   {  for i := 0 to DBGridEh1.Columns.Count - 1 do
     begin
       if i mod 2 = 0 then
         DBGridEh1.Columns[i].Color := clMoneyGreen
       else
         DBGridEh1.Columns[i].Color := clWhite;
     end; }

end;

procedure TfrmBaseInBase.QBaseInfoBeforePost(DataSet: TDataSet);
begin
   if (QBaseInfo.FieldbyName('fHTH').asString = '') then
   begin
      showmessage('合同号不能为空,请重新输入!');
      abort;
   end;

   if (QBaseInfo.FieldbyName('fsize').asString = '') then
   begin
      showmessage('规格不能为空,请重新输入!');
      abort;
   end;

   if (QBaseInfo.FieldbyName('fSH').asString = '') then
   begin
      showmessage('色号不能为空,请重新输入!');
      abort;
   end;

   if (QBaseInfo.FieldbyName('fDate').asString = '') then
   begin
      showmessage('时间不能为空,请重新输入!');
      abort;
   end;

   if (QBaseInfo.FieldbyName('fModel').asString = '') then
   begin
      showmessage('型号不能为空,请重新输入!');
      abort;
   end;

   if (QBaseInfo.FieldbyName('fWeight').asString = '') then
   begin
      showmessage('重量不能为空,请重新输入!');
      abort;
   end;

   if (QBaseInfo.FieldbyName('famount').asString = '') then
   begin
      showmessage('数量不能为空,请重新输入!');
      abort;
   end;

   if (QBaseInfo.FieldbyName('fDepot').asString = '') then
   begin
      showmessage('仓库不能为空,请重新输入!');
      abort;
   end;

   begin
         with QIsUnique do
         begin
            close;
            SQL.Clear;
            SQL.Add('select * from tAmount where fModel=:a and fsh=:b and fsize=:c');
            parameters.ParamByName('a').Value := QBaseInfo.FieldValues['fmodel'];
            parameters.ParamByName('b').Value := QBaseInfo.FieldValues['fsh'];
            parameters.ParamByName('c').Value := QBaseInfo.FieldValues['fsize'];
            QIsUnique.Open;
            end;
            if not QIsUnique.Eof then
            QBaseInfo.FieldbyName('fname').Value := QIsUnique.FieldValues['fname']
            else
            QBaseInfo.FieldbyName('fname').asString :=QBaseInfo.fieldbyname('fmodel').AsString;
      end;

      with QTemp do
      begin
         close;
         SQL.Clear;
         SQL.Add('select * from tcolor where fsh=:a');
         parameters.ParamByName('a').Value := QBaseInfo.FieldValues['fsh'];
         QTemp.Open;
         if not QTemp.Eof then
          QBaseInfo.FieldbyName('fcolor').Value := QTemp.FieldbyName('fcolor').Value
          else
           QBaseInfo.FieldbyName('fcolor').asString := QBaseInfo.fieldbyname('fsh').AsString;
      end;
end;

procedure TfrmBaseInBase.QBaseInfoBeforeEdit(DataSet: TDataSet);
begin
   inherited;
   if (QBaseInfo.FieldbyName('fAudit').asString = '1') then
   begin
      Application.MessageBox('对不起!已审核的数据不能再进行修改!要修改请使用冲帐!', '信息提示', MB_OK);
      abort;
   end;
end;

procedure TfrmBaseInBase.Button1Click(Sender: TObject);
var
   i                : Integer;
   ar               : array of variant;
begin
   QBaseInfo.Refresh;
   if QBaseInfo.State in [dsInsert, dsEdit] then
      showmessage('请先保存后再复制记录')
   else
   begin
      SetLength(ar, QBaseInfo.FieldCount);
      //复制当前记录
      for i := 0 to QBaseInfo.FieldCount - 1 do
         ar[i] := QBaseInfo.Fields[i].Value;
      QBaseInfo.Append;
      //将复制的记录粘贴到新记录中
      for i := 0 to QBaseInfo.FieldCount - 1 do
         QBaseInfo.Fields[i].Value := ar[i];
      QBaseInfo.Post;
      QBaseInfo.Last;
      QBaseInfo.Edit;
      DBGridEh1.SelectedIndex := 0;
   end

end;

procedure TfrmBaseInBase.Button2Click(Sender: TObject);
begin
   inherited;
   if QBaseInfo.State in [dsInsert, dsEdit] then
      showmessage('请先将数据保存后再审核!')
   else
   begin
      QBaseInfo.Requery();
      if MessageDlg('确定审核吗?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
      begin
         while (not QBaseInfo.Eof) do
         begin
            QBaseInfo.Edit;
            QBaseInfo.FieldbyName('faudit').asBoolean := True;
            // QBaseInfo.Post;
            QBaseInfo.Next;
         end;
      end;
      QBaseInfo.Requery();
   end;
end;

procedure TfrmBaseInBase.DBGridEh1ColExit(Sender: TObject);
begin
   inherited;
   if QBaseInfo.State in [dsInsert, dsEdit] then
   begin
      with QTemp do
      begin
         close;
         SQL.Clear;
         SQL.Add('select * from tcolor where fsh=:a');
         parameters.ParamByName('a').DataType:=ftString;
         Parameters.ParamByName('a').NumericScale:=255;
         Parameters.ParamByName('a').Precision:=255;
         Parameters.ParamByName('a').Size:=50;
         parameters.ParamByName('a').Value := QBaseInfo.FieldValues['fsh'];
         QTemp.Open;
         if QTemp.RecordCount<>0 then
         begin
          QBaseInfo.FieldbyName('fcolor').Value := QTemp.FieldbyName('fcolor').Value
         end
          else
            begin
            showMessage('此色号没有相应的颜色与之对应,请检查色号是否正确');
           QBaseInfo.FieldbyName('fcolor').asString := QBaseInfo.fieldbyname('fsh').AsString;
           end;
      end;
      QBaseInfo.FieldbyName('fhth').Value := Uppercase(DBGridEh1.FieldColumns['fhth'].DisplayText);
      QBaseInfo.FieldbyName('fmodel').Value := Uppercase(DBGridEh1.FieldColumns['fmodel'].DisplayText);
      QBaseInfo.FieldbyName('fsize').Value := Uppercase(DBGridEh1.FieldColumns['fsize'].DisplayText);
   end;
end;

procedure TfrmBaseInBase.ToolButton2Click(Sender: TObject);
begin
   inherited;
   SaveDialog1.DefaultExt := 'XLS';
   SaveDialog1.Filter := '*.XLS|*.XLS';
   if SaveDialog1.Execute then
   begin
      if SaveDialog1.FileName <> '' then
      begin
         SaveDBGridEhToExportFile(TDBGridEhExportAsXLS, DBGridEh1, SaveDialog1.FileName, True);
         Application.MessageBox('Excel文件导出成功!', '成功', MB_OK);
      end;
   end;
end;

procedure TfrmBaseInBase.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  inherited;
    frmBaseInBase:=nil;
end;

procedure TfrmBaseInBase.DBGridEh1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    {if (GetKeyState(VK_CONTROL)<0) and (GetKeyState(VK_RETURN)<0) then
    begin
        keybd_event(VK_TAB,0,0,0);
    end;}
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -