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

📄 tj_gxdw.pas

📁 省级集邮品管理ERP
💻 PAS
📖 第 1 页 / 共 3 页
字号:
    bbtn_gkgx.Enabled := True
end;

procedure Tfrm_gxdw.bbtn_AddClick(Sender: TObject);
begin
  Set_State(1);
  qry_Table.CancelUpdates;
  qry_Table.Append;
  with qry_Table do
  begin
    FieldByName('BJ').AsString := '0';
    FieldByName('ZJSJ').AsString := '0';
    FieldByName('SJFH').AsString := '0';
    FieldByName('ZJXJ').AsString := '0';
    FieldByName('KH').AsString := '0';
    FieldByName('GYS').AsString := '0';
    FieldByName('JYYW').AsString := '0';
    FieldByName('TXYW').AsString := '0';
    FieldByName('FHDX').AsString := '0';
    FieldByName('PXM').AsInteger := Create_Default_PXM;
  end;
end;

{删除按钮}
procedure Tfrm_gxdw.bbtn_DelClick(Sender: TObject);
begin
  if qry_Table.IsEmpty = True then Exit;

  rb_ViewTable.Checked := True;

  if CHQMsgBox('确实要删除吗?', 2) = mrNo then
    Exit;

  if Test_Can_Del = False then Exit;                        {测试是否能够删除}

  qry_Table.Database.StartTransaction;
  try
    Adjust_PXM(2);
    qry_Table.Delete;
    qry_Table.ApplyUpdates;
    qry_Table.Database.Commit;
    Ever_Change := True;
  except
    if qry_Table.Database.InTransaction then qry_Table.Database.Rollback;
    CHQMsgBox('删除失败!');
  end;

  Refresh_Data('');
end;

{-------------------------------------------------------------------------------}
{判断能否进行删除}
function Tfrm_gxdw.Test_Can_Del: Boolean;
var
  l_gkgx: string;
begin
  {如果是直接下级关系,则判断是否存在下级关系}
  if qry_Table.FieldByName('ZJXJ').AsString = '1' then
  begin
    l_gkgx := qry_Table.FieldByName('GKGX').AsString;
    if Copy(l_gkgx, 4, 3) = '000' then
      with qry_Tmp do
      begin
        Close;
        SQL.Text := 'Select Count(DWDM) as l_Count From TGS_GXDWSJB where SubStr(GKGX,4,3)<>''000'' and SubStr(GKGX,1,3)=''' + Copy(l_gkgx, 1, 3) + '''';
        Open;
        if FieldByName('l_Count').AsInteger > 0 then
        begin
          CHQMsgBox('当前单位存在下级关系,不能删除!');
          Result := False;
          Exit;
        end;
      end;
  end;
  {如果是本局,则判断是否存在其他任何与本局有关系的单位存在,如果存在一个,则不能删除}
  if qry_Table.FieldByName('BJ').AsString = '1' then
  begin
    with qry_Tmp do
    begin
      Close;
      SQL.Text := 'Select Count(DWDM) as l_Count From TGS_GXDWSJB where DWDM>''0''';
      Open;
      if FieldByName('l_Count').AsInteger > 1 then
      begin
        CHQMsgBox('已经存在与其相关的单位,不能删除本局!');
        Result := False;
        Exit;
      end;
    end;
  end;

  Result := True;
end;

{-------------------------------------------------------------------------------}
{对数据库进行保存}
procedure Tfrm_gxdw.bbtn_SaveClick(Sender: TObject);
var
  Modify_PXM: Boolean;
  l_DWDM: string;
begin
  if Test_NULL = False then Exit;                           {测试是否存在非空必录项}
  if Test_DWDM = False then Exit;                           {判断输入的单位代码是否存在}
  if Test_GX = False then Exit;                             {测试是否指定与本局关系}
  if Test_Exist_BJ = False then Exit;                       {测试是否存在本局}
  if Test_Exist_ZJSJ = False then Exit;                     {测试是否存在直接上级}
  Fit_PXM;                                                  {调整排序码}

  Modify_PXM := True;
  try
    if qry_Table.FieldByName('PXM').OldValue = qry_Table.FieldByName('PXM').AsInteger then
      Modify_PXM := False;
  except
  end;

  qry_Table.Database.StartTransaction;
  try
    if Modify_PXM = True then
      if Edit_State = 1 then
        Adjust_PXM(1)
      else
        Adjust_PXM(0);

    qry_Table.ApplyUpdates;
    qry_Table.Database.Commit;
  except
    if qry_Table.Database.InTransaction then
      qry_Table.Database.Rollback;
    CHQMsgBox('保存出错!');
  end;

  l_DWDM := qry_Table.FieldByName('DWDM').AsString;

  Set_State(0);
  Refresh_Data(l_DWDM);

  Ever_Change := True;
