以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]关于数据填充器的填充条件Filter  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=1657)

--  作者:舜风
--  发布时间:2009/1/18 17:26:00
--  [求助]关于数据填充器的填充条件Filter
请高人指点以下两个问题:

1、如果表A“ 姓名”=表B“姓名” 那么如何将表B中的相关内容填充到与姓名对应的表A中?

2、如何将表C中“状态”=“离去”的数据填充至表A中?

请不用关联方式解答:)
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table

[此贴子已经被作者于2009-1-18 18:10:12编辑过]

--  作者:菜鸟foxtable
--  发布时间:2009/1/18 17:35:00
--  
做个示例看看
--  作者:舜风
--  发布时间:2009/1/18 18:11:00
--  
示例已上传

填充器里的填充条件Filter  如何设置?  
[此贴子已经被作者于2009-1-18 18:12:40编辑过]

--  作者:菜鸟foxtable
--  发布时间:2009/1/18 18:33:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table

问题一:在表A的AfterEdit里
If e.Col.Name <> "姓名" Then
    Return
End If
If e.Row.IsNull("姓名") Then
    e.Row("工作时间") = Nothing
    e.Row("学历") = Nothing
    e.Row("人员来源") = Nothing
    Return
End If
Dim dr As DataRow
dr = DataTables("表B").Find("[姓名] = \'" & e.Row("姓名") & "\'")
If dr IsNot Nothing Then
    e.Row("工作时间") = dr("工作时间")
    e.Row("学历") = dr("学历") \'
    e.Row("人员来源") = dr("人员来源")
End If


问题二:由于表A没有状态列,无法填充...
--  作者:舜风
--  发布时间:2009/1/18 18:55:00
--  
1、明白老“老菜”的用法,不过我只想用按键,并以数据填充器方式设置按键事件来完成任务

2、表A是没有状态列,不过我本想通过判断:表C状态列来筛远数据的方式来完成数据填充(如果数据填充器能通过填充条件)

这样做的目的是:表A需要通个N多的相关表才能使数据完善,且相关表中的数据也常有变化(包括姓名列),如果采用全代码(或逻辑列),会出现有时本不需要更改表A,却因e事件或一不小心刷新相关列而造成表A数据更新(改变) 。如果选择按键填充方式,更可以有选择的更新表A中的数据。
[此贴子已经被作者于2009-1-18 18:58:51编辑过]

--  作者:菜鸟foxtable
--  发布时间:2009/1/18 19:04:00
--  

可能我的理解力低,还是看不明白你要实现的功能.


--  作者:舜风
--  发布时间:2009/1/18 19:07:00
--  
请参考说明书中的:数据填充器
--  作者:舜风
--  发布时间:2009/1/18 20:59:00
--  
谁能帮解释一下

数据填充器 Filler 属性 .Filter( 填充条件)的设置方法?




--  作者:菜鸟foxtable
--  发布时间:2009/1/18 21:34:00
--  

属性:

  • SourceTable

    数据来源表。
     
  • SourceCols

    数据来源列,不同的列用逗号分割。
     
  • DataTable

    数据接收表。
     
  • DataCols

    数据接收列,不同的列用逗号分割。
     
  • ExcludeExistValue

    逻辑型,设为True,排除接收表中已经存在的内容。
     
  • ExcludeNullValue

    逻辑型,设为True,排除空白值。
     
  • Filter

    填充条件。
     
  • Distinct

    逻辑型,是否排除重复内容,默认为True;如果设为False,将不会排除重复内容,也不会排除已有内容和空白值。
     
  • Append

    逻辑型,默认为True,在接收表中增加新行用于接收数据,设为False,则在原有的行中填充,如果不够再增加新行。


    示例:Filter基本上也就是一个设置过滤条件表达式的样子.

    Dim Cz As DataTable = DataTables("长嘱")
    mk = "[住院ID] = \'" & str2 & "\'"

    dim f As New Filler
    f.SourceTable = Cz \'指定数据来源
    f.SourceCols = "住院ID,类别,项目,规格,单位,单价,总用量,金额"\'指定数据来源列
    f.DataTable = DataTables("清单0")\'指定数据接收表
    f.DataCols = "住院ID,类别,项目,规格,单位,单价,用量,小计"\'指定数据接收列
    f.Filter  = mk\'填充条件    这一行可以理解为f.Filter = 某个条件...比如:f.Filter = "[姓名]= \'A\'"
    f.Distinct =False
    f.Fill()\'填充数据
[此贴子已经被作者于2009-1-18 22:10:21编辑过]

--  作者:舜风
--  发布时间:2009/1/18 21:59:00
--  

非常感谢老菜。图片点击可在新窗口打开查看(我试过f.Filter = [姓名]= \'A\'  却没有加个双引号)图片点击可在新窗口打开查看