1

ウィザードで作成したインポートがあります。少なくとも、仕様を保存するのに十分な距離です。ヘッダー、引用テキスト修飾子、およびコンマ区切りのCSVファイルをインポートします。次に、ボタンクリックイベントから発生するいくつかのvbaでインポート仕様を使用します。

これが私が疑問に思っているいくつかのことです:

では、データのフィールドの順序が正しくない場合、インポートは失敗しますか?データにすべてのフィールドが含まれていない場合、インポートは失敗しますか?データに余分なフィールドがある場合、インポートは失敗しますか?

したがって、インポートされるデータに対して実行できる検証はありますか。フィールドが仕様と同じであること、正しい順序になっていること(必要な場合)などを確認します。

これはかなりうまく機能しますが、データ内の何かが正常でない場合は、とにかくインポートされ、すべての時間が失われることがわかります。

また....これは一般的なアクセス設定ではありません...これは主にデータアナリストのチームがファイルをmdbにインポートするためのものです...これにはフロントエンドがありません。

ありがとうジャスティン

4

2 に答える 2

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

その接続文字列が機能しない場合は、テキストファイルの接続文字列を参照してください。

于 2010-10-21T04:36:26.030 に答える
1

保護されたスプレッドシートを正しい形式で提供します。保護は、彼らがそれを変更できないことを保証します。

インポートに失敗した場合/失敗した場合は、エラーレポートを提供します。

于 2010-10-21T04:43:43.683 に答える