以文本方式查看主题

-  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=122822)

--  作者:aza520
--  发布时间:2018/8/2 16:44:00
--  SQLTable的加载问题
设以下代码,在打开项目的时候显示不存在DataTables("劳务人员工资发放记录表_Table1"),"劳务人员工资发放记录表_Table1"是窗口中的SQLTable,请老师指导一下


在LoadUserSetting事件设下列代码:

If User.Name = "开发者" Or User.Name = "管理员" Then
    DataTables("劳务人员工资发放记录表_Table1").LoadFilter = ""
Else
    DataTables("劳务人员工资发放记录表_Table1").LoadFilter = "承包人机构 in (\'" & User.Roles.replace(",","\',\'") & "\') or 监理机构 in (\'" & User.Roles.replace(",","\',\'") & "\')  or 业主机构 in (\'" & User.Roles.replace(",","\',\'") & "\') or 劳务队负责人 in (\'" & User.Roles.replace(",","\',\'") & "\')"
End If
DataTables("劳务人员工资发放记录表_Table1").LoadTop = 10
DataTables("劳务人员工资发放记录表_Table1").LoadPage = 0
DataTables("劳务人员工资发放记录表_Table1").LoadOver = "_Identify"
DataTables("劳务人员工资发放记录表_Table1").Load
Tables("劳务人员工资发放记录表_Table1").sort="工资所属月份"
Tables("劳务人员工资发放记录表_Table1").sort="工种"

AfterOpenProject事件设下列代码:
With DataTables("劳务人员工资发放记录表_Table1")
    .LoadFilter = "" \'一定要清除加载条件
    .LoadTop = 10
    .LoadPage = 0
    .LoadOver = "_Identify"
    .Load()
End With
Tables("劳务人员工资发放记录表_Table1").sort="工资所属月份"

--  作者:aza520
--  发布时间:2018/8/2 16:59:00
--  
BeforeLoadOuterTable设如下代码


If e.DataTableName = "劳务人员工资发放记录表_Table1" Then
    e.SelectString = "Selec t * Fro m {劳务人员工资发放记录表} Where [_Identify] Is Null"
End If

--  作者:有点甜
--  发布时间:2018/8/2 17:13:00
--  

设置之前,先判断表格是否存在。窗口表,是窗口打开后才生成的。

 

If DataTables.Contains("劳务人员工资发放记录表_Table1") Then

    DataTables("劳务人员工资发放记录表_Table1").LoadFilter = ""

End If


--  作者:aza520
--  发布时间:2018/8/2 17:25:00
--  
是替换BeforeLoadOuterTable的以下代码吗


If e.DataTableName = "劳务人员工资发放记录表_Table1" Then
    e.SelectString = "Selec t * Fro m {劳务人员工资发放记录表} Where [_Identify] Is Null"
End If

--  作者:aza520
--  发布时间:2018/8/2 17:31:00
--  
在窗口中做了一个刷新加载树的按钮Button5,设如下代码。显示如下错误
.NET Framework 版本:2.0.50727.8831
Foxtable 版本:2017.12.18.1
错误所在事件:窗口,劳务人员工资发放记录表,Button5,Click
详细错误信息:
未将对象引用设置到对象的实例。


Syscmd.Project.Save()

DataTables("劳务人员工资发放记录表_Table1").LoadTop= 10
DataTables("劳务人员工资发放记录表_Table1").LoadPage = 0
DataTables("劳务人员工资发放记录表_Table1").LoadOver = "_Identify"
DataTables("劳务人员工资发放记录表_Table1").LoadReverse = True
DataTables("劳务人员工资发放记录表_Table1").Load()
Tables("劳务人员工资发放记录表_Table1").sort="工资所属月份"

If User.Name = "开发者" Or User.Name = "管理员" Then
    Dim cmd As New SQLCommand
    Dim dt As DataTable
    cmd.C
    cmd.CommandText = "SELEC T DISTINCT 项目名称,施工合同段,劳务队名称,工资所属月份 Fro m {劳务人员工资发放记录表}"
    dt = cmd.ExecuteReader()
    Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
    trv.BuildTree(dt,"项目名称|施工合同段|劳务队名称|工资所属月份")
    trv.Nodes.Insert("加载所有数据",0)
Else
    Dim cmd As New SQLCommand
    Dim dt As DataTable
    cmd.C
    cmd.CommandText = "SELEC T DISTINCT 项目名称,施工合同段,劳务队名称,工资所属月份  Fro m {劳务人员工资发放记录表} where 承包人机构 in (\'" & User.Roles.replace(",","\',\'") & "\') or 监理机构 in (\'" & User.Roles.replace(",","\',\'") & "\')  or 业主机构 in (\'" & User.Roles.replace(",","\',\'") & "\') or 劳务队负责人 in (\'" & User.Roles.replace(",","\',\'") & "\')"
    dt = cmd.ExecuteReader()
    
    Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
    trv.BuildTree(dt,"项目名称|施工合同段|劳务队名称|工资所属月份")
    trv.Nodes.Insert("加载所有数据",0)
End If
e.Form.Controls("TextBox5").Value = 1 & "/" & DataTables("劳务人员工资发放记录表_Table1").TotalPages
vars("劳务人员工资发放记录表filter") = DataTables("劳务人员工资发放记录表_Table1").LoadFilter

--  作者:aza520
--  发布时间:2018/8/2 17:42:00
--  
搞清楚了,谢谢


--  作者:有点甜
--  发布时间:2018/8/2 17:44:00
--  
以下是引用有点甜在2018/8/2 17:13:00的发言:

设置之前,先判断表格是否存在。窗口表,是窗口打开后才生成的。

 

If DataTables.Contains("劳务人员工资发放记录表_Table1") Then

    DataTables("劳务人员工资发放记录表_Table1").LoadFilter = ""

End If

 

替换你LoadUserSetting事件的某些代码啊,看懂红色代码


--  作者:有点甜
--  发布时间:2018/8/2 17:47:00
--  

删除这个代码,看是否还报错?

 

trv.Nodes.Insert("加载所有数据",0)