こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Access2010 テキスト型をスペース埋めずに

Access2010でテキスト型の項目に、テーブルを開いて直セル入力orコピペでデータを入力すると、最大文字長(255文字)まで後ろにスペースが埋められるのですが
VBAでADOを使ってデータをINSERTするとスペース埋めされないようです。
これはAccessの仕様ですか?
それとも私の勘違いでしょうか。

できればスペース埋めずに登録したいのですが・・・。

投稿日時 - 2018-03-27 18:11:23

QNo.9482343

困ってます

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

> Access2010でテキスト型の項目に、テーブルを開いて直セル入力orコピペでデータを入力すると、最大文字長(255文字)まで後ろにスペースが埋められるのですが

まさかとは思いましたが、
この現象に出くわしました。\(◎o◎)/!

Access 2010 SP2 です。

【再現手順】
テーブル作成、数値型のフィールド作成し保存して閉じる。
(既存のもので可、数値型のフィールド込みのもの)

上記テーブルをデザインビューで開き、
数値型のフィールドをテキスト型に変更、
「オブジェクトに名前を付けて保存」で別名にして保存。
閉じる。

変更したテーブルをデータシートビューで開くと、
当該フィールドで質問者さんの現象が起きます。

【対策】
当該フィールドの構造に影響のあるような変更を加える。
・「ユニコード圧縮」を「はい」にする。
・「フィールドサイズ」を「254」にしてみる。
等々。

これで、新規入力は改善されますが、
入力済みのデータのスペースは削除されません。
改めて、更新クエリで
UPDATE テーブル名 SET フィールド名 = RTrim([フィールド名])
とか。

投稿日時 - 2018-04-09 16:37:03

お礼

> ・「ユニコード圧縮」を「はい」にする。
原因はコレでした!

ユニコード圧縮を「いいえ」から「はい」に変更したら、余分なスペースが埋められずに登録することができました!!

あと、
> INSERTするとスペース埋めされない
は私の勘違いで、INSERTでも直接入力でも同じでした。すみません。

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

投稿日時 - 2018-04-11 09:44:48

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

> Access2010でテキスト型の項目に、テーブルを開いて直セル入力orコピペでデータを入力すると、最大文字長(255文字)まで後ろにスペースが埋められるのですが
そもそもこれが勘違いかと。
Accessのテキスト型のフィールドは、固定長ではなく、可変長なので、そのようなことはないです。
下記のリンク先の最後の方に、下記の記述があります。
> 注: テキスト型フィールドのデータ (Access 2016 を使用する場合は短いテキスト) では、実際の値を保存するのに必要な領域だけが確保されます。"

フィールド サイズの設定 - Access
https://support.office.com/ja-jp/article/%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89-%E3%82%B5%E3%82%A4%E3%82%BA%E3%81%AE%E8%A8%AD%E5%AE%9A-ba65e5a7-2e6f-4737-8e72-36b93f966a33#bm3

投稿日時 - 2018-04-02 18:25:03

お礼

返信が大変遅くなり申し訳ありません。
回答ありがとうございます。

そのリンク先の記事は見覚えがあり、
私もAccessのテキスト型フィールドは、固定長ではなく可変長という認識だったのですが、
データ入力後にテーブルを開いて、
直接選択してみても、メモ帳にコピペしても、スペースが埋められてるようなので
固定長としか考えられませんでした。

Unicode圧縮を「いいえ」にすることで解決できました。

投稿日時 - 2018-04-11 09:52:48

ANo.1

はじめまして。

文字列には可変長と固定長というものがあります。どのようにINSERT文を書いているのかわかりませんが、固定長の文字列変数にスペースを付けてからSQL文を実行すればよいかと思います。Accessの仕様は確認していませんので、SQL文を組み立てる際の参考にしてください。

ちなみに、データベース設計の観点からすると「スペース埋め」はオススメしません。スペースも立派な文字ですのでデータベースの領域を使用します。そのため、件数が増えるにつれて無駄にデータベースサイズが大きくなります。

スペース埋めをする目的が印刷や画面表示のためであれば、そのタイミングでスペースを埋めて表示する方が無駄がありません。何より仕様変更(印刷や画面のレイアウト変更など)に強くなります。データベースはデータの保管場所と割り切って、アウトプットするときに調整する方がスマートです。

投稿日時 - 2018-03-28 10:16:35

お礼

返信が大変遅くなり申し訳ありません。

私もスペースを埋めずに登録したいです。。。

Unicode圧縮を「いいえ」にすることで解決できました。

投稿日時 - 2018-04-11 09:54:37

あなたにオススメの質問