T201905290136 笔记(TDBGridEh用法)

1 实现效果
2 任务中的某某模块,在系统中找不到
3 一个SQL
4 TDBGridEh用法
5 联动删除
6 一次插入多条数据
7 输入参数控制

1 实现效果

T201905290136 笔记(TDBGridEh用法)_第1张图片
A页面
T201905290136 笔记(TDBGridEh用法)_第2张图片
B页面
T201905290136 笔记(TDBGridEh用法)_第3张图片
联动删除,权限控制

文字描述:

  • A页面被点击,出现B页面,且B页面和A页面一样展示DBGrid(页面复制,跳转调用);
  • B页面中的DBGrid可编辑;
  • 联动删除,权限控制;

2 任务中的某某模块,在系统中找不到

1、确定增值模块是否有权限

select * from tsys_module where vc_name like '%XXXX%';
在这个模块中L_VOID的值是0
image.png

2、权限设置是否有权限


T201905290136 笔记(TDBGridEh用法)_第4张图片
image.png

3、确定KHDM是否有权限


image.png
select * from txtcs where vc_csdm = 'KHDM';
update txtcs set vc_csz = '10757' where vc_csdm = 'KHDM';
commit;

3 一个SQL

A表和B表具有相同的3个字段(可作为连接条件),A表比B多一个L_CFBL字段,B表比A多一个VC_FJJB字段,现需要将B表的VC_FJJB字段连接到查询结果中,如下图C表。


T201905290136 笔记(TDBGridEh用法)_第5张图片
A表

T201905290136 笔记(TDBGridEh用法)_第6张图片
B表

T201905290136 笔记(TDBGridEh用法)_第7张图片
C表
select a.L_ZTBH,a.VC_FJJJDM,a.VC_FJJJMC,a.l_cfbl from tfjjjcfbl a where a.l_ztbh = 700002;

select b.L_ZTBH,b.VC_JJDM,b.VC_FJJJDM,b.VC_FJJJMC,b.vc_fjjb from TJJXSFL b where b.l_ztbh = 700002;

select b.L_ZTBH,b.VC_JJDM,b.VC_FJJJDM,b.VC_FJJJMC,b.vc_fjjb,a.L_CFBL from TJJXSFL b,tfjjjcfbl a 
where b.l_ztbh(+) = a.l_ztbh and b.vc_fjjjdm(+) = a.vc_fjjjdm and a.l_ztbh in (700002); 

select b.L_ZTBH,b.VC_JJDM,b.VC_FJJJDM,b.VC_FJJJMC,b.vc_fjjb,a.L_CFBL from TJJXSFL b,tfjjjcfbl a 
where b.l_ztbh = a.l_ztbh and b.vc_fjjjdm = a.vc_fjjjdm and a.l_ztbh in (700002);

select b.L_ZTBH,b.VC_JJDM,b.VC_FJJJDM,b.VC_FJJJMC,b.vc_fjjb,a.L_CFBL from TJJXSFL b,tfjjjcfbl a 
where b.l_ztbh = a.l_ztbh and b.vc_fjjjdm = a.vc_fjjjdm and b.l_ztbh in (700002); 

主要涉及知识点:右连接(+),匹配规则。

右连接:遍历t表,(1)将t表中所有与a表中l_ztbh相等的字段取出,(2)将t表中所有与a表中l_ztbh相等的字段取出vc_fjjjdm取出,然后使用a表匹配。即将a表中L_CFBL字段填充至满足(1)(2)条件的结果中。如下图。

T201905290136 笔记(TDBGridEh用法)_第8张图片
匹配过程
T201905290136 笔记(TDBGridEh用法)_第9张图片
image.png

4 TDBGridEh用法

(1)TDBGridEh中的cell可编辑,效果


T201905290136 笔记(TDBGridEh用法)_第10张图片
image.png

需要做如下设置:

  • TDBGridEh中的Options属性中的,第一个属性dgEdting设置为可True,如图1;
  • TDBGridEh的ReadOnly设置为False,如图2;
  • TDBGridEh中的字段,不需要编辑的设置为False,需要的设置为True,如图3,4;
