以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  使用excel表作为数据源进行数据管理 怎么实现当手动设置好数据源表名后 点击合并 得到选择文件的不同文件内容 然后再选择数据源表名 获取数据源表名下的所有字段内容  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=172676)

--  作者:cnsjroom
--  发布时间:2021/10/25 17:51:00
--  使用excel表作为数据源进行数据管理 怎么实现当手动设置好数据源表名后 点击合并 得到选择文件的不同文件内容 然后再选择数据源表名 获取数据源表名下的所有字段内容
使用excel表作为数据源进行数据管理 怎么实现当手动设置好数据源表名后  点击合并  得到选择文件的不同文件内容  然后再选择数据源表名  获取数据源表名下的所有字段内容
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:excel作为数据源_合并.table
当前运行错误提示如下:【麻烦老师帮忙看看  谢谢!】

图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看


合并按钮代码如下:
Dim dlg As new OpenFileDialog
dlg.Filter = "Excel文件|*.xlsx"

Dim t1 As WinForm.TextBox = e.Form.Controls("TextBox1")
If dlg.ShowDialog = DialogResult.OK Then
    If Connections.Contains("test") Then
        If DataTables.Contains(t1.text) Then DataTables.Unload(t1.text)
        Connections.Delete("test")
    End If
    Connections.Add("test", "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dlg.FileName & ";Extended Properties=\'Excel 8.0;HDR=yes\'")
    Dim tns As String = ""
    For Each tn As String In Connections("test").GetTableNames
        tns &= tn & "|"
    Next
    e.Form.Controls("ComboBox1").ComboList = tns.TrimEnd("|")
End If

当前选择数据源表名获取当前tables中的字段代码如下:
Dim cm As WinForm.ComboBox = e.Form.Controls("ComboBox1")
Vars("btname")=cm.Text
Dim cnt As Integer = DataTables(Vars("btname")).DataCols.Count - 1
Dim nms(cnt-1) As String
Dim lb As WinForm.CheckedListBox = e.Form.Controls("CheckedListBox1")
For i As Integer = 0 To cnt - 1
    nms(i) = DataTables(Vars("btname")).DataCols(i).name
Next
lb.ComboList = String.join("|",nms)

--  作者:有点蓝
--  发布时间:2021/10/25 21:02:00
--  
把文件名里的$符号去掉,同时判断一下是否有这个表

    For Each tn As String In Connections("test").GetTableNames
dim s as string = tn.trim("$")
if DataTables.Contains(s) then
        tns &= s & "|"
end if
    Next

--  作者:cnsjroom
--  发布时间:2021/10/26 9:03:00
--  回复:(有点蓝)把文件名里的$符号去掉,同时判断一下...
老师参照你的指导我对应在命令窗体进行下述代码执行 可以正常去掉$符号   
For Each tn As String In Connections("test").GetTableNames
    Dim s As String = tn.trim("$")
    
    If DataTables.Contains(s) Then
        MessageBox.Show("1")
    Else
        MessageBox.Show("2")
        s = s & "|"
        output.show(s)
    End If
Next



在combobox1  SelectedIndexChanged代码运行如下时,还是会提示找不到上述S对应名称的表
Dim cm As WinForm.ComboBox = e.Form.Controls("ComboBox1")
Vars("btname")=cm.Text.trim("$")
Dim cnt As Integer = DataTables(Vars("btname")).DataCols.Count - 1
Dim nms(cnt-1) As String
Dim lb As WinForm.CheckedListBox = e.Form.Controls("CheckedListBox1")
For i As Integer = 0 To cnt - 1
    nms(i) = DataTables(Vars("btname")).DataCols(i).name
Next
lb.ComboList = String.join("|",nms)

--  作者:有点蓝
--  发布时间:2021/10/26 9:05:00
--  
说明这些表还没有加载进来,Foxtable里还不存在这些表
--  作者:cnsjroom
--  发布时间:2021/10/26 9:22:00
--  回复:(有点蓝)说明这些表还没有加载进来,Foxtable...
表对应的数据是写入了对应的张三数据表里的   实在弄不明白了  麻烦老师看看哈   我也只是需要读取的在项目里面的张三表中的字段列,但是系统一直认为是我再导入前的excel工作簿里面的一个表
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:excel作为数据源_合并.table



[此贴子已经被作者于2021/10/26 10:10:54编辑过]

--  作者:有点蓝
--  发布时间:2021/10/26 9:45:00
--  
不是很理解您的问题,这个意思?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:excel作为数据源_合并.zip



--  作者:cnsjroom
--  发布时间:2021/10/26 10:11:00
--  回复:(有点蓝)不是很理解您的问题,这个意思?[upl...
老师   是这个意思  选择了需要导入的表后  然后再去获取对应表的字段列

图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20211026100747.png
图片点击可在新窗口打开查看

在实际使用中发现  如果标题行大于1的话  会导入如图效果  f2.3.4.5.6.7.8.9是标题行  不是真正的字段列
有没有办法在下述代码中 将t2输入的内容,设定到代码中,然后再导入数据前进行排除标题行呢?
Dim t1 As WinForm.TextBox = e.Form.Controls("TextBox1")
Dim t2 As WinForm.TextBox = e.Form.Controls("TextBox2")   ‘输入行文本框’
If e.Sender.Text > "" Then
    Dim q As new Quer yBuilder
    q.Connecti
    t1.text = e.Sender.Text.trim("$")
    q.Table Name = t1.text
    q.Sele ctString = "Sel ect * from [" & e.Sender.Text & "]"
    q.Build
    If DataTables.Contains(t1.text)
        e.Form.Controls("Table1").Table.DataSource = DataTables(t1.text)
    Else
        e.Form.Controls("Table1").Table.DataSource = DataTables("表A")
    End If
End If
[此贴子已经被作者于2021/10/26 10:12:36编辑过]

--  作者:有点蓝
--  发布时间:2021/10/26 10:26:00
--  
不能的。这种方式连接的execl必须是标准的格式,也就是第一行必须是真正的字段列,并且不能有合并单元格。
--  作者:cnsjroom
--  发布时间:2021/10/26 10:44:00
--  回复:(有点蓝)不能的。这种方式连接的execl必须是标...
好的 谢谢老师   如果对于非标准格式的数据  我要导入的话  那有没有对应的例子可供学习一下

导入非标准数据格式之前先排除标题行  有没有办法进行定义呢?

--  作者:有点蓝
--  发布时间:2021/10/26 10:52:00
--  
这种:http://www.foxtable.com/webhelp/topics/2334.htm