ACCESS97 : レコードが長いファイルのインポートについて

このQ&Aのポイント
  • ACCESS97で、文字列を文字数ではなくバイト数で扱うことは可能でしょうか。
  • インポート先のテーブルのフィールドをすべて「メモ型」にしたのですが、インポート定義を利用してインポートを行おうとすると、「レコードが大きすぎます。」というエラーが発生します。
  • テキストファイルは半角と全角が混在しているのですが、困ったことに全角のデータが入るべきところに半角が混ざっている可能性があります。
回答を見る
  • ベストアンサー

ACCESS97 : レコードが長いファイルのインポートについて

ACCESS97で、文字列を文字数ではなくバイト数で扱うことは可能でしょうか。 1レコードが20,000ByteあるテキストファイルをACCESS97のテーブルに インポートしようとしています。 インポート先のテーブルのフィールドをすべて「メモ型」にしたのですが、 インポート定義を利用してインポートを行おうとすると、 「レコードが大きすぎます。」というエラーが発生します。 そこで、プログラムでファイルを1レコードずつ読み込みながらテーブルに インサートしていく方法を取ろうかと思います。 テキストファイルは半角と全角が混在しているのですが、困ったことに 全角のデータが入るべきところに半角が混ざっている可能性があります。 たとえば、全角10文字入るべき場所に半角の空白が20文字入っていると いうような状態です。 この状態で StrConv関数でUnicodeに変換してからMidB$関数で文字を抜き 出すと、フィールドがずれてきます。 1文字目から10文字分、ではなく1Byte目から10Byte、などというように文 字列を扱うことができれば、全角と半角がどのような位置で混在していても 関係なくプログラム上で扱うことができると思うのですが,方法がわかりません。 また、これ以外で長いレコードのファイルをインポートできる方法があれば 教えていただきたいと思います。 長くなってしまいましたが、ご回答をいただけますようよろしくお願いいたします。

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

  • ベストアンサー
  • CHOROLYN
  • ベストアンサー率60% (14/23)
回答No.1

元々は固定長のレコードでしょうかね? バイト数で抜き出すならStrConvでユニコードに変換するのではなく規定コードページに直してからMidBで取り出し、ユニコードに変換してやる必要があります。 StrConv(MidB$(StrConv(strDATA,vbFromUnicode)1,10),vbUnicode)

tomo-yuki
質問者

お礼

おっしゃるとおり、やり方を間違えていました。 ご回答ありがとうございました。

