2010-10-21 95 views
1

我有一个导入,我用向导做的,至少足以保存规范。它导入CSV文件,包含标题,引号文本限定符和逗号分隔符。然后,我在一些vba中使用导入规范,这是从按钮单击事件触发的。MS Access 2003/2007 - 从VBA中使用的csv文件导入数据的导入规范.....验证字段名称?

这里有一些事情我很纳闷:

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

那么,有没有一种验证我能做得到进口日确保字段是一样的规格,他们在正确的顺序(如果他们需要)的数据等

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

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

感谢 贾斯汀

+0

我能想到的唯一方法是尝试链接到电子表格并在运行导入之前检查列是否是您期望的。如果这不起作用,您也可以自动化Excel并从Excel中获取这些信息。但是这些听起来都比你想要的更复杂。我会说陷阱的错误,并告诉人们格式化他们的电子表格来匹配模板。 – 2010-10-21 04:07:45

回答

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

+0

感谢汉斯。什么是常量cstrFolder的? – Justin 2010-10-21 11:03:08

+0

对于文本数据源,可以将连接字符串指向可以找到源文件的位置。所以cstrFolder是我的文件的完整路径的文件夹部分:C:\ Access \ webforums \ temp.csv – HansUp 2010-10-21 11:46:40

1

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

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