?? tj_gxdw.pas
字號:
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 + -