Foxtable(狐表)用户栏目专家坐堂 → 导入excel 为什么会提示没有这个表呢?


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

主题:导入excel 为什么会提示没有这个表呢?

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
导入excel 为什么会提示没有这个表呢?  发帖心情 Post By:2021/5/20 2:04:00 [只看该作者]

参照论坛唐尸三白手的导入excel学习

图片点击可在新窗口打开查看此主题相关图片如下:动画111.gif
图片点击可在新窗口打开查看
为什么会提示没有这个表呢?麻烦老师帮忙看看  谢谢!

以下内容是专门发给有点蓝浏览




SelectedIndexChanged事件代码如下:

Dim c3 As WinForm.ComboBox = e.Form.Controls("ComboBox3")
If c3.value = ""  Then
    Return  
Else
    Dim r As Row
    Dim dc As  DataCol
    Dim dt As DataTable = DataTables(c3.value)  
    Dim t As Table = e.Form.Controls("Table1").Table
    Dim i As Integer
    Dim nms As String
    Dim Book As New XLS.Book(e.Form.Controls("TextBox1").value)
    Dim Sheet As XLS.Sheet = Book.Sheets(e.sender.value)
    t.StopRedraw
    t.DataTable.DataRows.clear
    For i = 0 To Sheet.Cols.count - 1
        r = t.AddNew()
        r("来源字段") = Sheet(0,i).Value
    Next
    For Each dc In dt.DataCols
        nms = nms & "|" & dc.name
        t.cols("接收字段").ComboList = nms
    Next
    t.ResumeRedraw 
End If

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/5/20 9:31:00 [只看该作者]

选择的表没有加载进来:http://www.foxtable.com/webhelp/topics/1812.htm

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)选择的表没有加载进来:http://www.f...  发帖心情 Post By:2021/5/20 10:20:00 [只看该作者]

方式一:
If e.DataTableName = "表C" Then
e.cancel = true
    e.Sel ectString = "Sel ect * From {表C} Where [_Identify] Is Null"
End If
方式二:
If DataTables.Contains("表C") = False Then '如果表C没有加载
    DataTables.Load("表C") '加载表C
End If

两个有没有实质性区别,用哪一个方式比较好些呢?

[此贴子已经被作者于2021/5/20 20:50:39编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/5/20 10:26:00 [只看该作者]

这2种方式完全就是不同的功能,用在不同的场合,一般结合一起用

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)这2种方式完全就是不同的功能,用在不...  发帖心情 Post By:2021/5/20 12:21:00 [只看该作者]

Dim c3 As WinForm.ComboBox = e.Form.Controls("ComboBox3")
If c3.value = ""  Then
    Return
Else
    Dim r As Row
    Dim dc As  DataCol
    Dim dt As DataTable = DataTables(c3.value)
    If DataTables.Contains(c3.value) = False Then '如果表C没有加载
        DataTables.Load(c3.value) '加载表C
    End If
    Dim t As Table = e.Form.Controls("Table1").Table
    Dim i As Integer
    Dim nms As String
    Dim Book As New XLS.Book(e.Form.Controls("TextBox1").value)
    Dim Sheet As XLS.Sheet = Book.Sheets(e.sender.value)
    t.StopRedraw
    t.DataTable.DataRows.clear
    For i = 0 To Sheet.Cols.count - 1
        r = t.AddNew()
        r("来源字段") = Sheet(0,i).Value
    Next
    For Each dc In dt.DataCols
        nms = nms & "|" & dc.name
        t.cols("接收字段").ComboList = nms
    Next
    t.ResumeRedraw
End If

这样使用还是提示1楼一样的错误!



If e.DataTableName = "表C" Then
e.cancel = True
    e.Sel ectString = "Sel ect * From {表C} Where [_Identify] Is Null"
End If
这个代码如果直接用在按钮执行代码   是不行的额   有没有办法变通呢?


提前:当前系统中没有对应提前加载相关表C,属于后续自定义选择导入,有可能是表F或者是表G甚至是未知表。
有没有办法在不提前加载数据表的情况下,通过这样的方式加载表并可以执行后续数据导入功能呢?

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/5/20 13:34:00 [只看该作者]

1、要先添加到外部表管理:http://www.foxtable.com/webhelp/topics/1812.htm
2、写代码禁止初始加载:http://www.foxtable.com/webhelp/topics/0670.htm

建议把动态加载这章内容完整过一遍

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)1、要先添加到外部表管理:http://ww...  发帖心情 Post By:2021/5/20 17:54:00 [只看该作者]

外部表管理  怎么用代码进行添加呢?而不是在开发过程中  预先添加后续使用   
想实现代码即时添加  随机添加不同的表    
也就是说在数据源目标端是存在这个表的  但是需要将数据导入到目标端的时候   项目里面肯能没有提前加载或者添加这个外部表  

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/5/20 20:14:00 [只看该作者]

外部表管理无法使用代码进行添加。

如果要操作没有加载的后台数据库表,只能使用SQLCommand:http://www.foxtable.com/webhelp/topics/0696.htm

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)外部表管理无法使用代码进行添加。如...  发帖心情 Post By:2021/5/20 20:50:00 [只看该作者]


运行效果如下:提示找不到表单  麻烦老师帮忙看看 谢谢

图片点击可在新窗口打开查看此主题相关图片如下:动画111.gif
图片点击可在新窗口打开查看
Dim c3 As WinForm.ComboBox = e.Form.Controls("ComboBox3")
Dim c2 As WinForm.ComboBox = e.Form.Controls("ComboBox2")
If c3.value = ""  Then
    Return
Else
    
    Dim dt As DataTable
    Dim cmd As New SQLCommand
    cmd.ConnectionName = c2.value
    cmd.CommandText = "SEL ECT * From {" & c3.value & "} Where [_Identify] Is Null"
    dt = cmd.ExecuteReader()
    
    Dim r As Row
    Dim dc As  DataCol
    'Dim dt As DataTable = DataTables(c3.value)
    If DataTables.Contains(c3.value) = False Then '如果表C没有加载
        MessageBox.Show("1")
        DataTables.Load(c3.value) '加载表C
    End If
    Dim t As Table = e.Form.Controls("Table1").Table
    Dim i As Integer
    Dim nms As String
    Dim Book As New XLS.Book(e.Form.Controls("TextBox1").value)
    Dim Sheet As XLS.Sheet = Book.Sheets(e.sender.value)
    t.StopRedraw
    t.DataTable.DataRows.clear
    For i = 0 To Sheet.Cols.count - 1
        r = t.AddNew()
        r("来源字段") = Sheet(0,i).Value
    Next
    For Each dc In dt.DataCols
        MessageBox.show(dc.name)  不弹值
        nms = nms & "|" & dc.name
        t.cols("接收字段").ComboList = nms
    Next
    t.ResumeRedraw
End If

 回到顶部
帅哥,在线噢!
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/5/20 20:54:00 [只看该作者]

去掉下面代码

    If DataTables.Contains(c3.value) = False Then '如果表C没有加载
        MessageBox.Show("1")
        DataTables.Load(c3.value) '加载表C
    End If

 回到顶部
总数 14 1 2 下一页