!注意!
JetデータベースのテーブルにCSVファイルからインポートします。テーブルの中に既にデータが格納されている場合、キーが重複しているとそのレコードは追加されません。
本サンプルを使用してインポートを行うとCSVファイルの内容が全てインポートされていなかったり、インポートされな いフィールドがあることあります。CSVファイルのデータフィールドが文字列型の時、データがダブルコーテーションで括られていればこの問題はおきません。もしダブルコーテーションで括られていない文字列型のフィールドをインポートする場合はschema.iniの作成を参照してください。
※サンプル中で使用されているMakeFileNameとStripFileNameに関しては
パス名からファイル名取得
パス名からファイル名を除く
を参照して下さい。
Private SubForm_Load()
CallImport(App.Path & "\work.mdb", "新規テーブル", App.Path & "\export.csv")
End Sub
SubImport(strDbPathAs String, strTblNameAs String, strTxtPathAs String)
Dim wsAsWorkspace
Dim dbAsDatabase
Dim rsAsRecordset
DimwsTxtAsWorkspace
DimdbTxtAsDatabase
DimrsTblAsRecordset
DimstrConnectAsString
DimstrSqlAsString
DimintRetAsInteger
On Error GoToErrHandler
Set wsTxt= DBEngine.Workspaces(0)
Set dbTxt= wsTxt.OpenDatabase(StripFileName(strTxtPath), 0, 0, "Text;")
Set ws= DBEngine.Workspaces(0)
Set db= ws.OpenDatabase(strDbPath,False,False)
strConnect = "[Text;database=" & StripFileName(strTxtPath) & "]."
'テーブルにテキストデータの内容を追加します(見出しレコードがないとエラーになります"同名のフィールドを作成する事はできません")
strSql = "INSERT INTO " & strTblName & " SELECT * FROM " & strConnect & MakeFilename(strTxtPath)
db.Execute strSql
db.Close
dbTxt.Close
ws.Close
wsTxt.Close
Exit Sub
ErrHandler:
intRet = MsgBox("<" & Err & ">" & Error(Err), vbOKOnly, "Import")
End Sub
DownLoad vbtips019.lzh 8KB (VB6.0)