Foxtable(狐表)用户栏目专家坐堂 → 数据源临时表问题


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

主题:数据源临时表问题

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


加好友 发短信
等级:小狐 帖子:389 积分:3886 威望:0 精华:0 注册:2016/4/25 17:36:00
数据源临时表问题  发帖心情 Post By:2019/10/24 14:13:00 [只看该作者]

我有一个窗口,需要导入excel到表里,但是只有第一次是成功的,后面同样的按钮紧接着再接着导入,会出现问题,说是找不到临时表
Dim dlg As New OpenFileDialog
dlg.MultiSelect = False
dlg.Filter= "模板文件|*.xls;*.xlsx" '设置筛选器
dlg.InitialDirectory = SpecialFolder.DesktopDirectory '初始目录
If dlg.ShowDialog = DialogResult.OK Then 
    If Connections.Contains("临时连接") Then  '连接要导入的Excel
        If DataTables.Contains("临时表") Then DataTables.Unload("临时表")
        Connections.Delete("临时连接")
    End If
    Connections.Add("临时连接", "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dlg.FileName & ";Extended Properties='Excel 8.0;HDR=yes'")
    '--------接下来把所有的数据导入到临时表里----------------------
    Dim q As new QueryBuilder
    q.C
    q.TableName = "临时表"
    q.SelectString = "S elect * fr om [Sheet1$]"
    q.Build
    Dim t As Table = e.Form.Controls("Table1").Table
    If DataTables.Contains("临时表")
        t.DataSource = DataTables("临时表")
    Else
        
    End If
End If

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


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

测试没有问题哦。上传实例说明

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


加好友 发短信
等级:小狐 帖子:389 积分:3886 威望:0 精华:0 注册:2016/4/25 17:36:00
  发帖心情 Post By:2019/10/24 16:18:00 [只看该作者]

邪门了,我单独用这段代码做测试准备上传,是没问题的,但是在我的项目里就不行了,因为我的项目很大,没法上传,这是啥道理?
想了一下,没啥变化的啊,就是我本身用的主连接是连的数据库的,不是这个临时的,窗口是独立的,就这点区别啊

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


加好友 发短信
等级:小狐 帖子:389 积分:3886 威望:0 精华:0 注册:2016/4/25 17:36:00
  发帖心情 Post By:2019/10/24 16:58:00 [只看该作者]

老师,有没有办法能遍历DataTables以哪些字符开头的所有的DataTables表?
例如找到所有以"临时表_"开头的所有表?
DataTables.Contains("临时表")怎么写?

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


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

for each dt as datatable in DataTables
if dt.name like "临时表_*"

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


加好友 发短信
等级:小狐 帖子:389 积分:3886 威望:0 精华:0 注册:2016/4/25 17:36:00
  发帖心情 Post By:2019/10/24 17:37:00 [只看该作者]

好吧,还有,一个问题,
If Connections.Contains("临时连接") Then  '连接要导入的Excel
        Connections.Delete("临时连接")
End If
总是提示我:该数据源正在使用,无法删除
这在什么情况下,可以硬删除此连接啊

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


加好友 发短信
等级:小狐 帖子:389 积分:3886 威望:0 精华:0 注册:2016/4/25 17:36:00
  发帖心情 Post By:2019/10/24 18:36:00 [只看该作者]

代码重现了那个问题了
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试用途.zip

[此贴子已经被作者于2019/10/24 18:36:48编辑过]

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


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

我测试没有问题。或者可以改改代码:
……
If dlg.ShowDialog = DialogResult.OK Then
    If Connections.Contains("临时连接") Then  '连接要导入的Excel
        If DataTables.Contains("临时表") Then DataTables.Unload("临时表")
        Connections.Delete("临时连接")
    End If
    If dlg.FileName.EndsWith(".xlsx")
        Connections.Add("临时连接", "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dlg.FileName & ";Extended Properties='Excel 8.0;HDR=yes'")
    Else
        Connections.Add("临时连接", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dlg.FileName & ";Extended Properties='Excel 8.0'")
    End If
……

其次下载安装下面的数据访问组件:
http://www.foxtable.com/download/AccessDatabaseEngine.exe

 回到顶部