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

📄 pnmanage.pas

📁 实用的毛织生产管理系统
💻 PAS
字号:
unit pnmanage;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Spin, Grids, DBGrids, DBCtrls, Menus, DB, DBTables,
  ComCtrls, constb, DBGridEh, ExtCtrls;

type
  Tpnmanagefm = class(TForm)
    pnoqy: TQuery;
    pnodb: TDataSource;
    GroupBox1: TGroupBox;
    Label4: TLabel;
    Label9: TLabel;
    Label1: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    ComboBox1: TComboBox;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    GroupBox2: TGroupBox;
    DBGridEh1: TDBGridEh;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N3: TMenuItem;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    pnomemqy: TQuery;
    Label2: TLabel;
    Label3: TLabel;
    DateTimePicker1: TDateTimePicker;
    DateTimePicker2: TDateTimePicker;
    DateTimePicker3: TDateTimePicker;
    DateTimePicker4: TDateTimePicker;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormDestroy(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure pnoqyAfterDelete(DataSet: TDataSet);
    procedure pnoqyAfterInsert(DataSet: TDataSet);
    procedure pnoqyAfterPost(DataSet: TDataSet);
    procedure pnoqyBeforePost(DataSet: TDataSet);
    procedure pnoqyPostError(DataSet: TDataSet; E: EDatabaseError;
      var Action: TDataAction);
    procedure pnoqyBeforeEdit(DataSet: TDataSet);
    procedure N1Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure DBGridEh1KeyPress(Sender: TObject; var Key: Char);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure DBGridEh1EditButtonClick(Sender: TObject);
    procedure DBGridEh1DblClick(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure DBGridEh1KeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    oldpno: string;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  pnmanagefm: Tpnmanagefm;

implementation

uses guestmanage, finishpnomem;

{$R *.dfm}

procedure Tpnmanagefm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  action := cafree;
end;

procedure Tpnmanagefm.FormDestroy(Sender: TObject);
begin
  pnmanagefm := nil;
end;

procedure Tpnmanagefm.FormCreate(Sender: TObject);
var
  years, months, days: word;
begin
  pnoqy.RequestLive := true;
  //decodedate(date, years, months, days);

  combobox1.items := insertcombobox('kftable', 'kfjz'); //客户简称

  dbgrideh1.Columns[9].FieldName := 'finishdate';
  dbgrideh1.Columns[10].FieldName := 'finishflg';

  //popupmenu1.Parent:=dbgrideh1;
  pnoqy.SQL.clear;
  pnoqy.sql.Add('select * from scpno ');
  if schpnoflg then
  begin

    pnoqy.SQL.Add('where finishflg=:flg ');

    pnoqy.ParamByName('flg').AsBoolean := false;
    radiobutton3.Checked := true;
  end;
  pnoqy.sql.Add('order by pno desc');
  pnoqy.open;

end;

procedure Tpnmanagefm.Button1Click(Sender: TObject);
begin
 {with pnomemqy do
 begin
 sql.clear;
 sql.add(' delete from scpno  where pno=pno');
  if edit1.text <> '' then
  begin
    sql.add(' and  pno like :pno');
    ParamByName('pno').asstring := '%' + edit1.text + '%';
  end;
  if edit2.text <> '' then
  begin
    sql.add(' and  kno like :kno');
    ParamByName('kno').asstring := '%' + edit2.text + '%';
  end;
  if combobox1.text <> '' then
  begin
    sql.add(' and  kfjz like :kfjz');
    ParamByName('kfjz').asstring := '%' + combobox1.Text + '%';
  end;
  if not radiobutton1.Checked then
  begin

    sql.add(' and  finishflg = :finishflg');
    ParamByName('finishflg').asboolean := radiobutton2.Checked;
  end;
  execsql;
 end;

 with pnomemqy do
 begin
 sql.clear;
 sql.add(' insert into scpno(pno, kno, kfjz, eddate, pnonum, zxnum, ldfs, spnum, outdate,');
 sql.add('finishdate, finishflg)');
 sql.add('select   pno, kno, kfjz, eddate, pnonum, zxnum, ldfs, spnum, outdate,');
 sql.add('finishdate, finishflg FROM dayscpno WHERE (pno) = (pno) ');
  if edit1.text <> '' then
  begin
    sql.add(' and  pno like :pno');
    ParamByName('pno').asstring := '%' + edit1.text + '%';
  end;
  if edit2.text <> '' then
  begin
    sql.add(' and  kno like :kno');
    ParamByName('kno').asstring := '%' + edit2.text + '%';
  end;
  if combobox1.text <> '' then
  begin
    sql.add(' and  kfjz like :kfjz');
    ParamByName('kfjz').asstring := '%' + combobox1.Text + '%';
  end;
  if not radiobutton1.Checked then
  begin

    sql.add(' and  finishflg = :finishflg');
    ParamByName('finishflg').asboolean := radiobutton2.Checked;
  end;
  execsql;
 end;          }

  pnoqy.sql.Clear;
  pnoqy.sql.add('select * from scpno where pno=pno ');
  if edit1.text <> '' then
  begin
    pnoqy.sql.add(' and  pno like :pno');
    pnoqy.ParamByName('pno').asstring := '%' + edit1.text + '%';
  end;
  if edit2.text <> '' then
  begin
    pnoqy.sql.add(' and  kno like :kno');
    pnoqy.ParamByName('kno').asstring := '%' + edit2.text + '%';
  end;

    pnoqy.sql.add(' and  eddate>=:ed1  and eddate<=:ed2 ');
 if radiobutton2.Checked then
    begin
    pnoqy.sql.add(' and finishdate>=:fd1 and finishdate<=:fd2');
    pnoqy.ParamByName('fd1').asdate:=datetimepicker3.Date;
    pnoqy.ParamByName('fd2').asdate:=datetimepicker4.Date;    
    end;
    pnoqy.ParamByName('ed1').asdate:=datetimepicker1.Date;
    pnoqy.ParamByName('ed2').asdate:=datetimepicker2.Date;


  if combobox1.text <> '' then
  begin
    pnoqy.sql.add(' and  kfjz like :kfjz');
    pnoqy.ParamByName('kfjz').asstring := '%' + combobox1.Text + '%';
  end;
  if not radiobutton1.Checked then
  begin

    pnoqy.sql.add(' and  finishflg = :finishflg');
    pnoqy.ParamByName('finishflg').asboolean := radiobutton2.Checked;

  end;
  pnoqy.SQL.Add(' order by pno desc');
  //pnoqy.SQL.SaveToFile('c:\pno.txt');
  pnoqy.Open;

end;

procedure Tpnmanagefm.pnoqyAfterDelete(DataSet: TDataSet);
begin
  n3.Enabled := bool(dataset.recordcount);
  button5.Enabled := bool(dataset.recordcount);
end;

procedure Tpnmanagefm.pnoqyAfterInsert(DataSet: TDataSet);
begin

  dataset.FieldByName('finishflg').asboolean := false


end;

procedure Tpnmanagefm.pnoqyAfterPost(DataSet: TDataSet);
begin
  dataset.Close;
  dataset.Open;
end;

procedure Tpnmanagefm.pnoqyBeforePost(DataSet: TDataSet);
begin
  if dataset.FieldByName('pno').asstring <> '' then
  begin
    case dataset.State of
      dsinsert:
        begin
          if searchfield1('scpno', 'pno', dataset.FieldByName('pno').asstring)
            then

          begin
            messagedlg('输入的批号重复,请重新输入!', mtinformation, [mbok], 0);
            abort;
          end
        end;
      dsedit:
        begin
          if oldpno <> dataset.FieldByName('pno').asstring then
            if searchfield1('scpno', 'pno', dataset.FieldByName('pno').asstring)
              then
            begin
              messagedlg('输入的批号简称重复,请重新输入!', mtinformation,
                [mbok], 0);
              abort;
            end;

        end;
    end;
  end
  else
    dataset.Cancel;
end;

procedure Tpnmanagefm.pnoqyPostError(DataSet: TDataSet; E: EDatabaseError;
  var Action: TDataAction);
begin
  if (E is EDBEngineError) then
  begin
    if ((E as EDBEngineError).Errors
      [0].Errorcode = 9729) or ((E as EDBEngineError).Errors
      [0].Errorcode = 13059) then
    begin
      action := daabort;

    end;
  end;
end;

procedure Tpnmanagefm.pnoqyBeforeEdit(DataSet: TDataSet);
begin
  oldpno := dataset.fieldbyname('pno').AsString;
end;

procedure Tpnmanagefm.N1Click(Sender: TObject);
begin
  pnoqy.append;
end;

procedure Tpnmanagefm.N3Click(Sender: TObject);
begin
  pnoqy.Delete;
end;

procedure Tpnmanagefm.DBGridEh1KeyPress(Sender: TObject; var Key: Char);
begin
  if key = #13 then
  begin
    with Dbgrideh1 do
      if Selectedindex < (FieldCount - 1) then
        Selectedindex := Selectedindex + 1
      else
      begin
        pnoqy.Next;
        if not (pnoqy.state in [dsinsert, dsedit]) then

          if pnoqy.Eof then
            pnoqy.Append;
        Selectedindex := 0;
      end;
  end;
end;

procedure Tpnmanagefm.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if key = #13 then
    if not (ActiveControl is TDbgrideh) then
    begin
      key := #0;
      perform(WM_NEXTDLGCTL, 0, 0);
    end;

end;

procedure Tpnmanagefm.DBGridEh1EditButtonClick(Sender: TObject);

begin
  case dbgrideh1.Selectedindex of
    2:
      begin
        kfjz := '';
        schflg := true;
        if not assigned(guestmanagefm) then
          guestmanagefm := tguestmanagefm.create(application);
        guestmanagefm.formstyle := fsnormal;
        guestmanagefm.Visible := false;
        guestmanagefm.WindowState := wsnormal;
        guestmanagefm.Showmodal;
        pnoqy.Edit;
        if kfjz <> '' then
          pnoqy.FieldByName('kfjz').asstring := kfjz;
      end;
  end;

end;

procedure Tpnmanagefm.DBGridEh1DblClick(Sender: TObject);

begin
  if schpnoflg then
  begin
    if not (pnoqy.state in [dsinsert, dsedit]) then
    begin
      if pnoqy.Active and (pnoqy.RecordCount > 0) then
      begin
        if not pnoqy.fieldbyname('finishflg').AsBoolean then
        begin
          pno := pnoqy.fieldbyname('pno').asstring;
          close;
        end
        else
          if messagedlg('此批号已完工!', mtinformation, mbokcancel,
            0) = mrok then
          begin
            pno := pnoqy.fieldbyname('pno').asstring;
            close;
          end;
      end;
    end
  end

end;

procedure Tpnmanagefm.Button4Click(Sender: TObject);
begin
  close;
end;

procedure Tpnmanagefm.Button3Click(Sender: TObject);
begin
  pnoqy.ApplyUpdates;
  pnoqy.CommitUpdates;
  Button1Click(Sender);

end;

procedure Tpnmanagefm.Button6Click(Sender: TObject);
begin
  pnoqy.CancelUpdates;
end;

procedure Tpnmanagefm.DBGridEh1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin

  if key = 40 then
    if pnoqy.Eof then
      pnoqy.Cancel;
end;

end.

⌨️ 快捷键说明

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