end;

{-------------------------------------------------------------------------------}
{取消保存,给出提示,然后进入浏览状态}
procedure Tfrm_gxdw.bbtn_CancelClick(Sender: TObject);
begin
  if CHQMsgBox('确实要取消修改吗?', 2) = mrNo then
    Exit;
  qry_Table.CancelUpdates;
  qry_TableAfterScroll(nil);
  Set_State(0);
end;

{刷新数据}
procedure Tfrm_gxdw.Refresh_Data(l_DWDM: string);
begin
  with qry_Table do
  begin
    Close;
    Open;
    Locate('DWDM', l_DWDM, [loCaseInsensitive]);
  end;
end;

{==========================设置一些相互依存关系=================================}
{如果是直接下级,则需要填写归口关系,生成默认的归口关系,同时还需要判断能否取消归口关系}
procedure Tfrm_gxdw.dbck_ZJXJClick(Sender: TObject);
var
  l_gkgx: string;
begin
  if Edit_State = 0 then Exit; {如果处于浏览状态,则不需要进行任何操作} {}

  {处于修改状态,需要自动生成归口关系或者判断归口关系}
  if dbck_ZJXJ.Checked = True then
  begin
    {如果原来存在归口关系,则显示出来,否则需要进行判断,生成默认值}
    if _GKGX <> '' then
    begin
      qry_Table.Edit;
      qry_Table.FieldByName('GKGX').AsString := _GKGX;
      edt_GKGX.Text := _GKMC;
    end
    else
    begin
     {动态产生归口关系}
      qry_Table.Edit;
      qry_Table.FieldByName('GKGX').AsString := Create_Default_GKGX;

      with qry_Tmp do
      begin
        Close;
        SQL.Text := 'Select DWMC From TGS_GXDWSJB where BJ=''1''';
        Open;
        edt_GKGX.Text := FieldByName('DWMC').AsString;
      end;

      _GKGX := qry_Table.FieldByName('GKGX').AsString;
      _GKMC := edt_GKGX.Text;
    end;
  end
  else
  begin
    {如果原始代码后三位为0,则表示可能含有下级,如果本级进行了修改,则需要处理下级关系}
    l_gkgx := qry_Table.FieldByName('GKGX').AsString;
    if Copy(l_gkgx, 4, 3) = '000' then
      with qry_Tmp do
      begin
        Close;
        SQL.Text := 'Select Count(*) as l_Count From TGS_GXDWSJB where SubStr(GKGX,4,3)<>''000'' and SubStr(GKGX,1,3)=''' + Copy(l_gkgx, 1, 3) + '''';
        Open;
        if FieldByName('l_Count').AsInteger > 0 then
        begin
          CHQMsgBox('已经存在下级关系,不能再进行设置!');
          qry_Table.Edit;
          qry_Table.FieldByName('ZJXJ').AsString := '1';
          Exit;
        end;
      end;

    {符合修改条件了,进行修改}
    qry_Table.Edit;
    qry_Table.FieldByName('GKGX').AsString := '';
    edt_GKGX.Text := '';
  end;

  if dbck_ZJXJ.Checked = True then
  begin
    with qry_Table do
    begin
      Edit;
      FieldByName('BJ').AsString := '0';
      FieldByName('ZJSJ').AsString := '0';
      FieldByName('SJFH').AsString := '0';
      FieldByName('KH').AsString := '0';
      FieldByName('GYS').AsString := '0';
    end;
    {生成默认的归口关系}
    bbtn_gkgx.Enabled := True;
  end
  else
    bbtn_gkgx.Enabled := False;
end;
{-------------------------------------------------------------------------------}
{产生默认的归口关系}
function Tfrm_gxdw.Create_Default_GKGX: string;
const
  Three_Zero = '000';
var
  i: Integer;
  Tmp_Str: string;
begin
  with qry_Tmp do
  begin
    Close;
    SQL.Text := 'Select GKGX From TGS_GXDWSJB Where SubStr(GKGX,4,3)=''000''';
    Open;

    for i := 1 to 999 do
    begin
      Tmp_Str := Copy(Three_Zero, 1, 3 - Length(IntToStr(i))) + IntToStr(i) + '000';
      First;
      while not Eof do
      begin
        if FieldByName('GKGX').AsString = Tmp_Str then
          break;
        Next;
      end;
      if Eof then Break;
    end;
    Result := Tmp_Str;
  end;
end;

