MS Access 2003/2007 - 从VBA中使用的csv文件导入数据的导入规范.....验证字段名称?

时间:2010-10-21 02:15:36

标签: ms-access vba csv import ms-access-2003

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

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

因此,如果数据中的字段乱序导致导入失败?如果数据不包含导入失败的所有字段?如果数据中有额外的字段导入失败?

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

这很好用,但我只是看到,如果数据中的某些内容超出正常范围,它将导入,并将整个时间全部关闭。

此外....这不是典型的访问设置...这主要是由一组数据分析师将文件导入mdb ...没有前端这个。

感谢 贾斯汀

2 个答案:

答案 0 :(得分: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

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

答案 1 :(得分:1)

我会以正确的格式向他们提供受保护的电子表格。保护确保他们不能改变它。

如果/无法导入,请向他们提供错误报告。