以文本方式查看主题

-  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只能对已经加载的数据进行筛选

如果数据没有加载,是无法筛选的