T201905290136 笔记(TDBGridEh用法)_第11张图片
图1
T201905290136 笔记(TDBGridEh用法)_第12张图片
图2
T201905290136 笔记(TDBGridEh用法)_第13张图片
图3
T201905290136 笔记(TDBGridEh用法)_第14张图片
图4

5 联动删除

T201905290136 笔记(TDBGridEh用法)_第15张图片
image.png

效果描述:
勾选任意一个分级基金记录时,系统要联动勾选该账套的其他分级基金记录。

具体实现
1、TADODateSet用法

ADOList.First;
ADOList.Next;
ADOList.FindField('L_ZTBH').AsInteger

2、多选效果
(1)加列,修改属性,默认值是1, 0(即1为选中,0不选中)


T201905290136 笔记(TDBGridEh用法)_第16张图片
image.png

(2)SQL中对应变化,加入0 xz(即默认不选中)

select 0 xz from tfjjjcfbl

(3)控制表格某列被点击事件,实现方法


T201905290136 笔记(TDBGridEh用法)_第17张图片
image.png
procedure TFormPTFJSplitScale.ListFrame1DBGridEh1CellClick(
  Column: TColumnEh);

TColumnEh指的是点击的列。

(4)通过操控dateSet实现,联动多选,注意ADOList.First的位置。

if Assigned(rs) and (rs.RecordCount > 0) then
    begin
      if Column.FieldName = 'XZ' then
      ADOList.First;
      begin
        if Column.Field.Value = 0 then
        begin
          for I:=0 to rs.RecordCount do
          begin
            Column.Field.DataSet.Edit;
            Column.Field.Value := 1;
            Column.Field.DataSet.Post;
            ADOList.Next;
          end;
        end
        else if Column.Field.Value = 1 then
        begin
          for I:=0 to rs.RecordCount do
          begin
            Column.Field.DataSet.Edit;
            Column.Field.Value := 0;
            Column.Field.DataSet.Post;
            ADOList.Next;
          end;
        end;
      end;
    end
    else
    begin
      exit;
    end;

while - do

while not ADOList.Eof do
begin
//处理逻辑如上
end;
T201905290136 笔记(TDBGridEh用法)_第18张图片
image.png

6 一次插入多条数据

(1)前台控制,主要通过操作ADOList,拼接所需参数sParam

function TFormPTFJSplitScale_add.PTFJSplitScale_addInsert: Boolean;
var
  iResult: integer;
  sData: OleVariant;
  sParam,sError: WideString;
  cfbl: string; //拆分比例
begin
   sParam := '';
   ADOList.First;
   while not ADOList.Eof do
   begin
     cfbl := ADOList.FieldByname('L_CFBL').AsString;
     sParam := sParam+format('',[ADOList.FieldByname('VC_FJJJDM').AsString,ADOList.FieldByname('VC_FJJJMC').AsString,ADOList.FieldByname('L_CFBL').AsString]);
     ADOList.Next;
   end;
   if sParam = '' then
   begin
      hsmsgbox('请选择科目','提示',MB_ICONINFORMATION+MB_OK);
      exit;
   end;

   sParam := format('',[ztbh])+sParam+'';
   iResult := BussinessMethod('PTFJSplitScaleAdd_Add', sParam, sData, sError);
   if (iResult<0) then
   begin
    hsMsgBox(sError, '插入失败', MB_ICONWARNING+MB_OK);
    Exit;
   end;
   Result := true;
end;

(2)后台,通过Item控制循环插入


        
        
        
        
             
        
            delete from tfjjjcfbl where l_ztbh = @ztbh
        
        
            insert into tfjjjcfbl(L_ZTBH,VC_FJJJMC,VC_FJJJDM,L_CFBL)
               values(@ztbh,'@jjmc','@jjdm',@cfbl)
        
        
        

7 输入参数控制(只允许输入数字)

效果如图

strtofloat(Value)
T201905290136 笔记(TDBGridEh用法)_第19张图片
image.png

End~

你可能感兴趣的:(T201905290136 笔记(TDBGridEh用法))