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

📄 tj_gxdw.pas

📁 省级集邮品管理ERP
💻 PAS
📖 第 1 页 / 共 3 页
字号:
      Result := False;
      Exit;
    end;

    if FieldByName('DWMC').AsString = '' then
    begin
      CHQMsgBox('必须录入单位名称!');
      dbe_DWMC.SetFocus;
      Result := False;
      Exit;
    end;

    if FieldByName('DWJC').AsString = '' then
    begin
      CHQMsgBox('必须录入单位简称!');
      dbe_DWJC.SetFocus;
      Result := False;
      Exit;
    end;

    if FieldByName('PXM').AsString = '' then
    begin
      CHQMsgBox('必须录入排序码!');
      dbe_PXM.SetFocus;
      Result := False;
      Exit;
    end;
  end;
  Result := True;
end;
{-------------------------------------------------------------------------------}
{测试是否指定与本局关系}
function Tfrm_gxdw.Test_GX: Boolean;
begin
  if (dbck_BJ.Checked = False) and (dbck_ZJSJ.Checked = False) and (dbck_SJFH.Checked = False)
    and (dbck_ZJXJ.Checked = False) and (dbck_KH.Checked = False) and (dbck_GYS.Checked = False) then
  begin
    CHQMsgBox('没有指定与本局关系,必须指定至少一个关系!');
    Result := False;
    Exit;
  end;
  Result := True;
end;
{-------------------------------------------------------------------------------}
{测试是否存在本局,即建立数据库的时候必须指定本局}
function Tfrm_gxdw.Test_Exist_BJ: Boolean;
var
  SQLString: string;
  Exist_BJ: Boolean;
begin
  SQLString := 'Select Count(DWDM) bj_Count From TGS_GXDWSJB where BJ=''1''';
  try
    SQLString := SQLString + ' and DWDM <> ''' + qry_Table.FieldByName('DWDM').OldValue + '''';
  except
  end;

  {判断数据库中是否存在本局}
  with qry_Tmp do
  begin
    Close;
    SQL.Text := SQLString;
    Open;
    if FieldByName('bj_Count').AsInteger >= 1 then
      Exist_BJ := True
    else
      Exist_BJ := False;
  end;

  if Exist_BJ = True then
    if qry_Table.FieldByName('BJ').AsString = '1' then
    begin
      CHQMsgBox('数据库已经指定了本局,本局是唯一的,不能指定多个!');
      dbck_BJ.SetFocus;
      Result := False;
      Exit;
    end;

  if Exist_BJ = False then
    if qry_Table.FieldByName('BJ').AsString = '0' then
    begin
      CHQMsgBox('数据库中没有指定本局,必须有且只有一个单位被指定为本局!');
      dbck_BJ.SetFocus;
      Result := False;
      Exit;
    end;

  Result := True; {进行到这步,一切符合条件了}              {}
end;

{-------------------------------------------------------------------------------}
{测试是否存在直接上级}
function Tfrm_gxdw.Test_Exist_ZJSJ: Boolean;
var
  SQLString: string;
  Exist_ZJSJ: Boolean;
begin
  if qry_Table.FieldByName('ZJSJ').AsString = '0' then
  begin
    Result := True;
    Exit;
  end;

  SQLString := 'Select Count(DWDM) zjsj_Count From TGS_GXDWSJB where ZJSJ=''1''';
  try
    SQLString := SQLString + ' and DWDM <> ''' + qry_Table.FieldByName('DWDM').OldValue + '''';
  except
  end;

  {判断数据库中是否存在本局}
  with qry_Tmp do
  begin
    Close;
    SQL.Text := SQLString;
    Open;
    if FieldByName('zjsj_Count').AsInteger >= 1 then
      Exist_ZJSJ := True
    else
      Exist_ZJSJ := False;
  end;

  if Exist_ZJSJ = True then
    if qry_Table.FieldByName('ZJSJ').AsString = '1' then
    begin
      CHQMsgBox('数据库已经指定了直接上级,直接上级是唯一的,不能指定多个!');
      dbck_ZJSJ.SetFocus;
      Result := False;
      Exit;
    end;

  Result := True;
end;

{-------------------------------------------------------------------------------}
{测试是否存在单位代码}
function Tfrm_gxdw.Test_DWDM: Boolean;
var
  l_Old_DWDM, l_DWDM: string;
begin
  l_DWDM := qry_Table.FieldByName('DWDM').AsString;
  try
    l_Old_DWDM := qry_Table.FieldByName('DWDM').OldValue;
    if l_Old_DWDM = l_DWDM then
    begin
      Result := True;
      Exit;
    end;
  except
  end;

  with qry_Tmp do
  begin
    Close;
    SQL.Text := 'Select Count(DWDM) as Count_DWDM From TGS_GXDWSJB where DWDM=''' + l_DWDM + '''';
    Open;
    if FieldByName('Count_DWDM').AsInteger > 0 then
    begin
      CHQMsgBox('输入的单位代码已经存在!');
      dbe_DWDM.SetFocus;
      Result := False;
      Exit;
    end;
  end;

  Result := True;
end;

{-------------------------------------------------------------------------------}
{合理调整排序码位置}
procedure Tfrm_gxdw.Fit_PXM;
var
  l_default_PXM: Integer;
begin
  l_default_PXM := Create_Default_PXM;
  with qry_Table do
  begin
    if FieldByName('PXM').AsInteger < 0 then
    begin
      Edit;
      FieldByName('PXM').AsInteger := 1;
    end;
    if FieldByName('PXM').AsInteger > l_default_PXM then
    begin
      Edit;
      if Edit_State = 1 then
        FieldByName('PXM').AsInteger := l_default_PXM
      else
        FieldByName('PXM').AsInteger := l_default_PXM - 1;
    end;
  end;
end;

{===============================================================================}
{产生默认的排序码}
function Tfrm_gxdw.Create_Default_PXM: Integer;
begin
  with qry_Tmp do
  begin
    Close;
    SQL.Text := 'Select Max(PXM) pxm From TGS_GXDWSJB Where DWDM>''0''';
    Open;
    Result := FieldByName('pxm').AsInteger + 1;
  end;
