以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 数据源临时表问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=142332) |
||||
-- 作者:goldenfont -- 发布时间: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 |
||||
-- 作者:有点蓝 -- 发布时间:2019/10/24 14:20:00 -- 测试没有问题哦。上传实例说明 |
||||
-- 作者:goldenfont -- 发布时间:2019/10/24 16:18:00 -- 邪门了,我单独用这段代码做测试准备上传,是没问题的,但是在我的项目里就不行了,因为我的项目很大,没法上传,这是啥道理? 想了一下,没啥变化的啊,就是我本身用的主连接是连的数据库的,不是这个临时的,窗口是独立的,就这点区别啊
|
||||
-- 作者:goldenfont -- 发布时间:2019/10/24 16:58:00 -- 老师,有没有办法能遍历DataTables以哪些字符开头的所有的DataTables表? 例如找到所有以"临时表_"开头的所有表? DataTables.Contains("临时表")怎么写?
|
||||
-- 作者:有点蓝 -- 发布时间:2019/10/24 17:05:00 -- for each dt as datatable in DataTables if dt.name like "临时表_*"
|
||||
-- 作者:goldenfont -- 发布时间:2019/10/24 17:37:00 -- 好吧,还有,一个问题, If Connections.Contains("临时连接") Then \'连接要导入的Excel Connections.Delete("临时连接") End If 总是提示我:该数据源正在使用,无法删除 这在什么情况下,可以硬删除此连接啊
|
||||
-- 作者:goldenfont -- 发布时间:2019/10/24 18:36:00 -- 代码重现了那个问题了
[此贴子已经被作者于2019/10/24 18:36:48编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间: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 |