Foxtable(狐表)用户栏目专家坐堂 → 未找到类型“Table”的公共成员“DataSource”。


  共有1622人关注过本帖树形打印复制链接

主题:未找到类型“Table”的公共成员“DataSource”。

帅哥哟,离线,有人找我吗?
蓝蚂蚁
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:672 积分:7861 威望:0 精华:0 注册:2016/6/11 11:10:00
未找到类型“Table”的公共成员“DataSource”。  发帖心情 Post By:2019/10/17 15:53:00 [只看该作者]

窗口中有一按钮,其代码如下:

Dim s1 As String=e.Form.controls("TextBox7").text
If s1<>"" Then
    If  Tables.Contains("前计划未送临时表")=True Then
        DataTables("前计划未送临时表").DataRows.Clear
        e.Form.controls("Table3").Table.DataSource = DataTables("前计划未送临时表")
    Else
        Dim dt As New DataTableBuilder("前计划未送临时表")
        dt.AddDef("计划日期", Gettype(Date))
        dt.AddDef("中标号或编号", Gettype(String),12)
        dt.AddDef("通用名称", Gettype(String), 50)
        dt.AddDef("规格型号", Gettype(String), 50)
        dt.AddDef("生产企业", Gettype(String), 50)
        dt.AddDef("单位", Gettype(String), 6)
        dt.addDef("相差辅助列", Gettype(Integer))
        dt.addDef("配送公司", Gettype(String), 30)
        dt.build()
        e.Form.controls("Table3").DataSource =dt.build()
    End If
    Dim Filter As String
    Filter ="isnull([数量],0)<>isnull([来货数量],0)"
    If e.form.controls("Table2").Table.DataTable.DataCols.Contains("相差辅助列")=False  Then
        e.form.controls("Table2").Table.DataTable.DataCols.Add("相差辅助列", Gettype(Integer))
    End If
    Dim krk As String =e.Form.Controls("TextBox7").Text '入库日期
    Dim zrk As String =e.Form.Controls("TextBox8").Text
    Dim d1 As Date
    Dim d2 As Date
    If krk<>""  Then
        If   krk.Length=8 Then
            d1 = new Date(krk.SubString(0,4), krk.SubString(4,2), krk.SubString(6,2))  '具体到某天开始
        ElseIf krk.Length=6
            d1 = new Date(krk.SubString(0,4), krk.SubString(4,2), 1)   '月份的第一天开始
        ElseIf krk.Length=4
            d1 = new Date(krk.SubString(0,4),1, 1)   '月份的第一天开始
        End If
    End If
    If krk="" Then
        zrk =""
    Else
        If zrk<>"" Then
            If   zrk.Length=8 Then
                d2 = new Date(zrk.SubString(0,4), zrk.SubString(4,2),zrk.SubString(6,2)) '具体到某天开始
                d2=d2.adddays(1)
            ElseIf zrk.Length=6
                d2 = new Date(zrk.SubString(0,4), zrk.SubString(4,2), 1) '月份的第一天开始
                d2=d2.addmonths(1)
            ElseIf zrk.Length=4
                d2 = new Date(zrk.SubString(0,4),1, 1) '月份的第一天开始
                d2=d2.addyears(1)
            End If
        Else
            If   krk.Length=8 Then
                d2=d1.adddays(1)
            ElseIf krk.Length=6
                d2=d1.addmonths(1)
            ElseIf krk.Length=4
                d2=d1.addyears(1)
            End If
        End If
    End If
    If krk<>"" Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "(计划日期>=#" & d1 & "# and 计划日期<#" & d2 & "#)"
    End If
    With e.Form.Controls("DropBox1")
        If .Value IsNot Nothing Then
            If Filter > "" Then
                Filter = Filter & " And "
            End If
            Filter = Filter & "配送公司 Like '%" & .Value & "%'"
        End If
    End With
   
    Dim t As Table=e.Form.controls("Table2").Table
    t.filter=filter
    Dim dcs As List(Of DataRow) =DataTables("采购计划总表").Select(t.filter)
    For Each dc As DataRow In dcs
        If dc("相差")=Nothing Then
            dc("相差辅助列")=-dc("数量")
        ElseIf dc("相差")<0
            dc("相差辅助列")=dc("相差")
        End If
    Next
    e.form.controls("Table2").Table.Cols("相差辅助列").visible=True
    e.form.controls("Table2").Table.Cols("相差辅助列").Move(13)
    t.Filter =(iif(t.filter>"", t.filter, "1=1") & " And  相差辅助列 Is not null")
    Dim drs As List(Of DataRow) =e.Form.controls("Table2").Table.DataTable.Select(t.filter)
    For Each dr As DataRow In drs
        Dim r As DataRow= DataTables("前计划未送临时表").AddNew()
        'r("登记日期")=Today()
        r("计划日期")=dr("计划日期")
        r("中标号或编号")=dr("中标号或编号")
        r("通用名称")=dr("通用名称")
        r("规格型号")=dr("规格型号")
        r("生产企业")=dr("生产企业")
        r("单位")=dr("单位")
        r("相差辅助列")=dr("相差辅助列")
        r("配送公司")=dr("配送公司")
    Next
   
    e.Form.controls("Table3").Table.AutoSizeCols()
    Forms("某计划未发登记主窗口").Controls("TabControl1").SelectedIndex = 2
Else
    MessageBox.Show("开始日期未填写,故未能生成数据!","提示")
End If

打开项目后,第一次点击这个按钮提示:

.NET Framework 版本:4.0.30319.1
Foxtable 版本:2019.6.18.1
错误所在事件:窗口,某计划未发登记主窗口,Button6,Click
详细错误信息:
未找到类型“Table”的公共成员“DataSource”。

X掉提示错误窗口后,再次点击这个按钮则能正常生成数据,何解?


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105470 积分:536335 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/17 15:55:00 [只看该作者]

 Else
        Dim dt As New DataTableBuilder("前计划未送临时表")
        dt.AddDef("计划日期", Gettype(Date))
        dt.AddDef("中标号或编号", Gettype(String),12)
        dt.AddDef("通用名称", Gettype(String), 50)
        dt.AddDef("规格型号", Gettype(String), 50)
        dt.AddDef("生产企业", Gettype(String), 50)
        dt.AddDef("单位", Gettype(String), 6)
        dt.addDef("相差辅助列", Gettype(Integer))
        dt.addDef("配送公司", Gettype(String), 30)
        ‘’dt.build() ‘去掉’
        e.Form.controls("Table3").DataSource =dt.buildDataSource()
    End If

 回到顶部