以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 数据引用或窗体引用其他表数据的问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=110470) |
-- 作者:大庆 -- 发布时间:2017/12/4 10:04:00 -- 数据引用或窗体引用其他表数据的问题 问题如下,求教求教!!!! 1、 凭证表(序时账簿,包含各凭证分录数据)、明细账或余额表(查询生成) 2、凭证表序时账簿datatables有N多页,序时账簿tables每页只设成40行;在"明细账查询"是 希望点击 凭证号时 弹出《凭证窗口》,加载对应凭证数据内容 3、问题:当 “所选某凭证号” 的分录数据,只有序时账簿tables(当前页)显示时,凭证分录数据 加载正常,否则弹出的凭证窗口 不显示分录数据。 4、一直疑惑:以上数据引用弹出,提取 “数据源表”的问题是定位的问题吗,是否每次 引用“其他表数据”,需要将“其他表数据”进行筛选(即loadfilter)??? 加载(双击)的代码如下: If e.Col.Name = "凭证号" And e.Row.IsNull("凭证号") = False Then Dim tabname As String = CurrentTable.Name Dim dr As Row = Tables(tabname).Current Dim drr As DataRow = DataTables("序时账簿01").sqlFind("凭证编号= \'" & dr("凭证号") & "\'") If drr IsNot Nothing Then Forms("凭证").Opento("序时账簿01") Dim fbl As WinForm.Table = Forms("凭证").Controls("Table1") Dim tbl As Table = fbl.Table tbl.DataSource = DataTables("序时账簿01") tbl.SetColVisibleWidth("摘要|100|对方单位|120|项目名称|120|科目一级|80|科目明细|100|借方|90|贷方|90") tbl.Cols("科目明细").DropForm = "凭证科目选择" tbl.Filter = "凭证编号 = \'" & dr("凭证号") & "\'" Dim Drx As Double Dim Crx As Double drx = tbl.DataTable.SQLCompute("Sum(借方)","凭证编号=\'" & dr("凭证号") & "\'") crx = tbl.DataTable.SQLCompute("Sum(贷方)","凭证编号=\'" & dr("凭证号") & "\'") Dim LaDr As WinForm.Label = Forms("凭证").Controls("labJF") Dim LaCr As WinForm.Label = Forms("凭证").Controls("labDF") Dim Ddx As WinForm.Label = Forms("凭证").Controls("labDX") ladr.Text = format(drx,"C") lacr.Text = format(crx,"C") ddx.Text = "人民币: " & cumoney(drx) Dim bm As WinForm.Label = Forms("凭证").Controls("labbm") Dim rq As WinForm.Label = Forms("凭证").Controls("labrq") Dim vo As WinForm.Label = Forms("凭证").Controls("labvo") Dim zd As WinForm.Label = Forms("凭证").Controls("labzd") Dim sh As WinForm.Label = Forms("凭证").Controls("labsh") Dim Butnadd As WinForm.Button = Forms("凭证").Controls("Butnadd1") butnadd.Visible = False bm.Text = drr("部门单位") rq.Text = format(drr("日期"),"yyyy年MM月dd日") vo.Text = drr("凭证编号") |
-- 作者:有点甜 -- 发布时间:2017/12/4 10:11:00 -- 加入你只加载40行数据,你filter只能查找那40行的数据。
如果,你需要把所有数据显示出来,你要设置 LoadFilter 、LoadTop 、LoadPape 等的。
http://www.foxtable.com/webhelp/scr/1928.htm
|
-- 作者:大庆 -- 发布时间:2017/12/4 12:25:00 -- 版主意思是,我得先将 “指定的凭证号” 从 数据源(序时账簿表)中筛选(loadfilter)出来吗?? 即 在 tbl.Filter = "凭证编号 = \'" & dr("凭证号") & "\'"
之前, 添加 DataTables("序时账簿01").loadfilter = "凭证编号 = \'" & dr("凭证号") & "\'" 即 筛选加载到 tables("序时账簿01"),才行吗???
|
-- 作者:有点甜 -- 发布时间:2017/12/4 12:32:00 -- 这样写
DataTables("序时账簿01").loadtop = "" DataTables("序时账簿01").loadPage = 0 DataTables("序时账簿01").loadfilter = "凭证编号 = \'" & dr("凭证号") & "\'" DataTables("序时账簿01").load
|
-- 作者:大庆 -- 发布时间:2017/12/4 12:57:00 -- 哦,多谢版主。多谢!!! 此问题困扰好几天, 是不是, 本表(某行或若干行记录数据)在其他 场合(其他表,其他窗口)被引用或调用,是否 都得先对本表执行datatables加载(loadfilter) 动作(如你上述代码) 如此本表的tables才会有指定数据可被 引用调用? 如此是吗?? |
-- 作者:有点蓝 -- 发布时间:2017/12/4 14:18:00 -- 要先搞清楚Table.Filter和DataTable.LoadFilter的区分,前者是筛选用,后者是加载用 Table.Filter只能对已经加载的数据进行筛选 如果数据没有加载,是无法筛选的
|