以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  SQLTable表  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=128868)

--  作者:lfz123
--  发布时间:2018/12/17 10:54:00
--  SQLTable表
请教老师:我在窗口新建了一个表,有一个步骤没有出来结果,不知道设计思路是否正确?

此主题相关图片如下:表设计1.png
按此在新窗口浏览图片

窗口表事件 第二步

 

收款通知单_Table1_DataColChanged  这一步未实现

 

If e.DataCol.name = "工程发票消账码" Then

    Dim dr1 As DataRow = DataTables("销项发票").Find("工程发票消帐码 = \'"& e.datarow("工程发票消帐码") & "\'")

    e.DataRow("公司名称") = dr1("发票抬头")

    e.DataRow("工程名称") = dr1("工程名称")

    e.DataRow("领用人") = dr1("领用人")

    e.DataRow("发票日期") = dr1("发票日期")

    e.DataRow("发票金额") = DataTables("销项发票").compute("sum(价税合计)","工程发票消帐码 = \'"& e.datarow("工程发票消帐码") & "\'")

End If

 

窗口与控件事件  第一步

 

收款通知单_AfterLoad  这一步已经实现了

 

Dim dtb As New DataTableBuilder("B")

dtb.AddDef("公司名称", Gettype(String), 50)

dtb.AddDef("工程名称", Gettype(String), 50)

dtb.AddDef("领用人", Gettype(String), 50)

dtb.AddDef("发票日期", Gettype(Date))

dtb.AddDef("发票金额", Gettype(Double))

dtb.AddDef("收款日期", Gettype(Date))

dtb.AddDef("收款金额", Gettype(Double))

dtb.AddDef("未收款", Gettype(Double))

dtb.AddDef("工程发票消帐码", Gettype(String), 50)

Tables("收款通知单_table1").DataSource = dtb.BuildDataSource

Dim str As String = CurrentTable.current("工程发票消账码")

Dim r As Row = Tables("收款通知单_table1").addnew

r("工程发票消帐码") = str



--  作者:有点甜
--  发布时间:2018/12/17 11:04:00
--  

当使用 Tables("收款通知单_table1").DataSource  绑定表的时候,这个表是副本表,而不是sqltable表。

 

所以你的代码,需要写到【全局表事件】http://www.foxtable.com/webhelp/scr/0671.htm

 

而且需要开启全局表事件,如 Tables("收款通知单_table1").DataTable.GlobalHandler.DataColChanged = True


--  作者:lfz123
--  发布时间:2018/12/17 11:36:00
--  回复:(有点甜)当使用 Tables("收款通知单_table1")...
Tables("收款通知单_table1").DataTable 的 name 是什么啊,我这个只是生成的一个临时表,并没有绑定到任何表啊?因为在全局表事件中写代码要判断表名

由于全局表事件对所有表有效,而不同的表可能有不同的处理逻辑,需要不同的事件代码,所以通常需要在全局表事件中判断表名:

Select Case e.DataTable.Name 
    Case 
"表A"
        
\'针对表A的代码
    Case 
"表B"
        
\'针对表B的代码
    Case 
"表C"
        
\'针对表C的代码
End Select


--  作者:有点甜
--  发布时间:2018/12/17 12:10:00
--  

1、你msgbox弹出看一下不就直达了?

 

2、一般叫做【收款通知单_table1】或者【表B】。


--  作者:lfz123
--  发布时间:2018/12/17 14:10:00
--  回复:(有点甜)1、你msgbox弹出看一下不就直达了?...
我按照老师的要求做了,结果没出来,麻烦老师在帮我看下,我自己加了一个打开表的判断,不然老是有一个报错提示

图片点击可在新窗口打开查看此主题相关图片如下:表设计4.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:表设计3.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:表设计2.png
图片点击可在新窗口打开查看



--  作者:有点甜
--  发布时间:2018/12/17 15:25:00
--  

1、加入msgbox(e.datatable.name)弹出表名

 

2、开启事件,写在这里

 

Tables("收款通知单_table1").DataSource = dtb.BuildDataSource
Tables("收款通知单_table1").DataTable.GlobalHandler.DataColChanged = True