以文本方式查看主题 - 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表作为数据源进行数据管理 怎么实现当手动设置好数据源表名后 点击合并 得到选择文件的不同文件内容 然后再选择数据源表名 获取数据源表名下的所有字段内容
合并按钮代码如下: 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工作簿里面的一个表 [此贴子已经被作者于2021/10/26 10:10:54编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2021/10/26 9:45:00 -- 不是很理解您的问题,这个意思? |
||||
-- 作者:cnsjroom -- 发布时间:2021/10/26 10:11:00 -- 回复:(有点蓝)不是很理解您的问题,这个意思?[upl... 老师 是这个意思 选择了需要导入的表后 然后再去获取对应表的字段列 在实际使用中发现 如果标题行大于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 |