以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于合并  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=123489)

--  作者:susu312
--  发布时间:2018/8/15 20:33:00
--  关于合并


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

 

老师,上图是foxtable的合并窗口,我想请教两个问题:

 

1、如何把上传的Excel文件的文件名显示在请选择要合并的表那里?

2、图中的那个表格 ,把标题也去掉了,点击要合并的表,表就会显示在那里,这个是咋实现的?

 

请老师给我一些类似的参考例子,我先研究下。

谢谢老师!


--  作者:有点甜
--  发布时间:2018/8/15 22:02:00
--  

参考

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=109607&skin=0

 


--  作者:susu312
--  发布时间:2018/8/15 23:19:00
--  


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

 

老师,上图中,我获取的表两个sheet名称,我希望,我点击一个名称,该表sheet就显示到下表中

 

那个框的textchanged事件代码:

 

If e.Sender.Text > "" Then
    Dim t As Table = e.Form.Controls("Table1").Table
    Dim Book As New XLS.Book( vars("dlgFileName"))
    Dim Index As Integer = 0
    For n As Integer = 0 To Book.Sheets.count-1
       If  Book.Sheets(n).name = e.Sender.Text Then
            Index=n
            Exit For
       End If
    Next
    t.DataSource = Book.Sheets(Index)
End If

我感觉逻辑对着了 ,可是不知道为啥那个表不显示,请老师指导下,如果老师觉得我表述不清,我可以做实例哈


--  作者:有点甜
--  发布时间:2018/8/15 23:27:00
--  

没有这种代码

 

t.DataSource = Book.Sheets(Index)

 

照抄2楼的帖子,或者参考

 

下载信息  [文件大小:312.0 KB  下载次数:4]
图片点击可在新窗口打开查看点击浏览该文件:excel作为数据源_合并.table


--  作者:susu312
--  发布时间:2018/8/15 23:48:00
--  
以下是引用有点甜在2018/8/15 23:27:00的发言:

没有这种代码

 

t.DataSource = Book.Sheets(Index)

 

照抄2楼的帖子,或者参考

 

下载信息  [文件大小:312.0 KB  下载次数:4]
图片点击可在新窗口打开查看点击浏览该文件:excel作为数据源_合并.table

Dim dlg As new OpenFileDialog
dlg.Filter = "Excel文件|*.xls"
If dlg.ShowDialog = DialogResult.OK Then
    If Connections.Contains("test") Then
        If DataTables.Contains("临时表") Then DataTables.Unload("临时表")
        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

 

老师,请您简要解释一下红色代码的作用,我不太理解这里


--  作者:susu312
--  发布时间:2018/8/15 23:55:00
--  
我看指南上说是数据源,我感觉这个不需要数据源嘛,直接合并到里面指定的表里,我理解的还是不太透彻,我去看指南
--  作者:有点甜
--  发布时间:2018/8/16 9:17:00
--  
照抄2楼、4楼实例。和你要做的有什么差距?上传具体项目测试说明。
--  作者:xybcxh
--  发布时间:2018/8/16 9:28:00
--  
以下是引用有点甜在2018/8/15 23:27:00的发言:

没有这种代码

有点甜老师这么晚了还没休息?要注意身体,身体是革命的本钱哟。。。


--  作者:susu312
--  发布时间:2018/8/16 15:53:00
--  
以下是引用有点甜在2018/8/15 23:27:00的发言:

没有这种代码

 

t.DataSource = Book.Sheets(Index)

 

照抄2楼的帖子,或者参考

 

下载信息  [文件大小:312.0 KB  下载次数:4]
图片点击可在新窗口打开查看点击浏览该文件:excel作为数据源_合并.table

 


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

 

老师,

1、上图中年龄的数据类型是整型,如果用户导入的列中年龄列写的是字符,则不能导入,

 

2、把不能导入的单元格标红,并把这个一行导出

 

老师,上面这两个需求怎么实现呀?

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目24.table

[此贴子已经被作者于2018/8/16 15:55:31编辑过]

--  作者:有点甜
--  发布时间:2018/8/16 16:20:00
--  

1、

 

Dim t As Table = e.Form.controls("table1").Table
Dim ls As object = t.GetCheckedRows
If ls.count = 0 Then ls = t.Rows
Dim dt As DataTable = DataTables("表A")
For Each r As Row In ls
    Dim dr As DataRow = dt.find("身份证号=\'" & r("身份证号") & "\'")
    If dr Is Nothing Then
        Dim d As Double
        If Double.TryParse(r("年龄"),d) = False Then
            r.DataRow.SetError("年龄", "不是数字")
        Else
            dr = dt.AddNew()
            For Each dc As Col In t.Cols
                If dt.DataCols.Contains(dc.name) Then
                    dr(dc.Name) = r(dc.name)
                End If
            Next
        End If
    End If
Next
msgbox("合并完成")

 

2、动态添加一列,如果出错的,标记一下,最后你可以根据标记列筛选出数据

 

http://www.foxtable.com/webhelp/scr/1428.htm