関連するQ&A

  • Access2000でテキストインポートする時に

    毎日、他の会社から提供された全角半角混在の固定長テキストファイルを、 Access2000でデータベースにして作業を行っているのですが(OSはWindows2000)、 固定長テキストをインポートする際、ある文字を含むレコードだけが桁ずれ してしまうのです。具体的には、 「新橋1-7-1」「新橋1-7-1」 等はちゃんと読みこめるのですが 「新橋1―7―1」 の時に、「―」が一文字出現する毎に半角一文字分桁がずれて読み込んでしまいます。 どうも、テキストファイル上では「―」は全角なのですが、 インポートする時に半角文字として認識しているように思われます。 この原因と、対処法についてご教授頂きたいです。 なお、テキストファイル提供元と直接話が出来ず、作成時の環境は不明です。 ちなみに当方は、アクセスのマクロを少し使えるくらいでVBAは初心者、 VBはわからないです。

  • Access(アクセス)でのインポートについて

    テーブルのインポートでエクセルファイルをインポートしたいのですが「ワークシートインポートウィザード」の画面でテーブルを指定して保存すると 「Microsoft Access」の画面で「すべてのデータをテーブルに追加できませんでした。 キー違反のため、0件のレコードのデータが失われ、0件のレコードが削除されました。」と出てきて、保存できません。 もとのテーブルのデータ型を使ってインポートするにはどうしたらいいのでしょうか。よろしくお願いします。 インポートする元のデータ(エクセル)とインポート先(アクセス)の関係は次の通りです。 エクセルファイル    アクセスのテーブル (セルの書式設定)   データ型、フィールドサイズ --------------------------------------------- 数値          数値型、長整数型 文字列         テキスト型、16 インポートする前に元のエクセルデータをアクセスのデータ型に合わせただけではダメなのでしょうか

  • Access2000 固定長テキストと特殊文字インポート定義

    固定長形式で作成したテキストファイルを、新規作成 →テーブルのインポート → 設定 → (あらかじめ作成しておいた固定長の)定義によりインポートは成功するのですが、 必ずα(アルファ)やβ(ベータ)の文字が入っているテキスト型のデータで1バイトのズレが起こります。例えば固定幅で20を指定してもαやβの文字が入っているフィールドでは21バイトまで取り込んでしまいます。 αやβの文字が入っていなければ次のレコードからは問題なく指定どおりにインポートされています。 インポート定義の設定で、どこを訂正したらよいのか分からないため質問させていただきます。

  • アクセス2010でのファイル保存方法

    アクセス2010で、UTF8形式のテキストを開き、レコードごとにデータを 抽出する際でのご質問がございます。 指定された県の郵便番号を、レコードを抽出して、ファイルで保存する際、テキスト型文字コードUTF8に指定して保存したのですが、レコード内のフィールド文字列でスペースを含んだ半角文字14桁と全角文字8桁の混合文字列が、保存後、前半部分の半角文字のスペースがなくなってしまいます。 下記のような例がイメージとなります。 例 ァァァ           亜亜亜亜亜亜亜亜    ↓   ァァァ 亜亜亜亜亜亜亜亜  (半角領域のスペースが1桁しかなくなってしまう) のようになってしまうのですが なにか良い保存方法はありますでしょうか? どうぞよろしくお願いします。

  • Access Excelのインポートについて

    お世話になります。 Access2010 Excelインポート時の仕様についてご教示下さい。 フォーム上に「インポート」ボタンを設置し、ボタンを押すと ファイル選択ダイアログが表示され、そこで選択されたファイルを インポートしています。 DoCmd.TransferSpreadsheet acImport, 10, "temp", strFile, True ※strFileはダイアログにて選択されたファイルのパス インポートする前に事前にテーブルを作成しておき、そこに Excelのデータがインポートされます。 事前に作成しておくテーブル(temp)のデータ型は以下の通りです。 ID オートナンバー 契約開始日 日付/時刻型 契約終了日 日付/時刻型 案件名   テキスト型 価格    テキスト型 ※Excelの「価格」は通貨型となっておりますが、いくつかのセルに  文字列が入力されている為、テキスト型としてます。 <質問> インポートすると、「価格」フィールドにてデータ型の変換エラーが 発生します。エラーテーブルを確認したところ、Excelの「価格」に 文字列が入っている行でした。 予めテキスト型を用意しておいても、文字列の行はエラーとなって しまいます。なお、価格(数値)が入力されているものは、文字列として インポートされています(左詰めになっている)。  100000  50000  10000  80000   ・  50000  空白  ← 本来は文字列が入力されている。 予めテキスト型を用意しておいたとしても、インポート時の仕様?で 先頭から数行が数値なら数値フィールドと認識されてしまって、 文字列が削れ落ちてしまうのかなと。 ちなみに、インポートするExcelの先頭行の価格を「'100000」にして インポートしたところ、ちゃんとインポートはできましたが、 2行目以降は¥マークも含めた文字列でインポートされてしまいました。  100000  ¥50000  ¥10000  ¥80000   ・  ¥50000  文字列 どうにか対処する方法はございますでしょうか。 以上、宜しくお願い致します。

  • アクセス2010のインポートについて

    調べてみてもわからなかったので教えてください。アクセス初心者です。 アクセスでデータベースを作成しようと試みています。 あるエクセルデータをアクセスでテーブルとして使用したく、インポートしました。 なにやら、思惑とは違い、一部のデータが、エクセルの所定の列とはフィールドがずれていて、 エクセルデータを確認したところ、一つのセルの中に、半角カンマが入っていました。 どうやらこのことが原因みたいなのですが、最初は半角カンマを他の文字に変えようかとも検討したのですが、半角カンマが入った状態でインポートした方がいいという結論に達しました。 どうしたら上記のデータを半角カンマをとらずにフィールドがずれることなくアクセスへインポートできるでしょうか

  • Access2000 csvファイルのインポート

    Access2000のVBAを使用してcsvファイルを用意されたテーブルにインポートをしたいのですが、 やっかいな条件があります。 ある決められたフォルダに複数のファイルが存在している、そこから全てのCSVファイルを読み込み、3フィールド目(1行目はタイトル行)の値が「"3"」のものだけインポートする。 あるフィールドには、255文字以上のフィールド(改行文字あり)があります。このフィールドはインポートしてもしなくてもよい 今までは、インポート定義を設定してインポートしていたのですが、csvファイルを判別して、インポート前にフィールドの判別をする方法がわかりません。また、255文字以上の対応もうまくいきません。   

  • Access:固定長文字列ファイルのインポートが正しく行われない

    いつもお世話になっております WindowsXP Access2002  MSDEを使用しております。 ある固定長テキストファイルのインポートを行おうと 以下のコードを実行したところ、正しくデータが 抽出できませんでした。 DoCmd.TransferText acImportDelim, "", "インポート", "R:\test.txt" テキストファイルを確認したところ、文字列の中に ダッシュ(―)、及び シングルクオテーション(’) が全角で入っている場合にそれを半角として 判断しているようで、その文字列フィールド末尾に 次のフィールドの値が抽出されてしまうようです。 上記記号文字が混入されていないレコードは正しく 取り込まれます。 ちなみにschema.iniの型定義は Col4=テスト Char Width 80 としておりますが、Textに変更しても 同現象が発生します。 定義に誤りがあるのでしょうか、 もしくは当該処理を代用するような機能が ございましたらご教授いただければ幸いです。 何卒よろしくお願いいたします。

  • クエリーで、全角混じりデータの抽出[access95]

    半角で入力すべきフィールドの中に全角文字が混在している時に、 この全角文字が混在しているデータを、クエリーで抽出する方法を 教えてください。 データ型はテキストで、フィールド長は50です。 また入力されているデータは、任意<50文字とないっています。

  • Accessのファイルインポートが上手くいきません

    いつもお世話になっております。 今回、お伺いしたいのは Access`2002を使用しているのですが、 データを落として保存されたエクセルファイルをインポート元にして AccessDBにインポートした際にエラーが発生しました。 インポート先はAccessのテーブルで全てテキスト型にしているのですが、 インポートした際に、同じ列の数字のものはインポートされているのですが、 アルファベットが入っている列のものがエラーとなって外に出されてしまいます。 私としましては、全てテキスト型で空文字受付状態であれば、 全てインポートされる物だと思っていたのですが、 エラーになってしまいます。 何か対処方法などご存知方、お教え頂きたくおもいます。 どうぞよろしくお願い致します。

専門家に質問してみよう