1

我有一个使用向导进行的导入,至少足以保存规范。它导入带有标题、引用文本限定符和逗号分隔的 CSV 文件。然后我在一些从按钮单击事件触发的 vba 中使用导入规范。

以下是我想知道的一些事情:

那么如果数据中的字段乱序导入会失败?如果数据不包含导入失败的所有字段?如果数据中有额外的字段导入失败?

那么我可以对导入的数据进行任何类型的验证,以确保字段与规范相同,它们的顺序正确(如果需要的话)等等。

这工作得很好,但我只是看到,如果数据中的某些东西不正常,它无论如何都会导入,并把整个时间都扔掉。

另外....这不是典型的访问设置...这主要是为了让数据分析师团队将文件导入 mdb...没有前端。

谢谢贾斯汀

4

2 回答 2

1

我会为他们提供格式正确的受​​保护电子表格。保护确保他们无法更改它。

如果/当导入失败时,向他们提供错误报告。

于 2010-10-21T04:43:43.683 回答
1

您可以使用 ADO 记录集检查 CSV 文件。

Public Sub InspectCsvFile()
    Const cstrFolder As String = "C:\Access\webforums"
    Const cstrFile As String = "temp.csv"
    Dim i As Integer
    Dim strConnect As String
    Dim strSql As String

    'early binding requires reference, Microsoft ActiveX Data Object Library '
    'Dim cn As ADODB.Connection '
    'Dim rs As ADODB.Recordset '
    'Dim fld As ADODB.Field '
    'Set cn = New ADODB.Connection '
    'Set rs = New ADODB.Recordset '

    'late binding; no reference needed '
    Dim cn As Object
    Dim rs As Object
    Dim fld As Object
    Set cn = CreateObject("ADODB.Connection")
    Set rs = CreateObject("ADODB.Recordset")

    strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
        cstrFolder & ";Extended Properties=""text;HDR=Yes;FMT=Delimited"";"
    'Debug.Print strConnect '
    cn.Open strConnect
    strSql = "SELECT * FROM " & cstrFile & ";"
    rs.Open strSql, cn
    Debug.Print "Fields.Count: " & rs.Fields.Count
    For i = 0 To rs.Fields.Count - 1
        Set fld = rs.Fields(i)
        Debug.Print i + 1, fld.Name, fld.Type
    Next i
    Set fld = Nothing
    rs.Close
    Set rs = Nothing
    cn.Close
    Set cn = Nothing
End Sub

如果该连接字符串不适合您,请参阅Textfile 的连接字符串

于 2010-10-21T04:36:26.030 回答