{本局}
procedure Tfrm_gxdw.dbck_BJClick(Sender: TObject);
begin
  if (dbck_BJ.Checked = True) and (Edit_State <> 0) then
    with qry_Table do
    begin
      Edit;
      FieldByName('ZJSJ').AsString := '0';
      FieldByName('SJFH').AsString := '0';
      FieldByName('ZJXJ').AsString := '0';
      FieldByName('KH').AsString := '0';
      FieldByName('GYS').AsString := '0';
      FieldByName('JYYW').AsString := '0';
      FieldByName('TXYW').AsString := '0';
      FieldByName('FHDX').AsString := '0';
    end;
end;
{直接上级}
procedure Tfrm_gxdw.dbck_ZJSJClick(Sender: TObject);
begin
  if (dbck_ZJSJ.Checked = True) and (Edit_State <> 0) then
    with qry_Table do
    begin
      Edit;
      FieldByName('BJ').AsString := '0';
      FieldByName('SJFH').AsString := '0';
      FieldByName('ZJXJ').AsString := '0';
      FieldByName('KH').AsString := '0';
      FieldByName('GYS').AsString := '0';
      FieldByName('JYYW').AsString := '0';
      FieldByName('TXYW').AsString := '0';
      FieldByName('FHDX').AsString := '0';
    end;
end;
{上级发货}
procedure Tfrm_gxdw.dbck_SJFHClick(Sender: TObject);
begin
  if (dbck_SJFH.Checked = True) and (Edit_State <> 0) then
    with qry_Table do
    begin
      Edit;
      FieldByName('BJ').AsString := '0';
      FieldByName('ZJSJ').AsString := '0';
      FieldByName('ZJXJ').AsString := '0';
      FieldByName('KH').AsString := '0';
      FieldByName('GYS').AsString := '0';
      FieldByName('JYYW').AsString := '0';
      FieldByName('TXYW').AsString := '0';
      FieldByName('FHDX').AsString := '0';
    end;
end;
{客户}
procedure Tfrm_gxdw.dbck_KHClick(Sender: TObject);
begin
  if (dbck_KH.Checked = True) and (Edit_State <> 0) then
    with qry_Table do
    begin
      Edit;
      FieldByName('BJ').AsString := '0';
      FieldByName('ZJSJ').AsString := '0';
      FieldByName('SJFH').AsString := '0';
      FieldByName('ZJXJ').AsString := '0';
    end;
end;
{供应商}
procedure Tfrm_gxdw.dbck_GYSClick(Sender: TObject);
begin
  if (dbck_GYS.Checked = True) and (Edit_State <> 0) then
    with qry_Table do
    begin
      Edit;
      FieldByName('BJ').AsString := '0';
      FieldByName('ZJSJ').AsString := '0';
      FieldByName('SJFH').AsString := '0';
      FieldByName('ZJXJ').AsString := '0';
    end;
end;
{集邮业务}
procedure Tfrm_gxdw.dbck_JYYWClick(Sender: TObject);
begin
  if (dbck_JYYW.Checked = True) and (Edit_State <> 0) then
    if (dbck_BJ.Checked = True) or (dbck_ZJSJ.Checked = True) or (dbck_SJFH.Checked = True) then
    begin
      qry_Table.Edit;
      qry_Table.FieldByName('JYYW').AsString := '0';
    end;
end;
{零枚业务}
procedure Tfrm_gxdw.dbck_TXYWClick(Sender: TObject);
begin
  if (dbck_TXYW.Checked = True) and (Edit_State <> 0) then
    if (dbck_BJ.Checked = True) or (dbck_ZJSJ.Checked = True) or (dbck_SJFH.Checked = True) then
    begin
      qry_Table.Edit;
      qry_Table.FieldByName('TXYW').AsString := '0';
    end;
end;
{发货对象}
procedure Tfrm_gxdw.dbck_FHDXClick(Sender: TObject);
begin
  if (dbck_FHDX.Checked = True) and (Edit_State <> 0) then
    if (dbck_BJ.Checked = True) or (dbck_ZJSJ.Checked = True) or (dbck_SJFH.Checked = True) then
    begin
      qry_Table.Edit;
      qry_Table.FieldByName('FHDX').AsString := '0';
    end;
end;


procedure Tfrm_gxdw.dbe_MKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = Chr(VK_RETURN) then
  begin
    PostMessage(Handle, WM_KEYDOWN, VK_TAB, MakeLong(0, MapVirtualKey(VK_TAB, 0)));
    PostMessage(Handle, WM_KEYUP, VK_TAB, MakeLong(1, MapVirtualKey(VK_TAB, 0) or $C000));
//  Perform(WM_KEYDOWN, VK_TAB, MakeLong(0, MapVirtualKey(VK_TAB, 0)));
//  Perform(WM_KEYUP, VK_TAB, MakeLong(1, MapVirtualKey(VK_TAB, 0) or $C000));
  end;
end;


end.

⌨️ 快捷键说明

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