以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  上传数据报错,关闭不了报错窗口  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=107788)

--  作者:jayson
--  发布时间:2017/10/10 10:36:00
--  上传数据报错,关闭不了报错窗口

如题,报错,无法关闭,除非在任务管理器中强制关闭

我的问题是,

对于上传数据,如何用语句对要上传的数据进行检查,

如果上传的字符类型和表中定义类型不一致,提示用户错误,而且提示完错误后,可以关闭窗口

如果字符类型和表中的一致,然后允许上传?

图片点击可在新窗口打开查看

--  作者:有点甜
--  发布时间:2017/10/10 10:40:00
--  

1、你上传的是什么文件?不同的文件格式要用不同的方式打开判断。

 

2、做个具体的例子发上来测试。


--  作者:jayson
--  发布时间:2017/10/10 11:23:00
--  

你好,见附件

这个程序的目的是:

让上传的5行数据,与4个客户(来自于account表),排列组合成 5*4 行,上传到 table uploadmodule

 

 

 

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

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:上传数据.xlsx


--  作者:jayson
--  发布时间:2017/10/10 11:28:00
--  
我给的是没有问题的数据,您可以把单元格 F2 改成 n试试
--  作者:有点甜
--  发布时间:2017/10/10 11:39:00
--  

 

[此贴子已经被作者于2017/10/10 11:40:07编辑过]

--  作者:有点甜
--  发布时间:2017/10/10 11:43:00
--  
Dim dlg As New OpenFileDialog
dlg.Filter = "Excel文件|*.xls;*.xlsx"
If dlg.ShowDialog =DialogResult.OK Then
    Dim t As Table = Tables("UploadModule")
    t.StopRedraw()
    Dim Book As New XLS.Book(dlg.FileName)
    Dim Sheet As XLS.Sheet = Book.Sheets(0)
    For Each dr As DataRow In DataTables("account").DataRows
        For n As Integer = 1 To Sheet.Rows.Count -1
            Dim r = t.DataTable.AddNew()
            For i As Integer = 0 To sheet.Cols.Count -1
                Dim cname As String = sheet(0, i).text
                If t.Cols.Contains(cname) Then
                    If t.Cols(cname).IsBoolean Then
                        r(cname) = iif(sheet(n, i).value="0" OrElse sheet(n, i).value="False", False, True)
                    ElseIf t.Cols(cname).IsNumeric Then
                        r(cname) = val(sheet(n, i).text)
                    Else
                        r(cname) = sheet(n, i).text
                    End If
                End If
            Next
            r("account") = dr("account")
        Next
    Next
    t.ResumeRedraw()
End If

--  作者:jayson
--  发布时间:2017/10/10 12:52:00
--  

谢谢

我有另一种思路,但是不知道该怎么写

就是先导入一个account测试数据格式有无错误,如果没有的话,再倒入其他的account

问题是这个有无提示错误怎么用代码表达?

代码如下

 

Dim dlg As new OpenFileDialog
dlg.Filter = "Excel文件|*.xlsx"

If dlg.ShowDialog = DialogResult.OK
    Dim mg As New Merger
    mg.SourcePath = dlg.FileName
    mg.Format = "excel" 
    mg.SourceTableName = "sheet1$" 
    mg.DataTableName = "UploadModule" 
    mg.Merge()


    如果没有错误,继续下面的代码;如果有错,终止下面的代码(这句话怎么写?)


    For i As Integer = 0 To DataTables("account").DataRows.count - 2
        Dim mg1 As New Merger
        mg1.SourcePath = dlg.FileName
        mg1.Format = "excel" 
        mg1.SourceTableName = "sheet1$" 
        mg1.DataTableName = "UploadModule" 
        mg1.Merge()
    Next
End If

 


--  作者:有点甜
--  发布时间:2017/10/10 14:14:00
--  
必须用6楼的方法处理。