end;
{-------------------------------------------------------------------------------}
{调整排序码}
procedure Tfrm_gxdw.Adjust_PXM(State: Integer);
var
  l_Old_Value, l_Cur_Value: Integer;
  SQLString: string;
begin
  case State of
    0: {修改}                                               {}
      begin
        try
          l_Old_Value := qry_Table.FieldByName('PXM').OldValue
        except
          l_Old_Value := 0;
        end;
        l_Cur_Value := qry_Table.FieldByName('PXM').AsInteger;

        if l_Old_Value > l_Cur_Value then
          SQLString := 'Update TGS_GXDWSJB Set PXM=PXM+1 where DWDM>''0'' and PXM>=' + IntToStr(l_Cur_Value) +
            ' and PXM<' + IntToStr(l_Old_Value)
        else
          SQLString := 'Update TGS_GXDWSJB Set PXM=PXM-1 where DWDM>''0'' and PXM>' + IntToStr(l_Old_Value) +
            ' and PXM<=' + IntToStr(l_Cur_Value);

        with qry_Tmp do
        begin
          Close;
          SQL.Text := SQLString;
          ExecSQL;
        end;
      end;

    1: {新增}                                               {}
      with qry_Tmp do
      begin
        Close;
        SQL.Text := 'Update TGS_GXDWSJB Set PXM=PXM+1 where DWDM>''0'' and PXM>=' + IntToStr(qry_Table.FieldByName('PXM').AsInteger);
        ExecSQL;
      end;
    2: {删除}                                               {}
      with qry_Tmp do
      begin
        Close;
        SQL.Text := 'Update TGS_GXDWSJB Set PXM=PXM-1 where DWDM>''0'' and PXM>' + IntToStr(qry_Table.FieldByName('PXM').AsInteger);
        ExecSQL;
      end;
  end;
end;

{==============================生成树型查看结构=================================}
{生成关系单位数据列表}
procedure Tfrm_gxdw.Create_List;
var
  i: Integer;
  l_Node: TTreeNode;
begin
  Clear_Node;
  {本局}
  Create_Node('Where BJ=''1''', nil);

  if tv_List.Items.Count = 0 then Exit;                     {看是否存在记录,如果不存在,则不能继续}

  {直接上级}
  l_Node := Add_Node('直接上级', '-1000001');
  Create_Node('Where ZJSJ=''1''', l_Node);

  {上级发货}
  l_Node := Add_Node('上级发货', '-1000002');
  Create_Node('Where SJFH=''1''', l_Node);

  {直接下级}
  l_Node := Add_Node('直接下级', '-1000003');
  Create_Node('Where ZJXJ=''1'' and SubStr(GKGX,4,3)=''000''', l_Node, True);

  {客户}
  l_Node := Add_Node('客户', '-1000004');
  Create_Node('Where KH=''1''', l_Node);

  {供应商}
  l_Node := Add_Node('供应商', '-1000005');
  Create_Node('Where GYS=''1''', l_Node);

  for i := 0 to tv_List.Items.Count - 1 do
    tv_List.Items[i].ImageIndex := 1;

