【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集

ACCESSデータベースでインポートしたいデータ(拡張子がlog)があるのですが、そのままだと文字列が区切られていなくテーブルに入らないので、毎回
しょうがなく事前に置換ツール等を使ってカンマ区切りにしてからインポートしています。

モジュールなどを使って、インポートする前のデータをテーブルに入れやすい
形(カンマ区切りのtxtファイルぐらいしか思いつかないのですが。。。)に置換・変換っていうのはできるんでしょうか??教えて下さい。。

A 回答 (3件)

固定長のファイルでしたら


一度Accessにそのままインポートしてそれからテーブルに保存する方法もあります。

Private Sub コマンド0_Click()
On Error GoTo Err_コマンド0_Click

Dim kensu1
Dim MyChar
Dim DB1 As Database
Dim TBL1 As Recordset

Set DB1 = DBEngine.Workspaces(0).Databases(0)
Set TBL1 = DB1.OpenRecordset("テストテーブル", dbOpenDynaset)

Open "C:\????.log" For Input As #1 '????はパスとデータの名前

kensu1 = 0

Do While Not EOF(1)
MyChar = Input(???, #1) '???は固定長の長さ
kensu1 = kensu1 + 1
TBL1.AddNew
TBL1("テストテーブル") = MyChar
TBL1.Update
Loop

MsgBox "処理終了xx: " & kensu1 & "件出力しました。"

Close #1

TBL1.Close

Exit_コマンド0_Click:
Exit Sub

Err_コマンド0_Click:

If Err = 62 Then ' 終了
MsgBox "処理終了: " & kensu1 & "件出力しました。"
Close #1
TBL1.Close
Resume Exit_コマンド0_Click
End If

MsgBox Err.Description
Resume Exit_コマンド0_Click

End Sub

クリックした際の仕様で書きましたがこれでインポートしたデータ件数も数え
後は固定長のまま1レコードごと取り込んだデータをMid関数でも使ってモジュ
ールを作るか追加クエリでも作って保存するテーブルに落とせます。
    • good
    • 0

こんにちは。



*.logがテキストファイルで、固定長なら、拡張子をtxtに変えて、インポート定義を作っておいて取りこめば良いと思います。

Sub Test()
Dim myDB As DAO.Database, Path As String
 Set myDB = CurrentDb
 Path = Left(myDB.Name, Len(myDB.Name) -  Len(Dir(myDB.Name)))
 Path = Path + "Test.txt"
 DoCmd.TransferText acImportFixed, "Test インポート定義", "テストテーブル", Path
End Sub

アクセスは得意じゃないので、、、
勘違いしてたらゴメンナサイ。
    • good
    • 0

こんにちは。



元データは固定長でも無く、何の区切りもないのですか?
現在はどうやって、区切りを判断しているのでしょう?

この回答への補足

説明不足でした。。。固定長です。
正規表現の置換ツールで毎回置換してます。

補足日時:2002/07/16 21:25
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す


おすすめ情報