• ベストアンサー

異なる形式のデーターベースの閲覧・変換方法

仕事でたいへん困っています。 MS-DOSの旧式パソコンをつかって顧客データーが保存しているのですが、FDに保存しこれをwindows98で開いたところ(text形式で)読み取ることができません。 具体的にいいますと、MS-DOSでのデーターベースソフトで大量の顧客データーがあるのですが、これを新たにVBなので再構築しなくてはならなくなったのです。 そこでそのDOS顧客ソフトの「FDに保存」でフロッピーに保存しwinで見てみると拡張子が「kaiin.dat]となっており秀丸エディタで開くと最初に文字化けしたものが出てきておりその後は半角フリガナ漢字の姓名、住所が続いていくようになっています。文字化けをしているところはおそらくバーコードナンバーの番号だと思われます。この文字化けしているところだけ正確な文字に変換する方法はあるのでしょうか? ↓こんな感じ ・1セU1 F ・    ホッタ 堀田 住所 電話・・・・ このソフトを組んだ人が誰だかわからないためどうしようもありません。 こういった旧タイプの保存形式を今のCVS形式など今のタイプに変換できる方法ってないのでしょうか? たいへん困っています。宜しくお願いします

質問者が選んだベストアンサー

  • ベストアンサー
  • seiuchi4
  • ベストアンサー率37% (71/189)
回答No.1

多分、「バイナリ形式」でデータ保存されているために TEXTエディタでは文字化けするのでしょう。 (TEXTは、ASCIIコードで文字数字のみのコードを使用) 下記URLにフリーのバイナリエディタがあります。 これで該当ファイルを開くと、数値の羅列を見ることが出来ます。 これをCSVにするには、バイナリ->ASCII変換が必要ですが、 レコードのフォーマットがわからないとなんとも出来ないと思いますよ? 最悪、バイナリデータを見ながら規則性を見つけて、 1レコードあたりのデータ長を見出して、変換する規則を 見つけ、変換する事で出来るとは思いますが。。。 ちなみにASCIIコードとは、文字にコードを割り当ててあります。 0 は、30h(hは16進数の意) A は、41h a は、61h 等です。 漢字データもあるようですので、一筋縄にはいかなそうですね。

参考URL:
http://www.vector.co.jp/soft/win95/util/se032859.html
bakusui
質問者

お礼

返事がおくれてすみません。 さて、まったくそのへんおバイナリ形式等について理解ができていなっかったのが現状です。 レコードのフォーマットはまったくもってわかりません。 あきらめます。

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • harn
  • ベストアンサー率43% (367/848)
回答No.4

こんにちは そのPCは NECのPC9800か9821シリーズでしょうか そのソフトは何で組んであるのでしょうか DBASEIIIとか DBXLとかC かBASICの言語系とか VBに関してはまったく使ったことが無いのですが おそらく レコードの頭に レコードNoが何桁かあり その後にバーコードのNoがバイナリ数値に変換されていると思われます 例えば WORD形式(2文字で -37575~+37576)  あと 4文字(不動小数点 数値変数?)     8文字(不動小数点 数値変数?) すみません何せ古い話なので正式な名称は忘れました? (変換と言うわけではなく 使ってる変数が 数値なので バイナリデータとして保存されてると 思われます VBの数値変数に取り込んで表示すれば 可能と思われます 表示できれば 数値→文字 変換関数で文字に変換) MS_DOS ではN88BASICでよくINDEXなどに良く使いました (数値にしておくと プログラムを組まなくても 検索ができるので) MS_BASIC では 他にも多数 数値変数の種類があったと思いますが

bakusui
質問者

お礼

ありがとうございます。 VBがまだまだ勉強中なので数値変数というのがわからないですね・・ とりあえずは簡単に表示することはできないようですね・・・

すると、全ての回答が全文表示されます。
  • cse_ri2
  • ベストアンサー率25% (830/3286)
回答No.3

たぶん、元のMS-DOSソフトが、独自形式のフォーマット で顧客データを管理していたものと思われます。 ソフトを作った人を探して、CSV形式など簡単に外部にデータ を渡せる操作を教えてもらう、または無ければ作ってもらう のがセオリーですが、作った人がわからなければ、どうしよう もないですね。 すべてのデータを紙に印刷して、データ入力のバイトを雇い、 データを再入力する方法が一番確実かと思われます。

すると、全ての回答が全文表示されます。
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.2

# 固定長データと仮定して (1)バイナリダンプと実際のデータを見比べて、データフォーマットを推測する。 (2)VBで変換ツールを作る うまく行けば、プロで半日仕事でしょう。 Private Type kaiin Code As Long Kana As String * 16 Simei As String * 16 Address As String * 32 Tel As String * 16 End Type Private Sub Form_Click() Dim d As kaiin Open "a:\kaiin.dat" For Random Access Read As #1 Len = Len(d) While EOF(1) = 0 Get #1, , d Debug.Print Code, Kana, Simei, Address, Tel Wend Close #1 End Sub

bakusui
質問者

お礼

VBじたいがはじめたところなのでどうしょうもないようですね・・・ でもありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A