以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 导入excel 为什么会提示没有这个表呢? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=166130) |
-- 作者:cnsjroom -- 发布时间:2021/5/20 2:04:00 -- 导入excel 为什么会提示没有这个表呢? 参照论坛唐尸三白手的导入excel学习 以下内容是专门发给有点蓝浏览 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 |
-- 作者:有点蓝 -- 发布时间:2021/5/20 9:31:00 -- 选择的表没有加载进来:http://www.foxtable.com/webhelp/topics/1812.htm |
-- 作者:cnsjroom -- 发布时间:2021/5/20 10:20:00 -- 回复:(有点蓝)选择的表没有加载进来:http://www.f... 方式一: 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编辑过]
|
-- 作者:有点蓝 -- 发布时间:2021/5/20 10:26:00 -- 这2种方式完全就是不同的功能,用在不同的场合,一般结合一起用 |
-- 作者:cnsjroom -- 发布时间:2021/5/20 12:21:00 -- 回复:(有点蓝)这2种方式完全就是不同的功能,用在不... 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甚至是未知表。 有没有办法在不提前加载数据表的情况下,通过这样的方式加载表并可以执行后续数据导入功能呢? |
-- 作者:有点蓝 -- 发布时间: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 -- 发布时间:2021/5/20 17:54:00 -- 回复:(有点蓝)1、要先添加到外部表管理:http://ww... 外部表管理 怎么用代码进行添加呢?而不是在开发过程中 预先添加后续使用 想实现代码即时添加 随机添加不同的表 也就是说在数据源目标端是存在这个表的 但是需要将数据导入到目标端的时候 项目里面肯能没有提前加载或者添加这个外部表
|
-- 作者:有点蓝 -- 发布时间:2021/5/20 20:14:00 -- 外部表管理无法使用代码进行添加。 如果要操作没有加载的后台数据库表,只能使用SQLCommand:http://www.foxtable.com/webhelp/topics/0696.htm
|
-- 作者:cnsjroom -- 发布时间: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 |
-- 作者:有点蓝 -- 发布时间:2021/5/20 20:54:00 -- 去掉下面代码 If DataTables.Contains(c3.value) = False Then \'如果表C没有加载 MessageBox.Show("1") DataTables.Load(c3.value) \'加载表C End If |