• ベストアンサー

Accessのテーブルレイアウト

Accessでテーブルをインポートします。 そのときの項目が例えば会員番号12桁(12バイト)とか決まっています。 ところがACCESS側のテーブルレイアウトは会員番号の大きさが テキスト型でサイズが255とかになっています。 多分前任者がそのまま適当に作った感じなんですが、 別にサイズを12に揃えなくてもACCESSで勝手に処理してくれているみたいです。 多分、サイズはインポートするデータのレイアウトに合わせた方がいいと思うのですが、 そのままでも大丈夫なのでしょうか。それとも揃えるべきなのでしょうか。 揃えないと弊害がある場合はあわせてご指摘下さい。

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

  • ベストアンサー
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.4

>1バイトのものが2バイトになると困ります。 MSがゆーざーが困るようなものに変えるわけがないと思いませんか >書いていてまた分からなくなってきました。。。 まず、unicodeについて調べてみては WEBで検索すれば山ほど出てきますよ

yasyatengu
質問者

お礼

たびたびすみません。 検索して1文字2バイトというのはよく分かるんです。 でも分かったつもりでAccess眺めていると1バイト、2バイト??と 急に頭をわしずかみにされて引っ張られるようにわけが分からなくなります。 #5の方の投稿がないと今週はまっていたかもしれません。

その他の回答 (4)

  • gungnir7
  • ベストアンサー率43% (1124/2579)
回答No.5

>1バイトのものが2バイトになると困ります これはAccess内部、つまりテーブルにインポートしたときに 自動的にUNICODE(2バイト)に変換されるということです。 元のCSVデータは勿論変化はないですし、 CSV形式でエクスポートするときも半角データは1バイトになっているので ユーザの運用程度でしたら、それ程心配することはありません。 Access内部ではUNICODEで扱われるので、バイトで編集するような VBAのコードを扱っている場合は注意しましょうということです。 例えばテキスト型の変数に半角データでAAと入れます。 これをLen関数を使うと2と返ってきますが、LenBでは4と返ってきます。 半角データを1バイトと扱う通常の感覚ならLenBを使えば返却値は2です。 文字数を求めるのにLenを使えば問題ないですが、 LenBを使う場合は錯覚する危険がありますから注意しましょうということです。

yasyatengu
質問者

お礼

ありがとうございます。だいぶ整理できたように思います。 インポートやイクスポートではしっかり半角が1バイトになっていると聞いて少し安心しました。 >半角データを1バイトと扱う通常の感覚ならLenBを使えば返却値は2です あ、lenb使っていると思います。 しっかり調べてみないと分かりませんが、どっかにあったような気がします。

yasyatengu
質問者

補足

今回も皆さんのお知恵をお借りして色々と助けてもらいました。 本当は皆様にポイントをあげたいのですが 質問内容にそってポイントを割り振りたいと思います。 最初の質問に3回も返信を下さった方に20point、 私の後発的に発生した質問に丁寧に答えて下さった#5の方に10point割り振ります。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.3

>CSV形式のデータは半角のものもあるので2バイトにされると困るんですけど。 2バイトになっても半角が全角になるわけではありません unicodeではすべての文字が2バイトになります

yasyatengu
質問者

補足

すみません。かなり混乱したものですから?をいっぱいつけてしまいました。 >2バイトになっても半角が全角になるわけではありません 半角全角の問題ではなくて、CSV形式のデータが半角のデータは皆1バイトなので 1バイトのものが2バイトになると困ります。 書いていてまた分からなくなってきました。。。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

Accessのテキスト型は可変長です 255にしてあっても実際に格納されるデータ分の大きさになります あのサイズはその大きさのものを準備しておくというより 格納されるデータの大きさに制限を設けるという意味です ですからAccessのみで使用するものならそのままでも大丈夫です 将来SQLサーバーにアップサイズする予定があるのなら きちんと設定しておいたほうがいいでしょう なおAccessはunicodeを使用しますから1文字はすべて2バイトですよ 255はバイト数ではなく文字数です

yasyatengu
質問者

補足

回答ありがとうございます。 可変長にunicodeと知らない言葉がたくさん・・・ 可変長というのはmp3のVBRみたいなものですね。 なるほど、ACCESSのみで使う分にはそれで十分と。 SQLServerには過去に色々教えてもらっているので何となく分かります。 ですがunicodeは?????????????? CSV形式のデータは半角のものもあるので2バイトにされると困るんですけど。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

「インポートした」ということは、別システムがデータ作成してるんですね? インポートした後、そのテーブルは参照のみで使用するなら、特段なにも必要ないでしょう。 インポートした後、そのテーブルに新たに値を登録したり、修正するのであれば、イレギュラーデータを作らずに済むよう、桁を揃えるべきでしょう。

yasyatengu
質問者

お礼

回答ありがとうございます。 別システムというかエクセルデータ(CSV形式)です。 データは確かに別システムがはき出しています。 参照だけということはあり得ないので桁は揃えた方がよさそうですね。

