以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  导入问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=124381)

--  作者:susu312
--  发布时间:2018/9/5 11:12:00
--  导入问题

老师,这段代码就是我从excel表导入库里时的验证后的代码: 

 

\'\'将Excel表中的列赋值给person表中的一行
             For Each dc As Col In t.Cols   \'\'对于table1中的每一列
                  \'dc.Name = dc.Name.Replace(" ","")  \'\'去掉列名里面的多余空格   
                  If dc.Name="标记" Then  \'\'标记列忽略不导入
                        Continue  For
                  End If
                  Dim Index As Integer=Array.Indexof(nums2,dc.name)
                  If dt.DataCols.Contains(nums1(Index)) Then \'\'如果person表中存在这一列,就将这一列的值赋给person
                        dr(nums1(Index)) = r(dc.name)
                  End If
             Next 

 

 

红色部分,我想去掉模板里面的列名中的空格?但是,提示错误:属性name为只读?  是不是定义临时变量,重新赋值下? 

[此贴子已经被作者于2018/9/5 11:13:29编辑过]

--  作者:有点甜
--  发布时间:2018/9/5 11:46:00
--  
             \'\'将Excel表中的列赋值给person表中的一行
             For Each dc As Col In t.Cols   \'\'对于table1中的每一列
                  dim dname as string = dc.Name.Replace(" ","")  \'\'去掉列名里面的多余空格   
                  If dname ="标记" Then  \'\'标记列忽略不导入
                        Continue  For
                  End If
                  Dim Index As Integer=Array.Indexof(nums2,dc.name)
                  If dt.DataCols.Contains(nums1(Index)) Then \'\'如果person表中存在这一列,就将这一列的值赋给person
                        dr(nums1(Index)) = r(dc.name)
                  End If
             Next 

--  作者:susu312
--  发布时间:2018/9/5 20:39:00
--  

老师,导入功能点取消后,可不可以就不打开那个窗口了?就没有选任何excel表?

 


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

--  作者:有点甜
--  发布时间:2018/9/5 20:52:00
--  
贴出你写的完整代码。
--  作者:susu312
--  发布时间:2018/9/5 21:17:00
--  
以下是引用有点甜在2018/9/5 20:52:00的发言:
贴出你写的完整代码。

Dim dlg As new OpenFileDialog
dlg.Filter = "Excel文件|*.xls;*.xlsx"
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("|")
    e.Form.Controls("ComboBox1").Selectedindex = 0
End If


--  作者:有点甜
--  发布时间:2018/9/5 21:30:00
--  
这个代码和你是否打开窗口无关,请贴出对应代码。
--  作者:susu312
--  发布时间:2018/9/5 21:38:00
--  
以下是引用有点甜在2018/9/5 21:30:00的发言:
这个代码和你是否打开窗口无关,请贴出对应代码。

老师,我是有一个导入按钮 ,这个按钮的代码就是:打开这个窗口,这个窗口的afterload事件就是上面那样的


--  作者:有点甜
--  发布时间:2018/9/5 22:03:00
--  
以下是引用susu312在2018/9/5 21:38:00的发言:

老师,我是有一个导入按钮 ,这个按钮的代码就是:打开这个窗口,这个窗口的afterload事件就是上面那样的

 

1、代码dlg.ShowDialog你可以写到按钮事件那里;

 

2、你也可以在afterLoad事件,写e.form.close的代码。


--  作者:susu312
--  发布时间:2018/9/6 9:56:00
--  
以下是引用有点甜在2018/9/5 22:03:00的发言:

 

1、代码dlg.ShowDialog你可以写到按钮事件那里;

 

2、你也可以在afterLoad事件,写e.form.close的代码。


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

 

老师,要打开的Excel文件是打开状态是,导入功能点击就会出现这个问题,下面是导入功能的代码?

 

我想请教下, 如何判断出要导入的EXCEL文件时打开的,然后我就给用户提出请关闭后重新导入?


Dim dlg As new OpenFileDialog
dlg.Filter = "Excel文件|*.xls;*.xlsx"
If dlg.ShowDialog = DialogResult.OK Then
    If Connections.Contains("test") Then
        If DataTables.Contains("临时表") Then DataTables.Unload("临时表")
        Connections.Delete("test")
    Else
         e.Form.Close
    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("|")
    e.Form.Controls("ComboBox1").Selectedindex = 0
Else
    e.Form.Close
End If


--  作者:有点甜
--  发布时间:2018/9/6 10:08:00
--  

判断是否打开,如果打开,提示或者尝试关闭

 

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

 

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