end;

{-------------------------------------------------------------------------------}
{删除所有TreeView控件的所有节点和数据}
procedure Tfrm_gxdw.Clear_Node;
var
  i: Integer;
begin
  for i := tv_List.Items.Count - 1 downto 0 do
  begin
    if tv_List.Items[i].Data <> nil then
    begin
      Dispose(tv_List.Items[i].Data);
      tv_List.Items[i].Data := nil;
    end;
    tv_List.Items[i].Delete;
  end;
end;

{-------------------------------------------------------------------------------}
{创建节点}
procedure Tfrm_gxdw.Create_Node(SQL_param: string; Node: TTreeNode; Find_Sub: Boolean = False);
const
  SQL_Part = 'Select DWDM,DWMC,DWJC,DH,LXR,EMAIL,DZ,BZ,BJ,ZJSJ,SJFH,ZJXJ,KH,GYS,TXYW,JYYW,PXM,GKGX,FHDX,HOSTNAME From TGS_GXDWSJB ';
var
  View_Data: PView_Data;
  l_DWMC: string;
  cur_Node: TTreeNode;
begin
  with TQuery.Create(Application) do
  begin
    DatabaseName := 'yzpp';

    Close;
    SQL.Text := SQL_Part + SQL_param + ' order by PXM';
    Open;

    while not Eof do
    begin
      New(View_Data);
      View_Data^.DWDM := FieldByName('DWDM').AsString;
      l_DWMC := FieldByName('DWMC').AsString;
      cur_Node := tv_List.Items.AddChildObject(Node, l_DWMC, View_Data);

      if Find_Sub = True then
        Create_Node('Where ZJXJ=''1'' and SubStr(GKGX,4,3)<> ''000'' and SubStr(GKGX,1,3)=''' + Copy(FieldByName('GKGX').AsString, 1, 3) + '''', cur_Node);
      Next;
    end;
    Free;
  end;

end;
{------------------------------------------------------------------------------}
{添加固定节点}
function Tfrm_gxdw.Add_Node(l_DWMC, l_DWDM: string): TTreeNode;
var
  View_Data: PView_Data;
begin
  New(View_Data);
  View_Data^.DWDM := l_DWDM;
  Result := tv_List.Items.AddChildObject(tv_List.Items[0], l_DWMC, View_Data);
end;
{------------------------------------------------------------------------------}
{点击树型结构,显示具体内容}
procedure Tfrm_gxdw.tv_ListChange(Sender: TObject; Node: TTreeNode);
const
  SQL_Part = 'Select DWDM,DWMC,DWJC,DH,LXR,EMAIL,DZ,BZ,BJ,ZJSJ,SJFH,ZJXJ,KH,GYS,TXYW,JYYW,PXM,GKGX,FHDX,HOSTNAME From TGS_GXDWSJB ';
begin
  if Node.Data <> nil then
    with qry_tv do
    begin
      Close;
      SQL.Text := SQL_Part + 'Where DWDM=''' + PView_Data(Node.Data)^.DWDM + '''';
      Open;

      if FieldByName('ZJXJ').AsString = '1' then
      begin
        if Copy(FieldByName('GKGX').AsString, 4, 3) = '000' then
          with qry_Tmp do
          begin
            Close;
            SQL.Text := 'Select DWMC From TGS_GXDWSJB where BJ=''1''';
            Open;
            edt_GKGX.Text := FieldByName('DWMC').AsString;
          end
        else
          with qry_Tmp do
          begin
            Close;
            SQL.Text := 'Select DWMC From TGS_GXDWSJB where GKGX=''' + Copy(qry_tv.FieldByName('GKGX').AsString, 1, 3) + '000''';
            Open;
            edt_GKGX.Text := FieldByName('DWMC').AsString;
          end;
      end
      else
        edt_GKGX.Text := '';
    end;
end;

{=============================功能按钮事件======================================}
procedure Tfrm_gxdw.bbtn_ModifyClick(Sender: TObject);
begin
  if qry_Table.IsEmpty = True then Exit;

  Set_State(2);
  if dbck_ZJXJ.Checked = True then

⌨️ 快捷键说明

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