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

📄 ufrmquerytop.~pas

📁 一个会议签到系统
💻 ~PAS
📖 第 1 页 / 共 2 页
字号:
  PFilterSQLGetDBData();                            
end;

procedure TFrmQueryTop.N3Click(Sender: TObject);
begin
  if sQueryFZID = '' then Exit;
  iSureORCancel:=0;
  FrmFilterSQL:=TFrmFilterSQL.Create(Self);
  FrmFilterSQL.ShowModal;
  if iSureORCancel = 100 then begin
     PAddNodeToTrvFilter();
     PFilterSQLGetDBData();

     PInitFilterTree();//Add 20030418  任富 检测指针错误 没有保存以前 指针没有初始化
     
  end;
end;
{*******************************************************************************
*            根据定制的SQL 从数据库中提取数据
*            只能用 单引号问题 在Oracle 中
*******************************************************************************}
procedure TFrmQueryTop.PFilterSQLGetDBData;
var
  sSQL:String;
  I:Integer;
begin
 
  if sQueryFZID = ''     then Exit;
  if sQueryFZIDSQL = ''  then Exit;
  for I:=dxDBGrid1.DataSource.DataSet.FieldCount-1  Downto 0 do begin
      dxDBGrid1.Columns[I].Destroy;
  end;
  if   sQueryFZIDSQL = '' then       Exit;

  sSQL:='  Select 9999 FZINTID,T.* From  ('+sQueryFZIDSQL+') T' ;
  if not bSYSDBORCorSQL then
     sSQL:='Select RowNum  FZINTID,T.* From  ('+sQueryFZIDSQL+') T' ;

  if Trim(MemoFilterSQL.Text) <> '' then
     sSQL:=sSQL+'  Where  '+MemoFilterSQL.text;
  ClientDataSet1.DisableControls;

  sSQL:=MyReplaceStrA(sSQL,'"',''''); //只能用 单引号问题 在Oracle 中

  FCarryOutSQL(ClientDataSet1,sSQL,True,True);
  {****加上网格序号*****这样会变慢速度 Oracle 可以用 Rownum属性}
  if  bSYSDBORCorSQL then begin
      ClientDataSet1.First;I:=0;
      while not ClientDataSet1.Eof  do begin
        I:=I+1;
        ClientDataSet1.Edit;  //这个循环的代码速度很慢//
        ClientDataSet1.FieldByName('FZINTID').AsString:=IntToStr(I);
        ClientDataSet1.Post;
        ClientDataSet1.Next;
      end;
  end;

  ClientDataSet1.EnableControls;

  dxDBGrid1.CreateDefaultColumns(dxDBGrid1.DataSource.DataSet, dxDBGrid1);
  ActChineseToGridExecute(nil);
  ActSetSumToGridExecute(nil);//给表格加上合计
 

end;
{*******************************************************************************
*                 删除树中的节点
*******************************************************************************}
procedure TFrmQueryTop.PDelNldeToTrvFilter;
var
  sSQL,Str:String;
begin
  if iCurrentTrvFilterIndex <=1 then Exit;

  PInitFilterTree();

  if Pos(sConstNoSave,TrvQueryFilter.Items[iCurrentTrvFilterIndex].Text) > 0 then
     begin
       TrvQueryFilter.Items[iCurrentTrvFilterIndex].Delete;
       Exit;
     end;
  Str:=String(TrvQueryFilter.Items[iCurrentTrvFilterIndex].data^);   
  sSQL:='Delete From TSY52013_ChaXun where FZID='+''''+Str+'''';
  if not bSYSDBORCorSQL then sSQL:=sSQL+';';
  if not FCarryOutSQL(DM.CDSSysA,sSQL,False,False) then begin
     DlgWarningA('删除数据出错');
     Exit;     
  end;
  TrvQueryFilter.Items[iCurrentTrvFilterIndex].Delete;
end;

procedure TFrmQueryTop.N5Click(Sender: TObject);
var
  Str:String;
begin
  if TrvQueryFilter.Selected.AbsoluteIndex <=1 then Exit;  
  iSureORCancel:=50;
  FrmFilterSQL:=TFrmFilterSQL.Create(Self);
  FrmFilterSQL.ShowModal;
  if iSureORCancel = 100 then begin
     Str:=MyCutString(True,TrvQueryFilter.Items[iCurrentTrvFilterIndex].Text);
     Str:=Str+sConstNoSave+'   '+MyCutString(False,TrvQueryFilter.Items[iCurrentTrvFilterIndex].Text);
     TrvQueryFilter.Items[iCurrentTrvFilterIndex].Text:=Str;
     PFilterSQLGetDBData();
  end;
end;

procedure TFrmQueryTop.PopupMenu1Popup(Sender: TObject);
begin
  if dxDBGrid1.DataSource.DataSet.Active then begin
      N3.Enabled:=True;
      N4.Enabled:=True;
      N5.Enabled:=True;
  end else begin
      N3.Enabled:=False;
      N4.Enabled:=False;
      N5.Enabled:=False;
  end;   
  if TrvQueryFilter.Selected.AbsoluteIndex = 1 then begin
      N5.Enabled:=False;
      N4.Enabled:=False;
   end;
  if TrvQueryFilter.Selected.AbsoluteIndex <=1 then begin
     N7.Enabled:=False;
  end else N7.Enabled:=True;
end;

procedure TFrmQueryTop.SpbtnSaveClick(Sender: TObject);
begin
  inherited;
  PSaveCurrentNode();
end;
{*******************************************************************************
*          从数组中找到相应的记录 更新
*          用于过滤条件设 定 后的确认
*******************************************************************************}
procedure TFrmQueryTop.PFindarrayToEdit;
var
  I:integer;
  Str:String;
begin
  for I:=0 to High(raFZIDAndFilterSQL) do begin
      Str:=String(TrvQueryFilter.Items[iCurrentTrvFilterIndex].data^);
      if raFZIDAndFilterSQL[I].sFZID=Str then begin
         raFZIDAndFilterSQL[I].sFilterE:=MemoFilter.Text;
         raFZIDAndFilterSQL[I].sFilterSQL:=MemoFilterSQL.Text;
      end;      
  end;
end;  

procedure TFrmQueryTop.N1Click(Sender: TObject);
begin
  {**从数据库中提取数据**}
  PFilterSQLGetDBData();
end;

procedure TFrmQueryTop.N4Click(Sender: TObject);
begin
  inherited;
  PDelNldeToTrvFilter();
end;

procedure TFrmQueryTop.SpbtnDelClick(Sender: TObject);
begin
  inherited;
  PDelNldeToTrvFilter();
end;

procedure TFrmQueryTop.N7Click(Sender: TObject);
begin
  inherited;
  PSaveCurrentNode();
end;

procedure TFrmQueryTop.SpbtnExportClick(Sender: TObject);
begin
  if DgS_ExprotExecl.Execute then
     dxDBGrid1.SaveToXLS(DgS_ExprotExecl.FileName, True);
end;

{*******************************************************************************
*               ** 为了操作方便   TrvMoKuaiKeyDown
*               ActSaveCtrlSExecute   ActEditCtrlEExecute
*               TrvQueryFilterKeyDown
*******************************************************************************}
procedure TFrmQueryTop.TrvMoKuaiKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  inherited;
  {** 为了操作方便  回车就是双击 }
  
end;

procedure TFrmQueryTop.ActSaveCtrlSExecute(Sender: TObject);
begin
   PSaveCurrentNode();
end;
procedure TFrmQueryTop.ActEditCtrlEExecute(Sender: TObject);
begin
  N5.OnClick(Sender); 
end;
procedure TFrmQueryTop.TrvQueryFilterKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  if Key = 13  then TrvQueryFilter.OnDblClick(Sender); //回车
  if Key = 46  then SpbtnDel.OnClick(Sender);          //Delete 键
end;

procedure TFrmQueryTop.ActAddCtrlAExecute(Sender: TObject);
begin
  N3Click(Sender);
end;
{*******************************************************************************
*
*******************************************************************************}
procedure TFrmQueryTop.ActGetDataCtrlQExecute(Sender: TObject);
begin
  {***从数据库中提取数据***}
  PFilterSQLGetDBData();
end;
{*******************************************************************************
*                          数量不大 只加不删除
*******************************************************************************}
function TFrmQueryTop.FGetFilterArrayID: Integer;
var
  I:Integer;
begin
  for I:=0 to High(saFilter) do begin
      if Trim(saFilter[I]) = '' then begin
         Result:=I;
         Exit;
      end;
  end;
  Result:=0;
  DlgWarningA('系统过滤条件只能设置100个,如果需要更大的设置,请和供货商联系');
end;
{*******************************************************************************
*              初始话  查询调价过滤树的节点  把  X=1 +'  ' + FZID
*              FZID 转移到指针上   
*******************************************************************************}
procedure TFrmQueryTop.PInitFilterTree;
var
  I,K:integer;
  Str:String;
begin
  for I:=2 to TrvQueryFilter.Items.Count-1 do begin
      Str:=TrvQueryFilter.Items[I].Text;
      {**没有初始话指针的节点**}
      if MyCutString(False,Str) <> '' then  begin
         K:=FGetFilterArrayID();
         saFilter[K]:=MyCutString(False,Str);
         TrvQueryFilter.Items[I].Data:=@saFilter[K];
         TrvQueryFilter.Items[I].Text:=Trim(MyCutString(True,Str)); 
      end;
  end;   
end;
{*******************************************************************************
 *                 200304019  有错误的改动
*******************************************************************************}
procedure TFrmQueryTop.TrvQueryFilterClick(Sender: TObject);
begin
  if TrvQueryFilter.Selected = nil             then Exit;
  iCurrentTrvFilterIndex:=TrvQueryFilter.Selected.AbsoluteIndex;
end;

procedure TFrmQueryTop.SpbtnEditClick(Sender: TObject);
begin
  inherited;
  N5Click(Sender);
end;

procedure TFrmQueryTop.SpeedButton2Click(Sender: TObject);
begin
  inherited;
  
end;
{ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
*                          全部收缩
ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo}
procedure TFrmQueryTop.SpbtnFirstClick(Sender: TObject);
var
  TempNode:TdxTreeListNode;
begin
  //dxDBGrid1.FullCollapse;
  dxDBGrid1.GotoFirst; 
  Exit;
  {///保留做参考//}
  if not dxDBGrid1.DataSource.DataSet.Active then Exit;
  if dxDBGrid1.DataSource.DataSet.RecordCount <= 0 then Exit;  
  TempNode:=dxDBGrid1.Items[0]; // Collapse
  TempNode.Collapse(True);   
  while (True) do begin
     if TempNode = dxDBGrid1.LastNode then Exit;
     TempNode:=TempNode.GetNext;
     TempNode.Collapse(True);
  end;
end;
{ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
*                          全部展开
ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo}
procedure TFrmQueryTop.SpbtnLastClick(Sender: TObject);
var
  TempNode:TdxTreeListNode;
begin
  //dxDBGrid1.FullExpand;
  dxDBGrid1.GotoLast(True);  
  //下保留 做参考
  if not dxDBGrid1.DataSource.DataSet.Active then Exit;
  if dxDBGrid1.DataSource.DataSet.RecordCount <= 0 then Exit;
  TempNode:=dxDBGrid1.Items[0]; // Collapse
  TempNode.Expand(True);
  while (True) do begin
     if TempNode = dxDBGrid1.LastNode then Exit;
     TempNode:=TempNode.GetNext;
     TempNode.Expand(True);
  end;
end;


procedure TFrmQueryTop.SpbtnPrivorClick(Sender: TObject);
begin
  if not dxDBGrid1.DataSource.DataSet.Active then Exit;
  if dxDBGrid1.DataSource.DataSet.RecordCount <= 0 then Exit;
  dxDBGrid1.GotoPrev(False);
end;

procedure TFrmQueryTop.SpbtnNextClick(Sender: TObject);
begin
  if not dxDBGrid1.DataSource.DataSet.Active then Exit;
  if dxDBGrid1.DataSource.DataSet.RecordCount <= 0 then Exit;
  dxDBGrid1.GotoNext(False);
end;
{*******************************************************************************
*        给表格自动合计  只有是数字的就合计 总合计 分组小合计
oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
*        Acess的 货币型 不能检测到    20030422
*******************************************************************************}
procedure TFrmQueryTop.ActSetSumToGridExecute(Sender: TObject);
var
  I:Integer;
  TempType:TFieldType;
  tempgrp:TdxDBGridSummaryGroup;
  tempitem:TdxDBGridSummaryItem;
  sFDName:String;
begin
{*****************************************************************************}
 tempgrp:=dxDBGrid1.SummaryGroups.Add;
 tempgrp.DefaultGroup:=True;

 //**********Acess的 货币型 不能检测到***********************************
 for I:=0 to dxDBGrid1.ColumnCount-1 do begin     //**第一列 不算在里面**
     TempType:=dxDBGrid1.Columns[I].Field.DataType;
     sFDName:=dxDBGrid1.Columns[I].Field.FieldName;//**注意 FieldName***;
     if sFDName = 'FZINTID' then Continue;
     if  (temptype = ftInteger)  or (temptype = ftWord)  or
         (temptype = ftSmallint) or (temptype = ftFloat) or
         (temptype = ftCurrency) or (temptype = ftFloat)  then
         begin
           dxDBGrid1.Columns[I].SummaryFooterType:=cstSum;
           dxDBGrid1.Columns[I].SummaryFooterField:=sFDName;
           tempitem:=tempgrp.SummaryItems.Add;
           tempitem.SummaryType:=cstSum;
           tempitem.SummaryField:=sFDName;
           tempitem.ColumnName:=dxDBGrid1.Columns[I].Name;
         end;
 end;
{******************************************************************************}
end;
{ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
*           添加新的数据 对应的查询结果
*           1 首先 看是否允许添加数据  2 看是否有这个权限
*           --------------------------------------------
ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo}
procedure TFrmQueryTop.SPbtnNewDataClick(Sender: TObject);
begin
  inherited;
  //
end;
{ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
*         设置用户  查询模块 所有的 模块 减去没有的
*        -------------------------------------------
*         在选种 当前  sQueryFZID 的模块  
ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo}
procedure TFrmQueryTop.N8Click(Sender: TObject);
begin
  inherited;
  {**从数据库中提取数据**}
  PFilterSQLGetDBData();
end;

procedure TFrmQueryTop.MenuItem3Click(Sender: TObject);
begin
  inherited;
  dxDBGrid1.FullExpand;
end;

procedure TFrmQueryTop.MenuItem4Click(Sender: TObject);
begin
  inherited;
  dxDBGrid1.FullCollapse;
end;

procedure TFrmQueryTop.dxDBGrid1DblClick(Sender: TObject);
begin
  inherited;
  N5Click(Sender);
end;

end.

⌨️ 快捷键说明

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