関連するQ&A

  • Accessのテーブルにデータを追加する方法

    Accessに関する質問です。 今、同じレイアウトのCSVファイルが100個あります。 その100個全てをAccessに取り込みたいと考えています。 今は、1個目のCSVをインポートして、データ項目の名称を 一部変更しています。 このインポートしたテーブルに2個目のcsv,3個目のcsv・・・と 結合していきたいのですが、どのように操作すればいいでしょうか?

  • テキストデータ(データベースダンプ)をアクセスに取り込む。

    データベースのダンプファイルを月1で送られてきて、それをブチ切りにしてピボットテーブルを使い、仕分けをしています。アクセスで一括処理+プリントアウトまで出来るようにしたいと思っているのですが、良い情報が見つかりません。 とりあえず、サンプルデータとしては 名前(20桁)社会保障番号(9桁)電話番号(10桁)がズラズラ100項目並ぶタダのテキストデータです。NULL部分には~(チルダ)が入っておりますので、縦でズッバ!っと切ってもデータがシフトすることは無いです。 アクセスにインポートするときに、縦で切る作業を自動化したいと思っていますが、良いスクリプトなどがあれば、ご教授ください。 今エクセル内蔵のインポートツールを使い、100ある項目を一つずつ切っている状態です。 もしくは、テキストを横列でインポートしておき、left、mid、rightなどのファンクションでブチ切りにして、データを作り直す方法でも構いません。 とりあえず、Gooの中は検索をかけて調べてみたのですが、良い例が見つからなかったもので、ご教授いただければ、幸いです。 宜しくお願いします。

  • Accessにインポートしたら並び順が変わっちゃった

    Access2000 を使っています。 ExcelデータをAccessテーブルにしようとしましたが、全項目をテキスト型で入れたいのに、自動的に各項目の型が変わってしまうので、一旦CSVに落としてAccessにインポートしました。 ところが、インポートされたテーブルではレコード順が違っちゃっているんです。 総数は変わっていませんから、全て入ってはいるんでしょうが。 いったい何がいけないんでしょうか。多量のデータをインポートするのに不安でいけません。誰か教えて下さい。

  • CSVファイルをアクセスのテーブルに出力する

    こんにちは Access VBA初心者です。 やりたい処理なのですが CSVファイルをmdb内であらかじめ作成されているテーブルに出力したいのですが、 最初にTransferTextwでワークのテーブルにインポートして そのワークテーブルを1レコードずつ読み込みmdbのあらかじめ作成されているテーブルにINSERTしていくという方法しか今思いつきません。 インポートするとワークテーブルはすべてテキスト型になっていますが、 それを違う型の項目にINSERTするということなど可能なのでしょうか? それとももっとスマートな方法があるのでしょうか? ざっくりと書いてしまいましたが、よろしくお願いいたします。

  • ACCESSでテーブルの一部だけを更新したい

    Access2000を使用しています。 テーブルの更新方法についてアドバイスをお願いいたします。 Excelの表からインポートとして「テーブルA」を作っています。 Excelからは項目「A、B、C、D」をインポートしていますが、テーブルにインポートしたあとで、項目「E、F、G」を新たに追加作成し、値を手入力しています。 (Excelにはこの項目がないためです) Excelの表は時々更新されるため、その都度上書きとしてインポートしなおす必要があります。 しかしそうすると項目「E、F、G」が消えてしまいます。 項目「E、F、G」の値を残したまま項目「A、B、C、D」を更新するなどということはできるのでしょうか? 代替案でもけっこうですのでどうぞよろしくお願いします。

  • テキストでは0が表示。アクセスだと消える

    すみません、助けてください。 テキストのCSVからアクセスへインポートした際、 テキスト表示では「012345」となっているものが、 アクセスにインポートすると、「12345」となってしまいます。元データは全部で6桁ありまして、例えば、「5」の表示は「000005」、「14」の表示は「000014」というように表示させたい場合、テーブルの設定はどうすればよいでしょうか。10万件のデータのため、エクセルでは入りきりません。 よろしくお願いいたします。

  • ACCESSのテーブルをCSVにして

    お願いします。 ACCESSのテーブルをCSVにして指定のホルダーに入れたいのです。 テーブル T_在庫表  項目は 「品番」 「在庫数」 エクスポート先 c\在庫\在庫表.txt マクロで テキスト変換   区切り記号付きインポート 在庫 c\在庫\在庫表.txt と入れましたがうまくできません。 ほかにいい方法はありませんか?

  • ACCESSで同じテーブルにインポートするには

    ACCESSで、商品番号を検索するためのものをつくりました。 フォームに検索欄を作って番号を入れれば検索できるようにしたのですが、日々ACCESSに入力していくのではなく、日々エクセルから作ったそのACCESSファイルのテーブルに累積するかたちでインポートしたいのですがどうやればいいのでしょうか。

  • アクセス テーブルインポート 自動化

    アクセスをよくわかってなく、幼稚な問ですが、教えてください。 複数のテキストファイルから一つをファイル名で選択して、テーブルイン ポートします。 マクロで自動化させたいのですが、どのようにすれば良いでしょうか? ・テキストファイルは、DBと同一フォルダ内の特定フォルダ内に、日次  で追加新規作成され、ファイル名は西暦8桁と末尾にアルファベット一  文字 ・スペース区切りで値はすべて文字列 ・可能ならば、毎回、フィールド数100の内、前半50のみをインポートしたい ・テーブルもインポートの都度、追加新規作成 また、上記のテーブルからクエリで特定のフィールドを抽出するのですが、 対象となるテーブルを名称で選択して行う場合、一般的にはどのようにす るのでしょうか? お手数ですがよろしくお願いします。

  • Accessシステムオブジェクトの編集

    Accessにてテキストインポートウィザードにて固定長を定義した情報がシステムオブジェクトテーブルに存在するのですが、そのテーブルを編集したいのですが編集できません。 テキストインポートウィザード上であると項目が多いと編集が面倒なのでテーブルの形式にてexcelからの貼りこみなどを実施したいのです。 どなたか教えてください