アプリ版:「スタンプのみでお礼する」機能のリリースについて

ネット上でCGIにて処理されたファイル[.dat]を最終的にaccessのテーブルにインポートしたいのですが、極力自動化できればと思い質問しました。

datの中には個人ID、名前、電話番号、住所などがあります。
(1)accessのインポート機能ではdatから直接取り込めない。
手動でテキストファイルに変換して、インポートを試みましたが、さらに問題が・・・

(2)区切り文字が<>と2文字になっているので、インポート時の処理(区切り文字の指定)では1文字しか指定できない。

”12345<>たなか<>たろう<>0123-45-6789” ←例


やりたい事は、datからテキストやcsvに変換する処理の自動化。
その中で、区切り文字の変換(テキストエディタの機能を使って、2文字から1文字に変換する事はできました)

理想は1日1回程度、定時に自動で更新する事。
もしくはワンクリックですべての処理を行う事です。

他サイトでも同様の質問をしたのですが、レスがつかず・・・
無茶なことなのかもしれませんが、ご意見いただければ幸いです。
よろしくお願いします。

A 回答 (3件)

"<"は区切り文字以外でデータの中に入っている可能性はありますか?



データの中に混入していないなら、一旦"<"で区切ってアクセスにインポートした後、2番目以降の項目の頭1桁を削除してはどうですか?

”12345<>たなか<>たろう<>0123-45-6789” ←例

 ↓"<"で区切ってアクセスにインポート

項目1 項目2 項目3 項目4
+-----+-------+-------+-------------+
|12345|>たなか|>たろう|>0123-45-6789|
+-----+-------+-------+-------------+

 ↓"<"で区切ってアクセスにインポート

update テーブル
set 項目2 = right(項目2,len(項目2)-1)
, 項目3 = right(項目3,len(項目3)-1)
, 項目4 = right(項目4,len(項目4)-1)
;

項目1 項目2 項目3 項目4
+-----+------+------+------------+
|12345|たなか|たろう|0123-45-6789|
+-----+------+------+------------+

この回答への補足

質問に答えてませんでした・・・

<>は区切り以外では使用しておりません。ただ顧客データ+利用履歴として顧客データ部分(前半)が<>
履歴部分(後半)が<->となってるので、そこも処理する必要はありそうなのですが、元々必要ない部分なので今の所は特に問題ないです。

補足日時:2007/04/22 06:30
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
これなら区切り文字の変換とインポートはうまくいきそうですね。
(実際の自動化の方法はまだよくわかってないのですが・・・)

もうひとつの問題点。accessではdatファイルから直接インポートは出来ないようなので、テキストやcsvなどへ変換する処理方法はないものでしょうか?

お礼日時:2007/04/22 06:30

datファイルが単なるtextファイルだったら拡張子をcsvに変えるだけでOKです。


"<>"の変換は文字列としてdatファイルを読み込んだ後、replace関数で変換しては?

拡張子変更はScriptiing.FileSystemを使えばOKです。

VBAで作り込めればワンクリックでOKですし、VBSで作り込めればWindowsのタスクに
登録することにより、完全自動が可能かと思います。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
datの中身はtextです。
replace関数の存在自体を知りませんでした・・・(これは使えそうです♪)

>拡張子変更はScriptiing.FileSystemを使えばOKです。
→初めて聞く言葉です。その時点で扱えそうにもないんですが、どういったものなんでしょうか?

VBAもほとんどわからない初心者なので、現状では望んでいるものは難しそうです。でも「不可能では無い」という事だけでもわかってよかったです。
現段階の知識で出来る限り、作業を簡略化してみようと思います。

お礼日時:2007/04/22 11:15

こんばんは。



ちょっと気になっていたのですが、

>datの中身はtextです。

おそらくは、バイナリ・インポートを考慮したものではなかったでしょうか?
今、別の言語のサイトを読んでみて、やっと納得したのですが、Dat 拡張子は、テキストでも、バイナリでもインポートできるためのようなことが書いてありました。

VBAでは、通常、ランダムアクセスでインポートするような記憶がありましたが、ランダムアクセスは、そのデータ型を決めなくてはなりませんので、以下のようなスタイルよりも、難しくなります。

もし、直接インポートするなら、VBAのInput ステートメントを使って、以下のようにして、それを、テーブルに振り分けてあげればよいです。ただし、この場合は、動的配列ではありませんから、最終行は、配列の添え字の最大値が、-1 になります。それでもって、最終行の判定をします。もし、こういうことが難しいようでしたら、Vector から、データベース用の切り分けエディタを入手したほうが早いです。


Sub Test1()
Dim FileName As String
Dim FileNo As Integer
Dim TextLine As String
Dim buf(1000) As Variant
Dim i As Integer
FileName = "test1.dat" 'ファイル名
FileNo = FreeFile()

 Open FileName For Input As #FileNo
  Do While Not EOF(FileNo)
  Line Input #FileNo, TextLine
  buf(i) = Split(TextLine, "<>")
  i = i + 1
  Loop
 Close #FileNo
'続く

End Sub
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

正直VBAを含め、わからない事だらけです。
まだまだ勉強が必要みたいですね。

一つの質問でいろんな事を勉強するきっかけになりました。
ありがとうございました。

お礼日時:2007/04/24 12:18

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A