以文本方式查看主题

-  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学习

图片点击可在新窗口打开查看此主题相关图片如下:动画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

--  作者:有点蓝
--  发布时间: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