人に聞けない痔の悩み、これでスッキリ >>

こんばんは。
アクセスで
100文字のデータを入力したい場合、
フィールドのデータ型は
テキスト型にしてフィールドサイズを100にするのと、
メモ型にするのとどちらがいいのでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

私も、No.1の方と同じく「テキスト型でフィールドサイズ指定」を


推奨します。

ただ、元々は(といっても私が知ってるのはAccess97以降ですが)、
・テキスト型:
  文字数の上限が小さいが、インデックスを設定可能
・メモ型:
  文字数の上限が大きいが、インデックスは設定不可
ということで、

a)サイズの上限に引っかかる場合はメモ型
b)完全一致検索(+先頭一致検索も?)や並べ替えを行う必要がある
 (かつ、サイズが255文字以内)ならテキスト型、

という使い分けだったと思うのですが(以前の回答もその前提)、
http://oshiete1.goo.ne.jp/qa3188809.html

改めて調べてみたところ、Access2002以降ではメモ型の場合にも
インデックスが作成可能になっていました(汗)
http://support.microsoft.com/kb/302525/ja
(『詳細』の項目のところに、「この現象は、Microsoft Access 2000
 より前のバージョンの Microsoft Access では発生しません。
 これは、Jet 3.5 以前ではメモ型フィールドにインデックスを付ける
 ことができないためです。」とあります:
 でもAccess2003のヘルプ(テーブルのデザインビューで『データ型』
 のところにフォーカスを移動してF1キーを押す)には、以前のまま
 「メモ型、ハイパーリンク型、および OLE オブジェクト型のフィールド
 には、インデックスを設定できません。」と書かれているのですが(汗))


・・・ということなので、「文字数を制限したいかどうか」で決めればいい、
ということではないかと思います。
(従って、「100文字まで」と上限を設定したい今回の場合はテキスト型、と)
    • good
    • 1
この回答へのお礼

なるほど!私が使用しているのは2003なのでインデックスはつけられそうですね。ありがとうございます。

お礼日時:2009/04/14 00:09

 テキスト型でフィールドサイズを100にしてください。



 テキスト型は(Access 2000の頃は)フィールドサイズが256文字までしかいけなくって、それ以上ならメモ型を使うという使い分けだったと思います。2002以降は知らんです。
 もちろんなんでもかんでもメモ型でも良いのでしょうが、2つあるという事は恐らくテキスト型の方がデータ管理効率が良いのでしょう。
    • good
    • 0
この回答へのお礼

ありがとうございます。
一番いいのがテキスト型だけど、256文字を超えるならしょうがないけどテキスト型ということですね。

お礼日時:2009/04/12 10:22

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QAccessのRefresh・Requery・Repaintの違い

Requeryはもう一度ソースレコード(テーブル)を読み込むようです。このとき、テーブルの先頭レコードに移動してしまいます。
Refreshは最新のレコード(テーブル)を再表示するような気がします。レコードの移動は起こらない気がします。
Repaintは、VBAでキャプションなどを変更したとき使っています。
でも、よくわかっていません。
どんなときにどんなメソッドを使えばいいのでしょうか?
詳しい方、よろしくお願いいたします。

Aベストアンサー

たびたびすみません。
調べてたらこんなのがでてきました。
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

参考URL:http://www.nurs.or.jp/~ppoy/access/access/acF007.html

QACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ

ACCESSで空白のデーターをクエリで判定/識別する方法を教えてください。
EXCELでは空白を""で判定/識別表していますがACCESSではどうなるのでしょうか。

下の例はフィールドに試験番号があればその番号を、空白なら”欠席”と表示しようとしています。
IIf(([試験番号]="空白の場合何を入れる?"),[試験番号],"欠席")

Aベストアンサー

もうひとつの書き方は
式1: IIf([試験番号] Is Not Null,[試験番号],"欠席")
第2、第3引数の、質問の順序にあわせるとこうなる。

Qアクセス メモ型 255文字以上入れられない

アクセスでテーブルデザインでメモ型にしています。
そのフィールドには何文字でも入力できるようですが、
そのフィールドをフォームのテキストボックスのコントロールソースにすると
なぜか255文字以上入力できません。

テーブルは一度クエリにして、フォームのレコードソースとしています。
ダイレクトにテーブルを開いて、そのメモ型のフィールドに情報を入れることは出来ますが
フォームからは255文字以上は入力できません。

これを回避する方法をご教授ください。

Aベストアンサー

なぜか255文字以上入力できません。
-------------------------------------------------------------
本当ですか? 自分はAccess2010ですが、この制限はありません。
ENTERキーを押下すると次のフィールドに移動するだけで、文字列は
入力できるのではありませんか

ENTERキー押下を改行に変更するには、該当のフォーム名を右クリック
からデザインビューを選択して
メモ型のフィールドクリックするとこのフィールドのプロパティーが表示されます
その他タグのENTERキー入力時動作の枠の右が「規定」になっていたら
ここをクリックして「フィールドに行を追加」に変更してください。

追伸accessヴァージョンによって変わっています。
今後のQには ヴァージョンの記述をおすすめします。

QAccess サブフォームでの選択行の取得

こんにちは。

Access初心者です。

サブフォームでテーブルの項目を表示させていますが、
選択された行を取得する方法はありますか?
サボフォームの下の方に現在選択されているレコード数が表示されてますが、その値でかまいません。

調べているのですが、なかなか検討がつきません。
宜しくお願い致します。

Aベストアンサー

フォーム名がフォーム1、サブフォームコントロールの名前がサブフォーム1だとすると、

Forms!フォーム1!サブフォーム1.Form.CurrentRecord

で取得できます。
(「Forms」と「Form」がありますのでご注意下さい)


また、フォーム1にコードを記述する場合であれば

Me!サブフォーム1.Form.CurrentRecord

サブフォーム1へのコード記述であれば

Me.CurrentRecord

という構文によっても、それぞれ取得が可能です。

QOfficeアクセス テーブル「テキスト型」⇒「日付型」への変換について

テーブルにデータが保管されており、そのフィールドの一つに「テキスト型」で”20080301”のようなデータを持っています。これを「日付/時刻型」”2008/03/01”のように変換したいのですが、どのようにすればよいのでしょうか。

※ちなみにこのオリジナルデータは毎日、自動的にテーブルにダウンロードされており、このテーブル自体の型を予め「日付/時刻型」に変換すると、日々のデータ取得時にエラーとなってしまいます。ですので、「日付/時刻型」のフィールドを持った新規のテーブルに、この”20080301”のデータを変換し格納したいのですがどのようにすればよろしいでしょうか。

テーブル⇒デザインより、該当のフィールドの型を「テキスト型」⇒「日付/時刻型」へ直接変換してしまうと、「データの変換中にエラーが発生しました。○○件のレコードのデータが失われました。」と表示されます。素人のため、なるべく追加クエリや更新クエリや簡単な関数のみでの方法を教えていただけたら幸いです。

Aベストアンサー

テーブルに日付時刻型フィールドを追加して、
更新クエリを使って、#1さんが提案されている
数式を使えばよいのでは?

QACCESSでの改行コード

ACCESSでの改行コードの入力方法を確認させてください。

ACCESSのテーブルにテキスト型のフィールドを用意し、一つのフィールドに改行が入ったデータを入力したいと考えています。

以下の方法を試してみましたが、改行コードが入っていないように思えます。

1.エクセルで一つのセルで、ALT+ENTERで文字列を入力し、テーブルにデータをインポート。

2.上記エクセルのデータをCSVで保存したものをテーブルにインポート。

これら2つのデータをテーブルで確認すると、改行はされていないですし、テーブルのデータをエクスポートしたものも改行はされていませんでした。

フィールドの設定で何か必要なんでしょうか?
それとも、テキスト型のフィールドには改行コードを持てないんでしょうか?

Aベストアンサー

> 改行コードが入っていないように思えます。

No.1の方の回答にもある通り、Excelのセル内とAccessのフィールド内とでは、
改行コードが違います。
ただ、Excelの改行コード自体は、インポートの際に取り込まれていますので、
Accessにてクエリ等を使用して変換してやれば、改行表示されるようになります。

例えば、Excelからのインポートデータが保存されているテーブルを「テーブル1」、
改行コードが入ったフィールドを「フィールド1」とすると、以下のSQL文で改行
コードを変換できます(添付画像は同じもののデザインビュー):

Update テーブル1 Set フィールド1 = Replace([フィールド1],Chr(10),Chr(13) & Chr(10));


※Chr関数は、引数で指定したコードに対応する文字を返す関数です。
  「Chr(10)」はラインフィード(=Excelのセルでの改行コード)を、
  「Chr(13) & Chr(10)」はキャリッジリターン&ラインフィード(=同・Access)を
 それぞれ表します。

※Replace関数は、第1引数で指定した文字列の中から第2引数で指定した
 文字列を探し、あった場合は第3引数で指定した文字列に置換する関数です。
 但し、Access2000では、クエリ上では使えなかったと記憶しています。
 この場合は、標準モジュールでユーザー定義関数を作成してやれば、
 その関数を使用することで同様の処理が行えます。

一例(Replace関数の省略可能な引数を全て省略したもの):

Public Function Replace2(sExp As String, sFnd As String, sRpl As String) As String
  'Replace2関数で指定した引数をそのままReplace関数に渡し、
  '戻り値をそのままReplace2関数の戻り値にします。
  Replace2 = Replace(sExp, sFnd, sRpl)
End Function

> 改行コードが入っていないように思えます。

No.1の方の回答にもある通り、Excelのセル内とAccessのフィールド内とでは、
改行コードが違います。
ただ、Excelの改行コード自体は、インポートの際に取り込まれていますので、
Accessにてクエリ等を使用して変換してやれば、改行表示されるようになります。

例えば、Excelからのインポートデータが保存されているテーブルを「テーブル1」、
改行コードが入ったフィールドを「フィールド1」とすると、以下のSQL文で改行
コードを変換できます(添付画像は...続きを読む

QAccessでテーブル名やクエリ名一覧の抜き出し

Accessでテーブルやクエリを沢山(100個以上?)使っております。

そこで、テーブル名やクエリ名の管理をしたいので、テーブル名(クエリ名)の一覧を抜き出したいのですが、どうすればいいのでしょうか?
または、そういうことは無理なのでしょうか??(;O;)

1個づつコピーペーストでテールブル名をエクセルに貼り付けて行こうかな?と思ったのですが、さすがに数が多すぎるので困っております。

できるだけ簡単な方法がいいのですが、もしなければVBAでもいいです。

おわかりの方がいらっしゃいましたら、よろしくお願いします。

Aベストアンサー

・クエリを新規作成
・以下SQLを貼り付け
SELECT MSysObjects.Type, MSysObjects.Name, MSysObjects.Flags
FROM MSysObjects
ORDER BY MSysObjects.Type, MSysObjects.Name;
・デザインビューで表示
あとは、TypeとFlagsの条件を変えてあげれば一覧できます。

Q【ACCESS】フォーム名/コントロール名を文字列型変数で指定するには

バージョン:Access2002

フォーム「frm01」にテキストボックス「tb01」が作ってある場合、
Forms.frm01.tb01.Value="あいう"
とすれば、フォームもコントロールも指定できるのですが、
Dim strTxt As String
strTxt = "tb01"
Forms.frm01.strTxt.Value="あいう"
だと、文字列型変数"strTxt"が展開されないのでフォーム「frm01」のコントロール「strTxt」を探してしまいエラーになってしまいます。

文字列型変数でフォームやコントロールを指定するには、どのようにすればよいのでしょうか?

Aベストアンサー

フォームの場合
 Forms(strFrm)

フォームのコントロールの場合
 Forms(strFrm).Controls(strTxt)


これでも参照できますが、普通ここまで省略しませんね。
 Forms(strFrm)(strTxt)

あとで見たとき、訳がわからなくなりそう。

QAccess 別テーブルにある値を抽出条件にしたい

OS:WindowsXP SP3
使用ソフト: Microsoft Access2003


選択クエリにて、別テーブルのフィールドにある値すべてを抽出条件にできますか?


ホームページに来て頂いた方の検索キーワードを集計しております。
テーブル1には『検索キーワード履歴』フィールドがあり、お客様が使用した検索キーワードが入力されています。(約2万件)
テーブル2には『除外キーワード候補』フィールドがあり、不要なキーワードが入力されています。(約10件)


クエリにて、『検索キーワード履歴』から『除外キーワード候補』の値を全て除いた結果を出力させたいのですが、
抽出条件をどのように指定したらいいのか分かりません。

そもそも、別テーブルのフィールドにある値すべてを除外させる抽出条件って指定できるのでしょうか。
SQLを用いる方法でも構いませんので教えてください。

Aベストアンサー

SELECT * FROM テーブル1
WHERE NOT EXISTS
(SELECT * FROM テーブル2 WHERE テーブル1.検索キーワード履歴 = テーブル2.除外キーワード候補)
OR 検索キーワード履歴 IS NOT NULL
とか
SELECT * FROM テーブル1
WHERE 検索キーワード履歴 NOT IN (SELECT 除外キーワード候補 FROM テーブル2 )
ということ?
1フィールドに1キーワードの場合です。

Qアクセスのデータ型。数値型についてお聞きしたいのですが・・・

アクセスのデータ型。「数値型」ですが、「フィールドサイズ」に

(1)バイト型(0~255の範囲。小数点以下の数値は扱えない)
(2)整数型(-32,768~32,767の範囲。小数点以下は扱えない)
(3)長整数型(-2,147,483,648~2,147,483,647の範囲。小数点以下は扱えない)
(4)単精度浮動小数点型(-3.402823×10^38~3.402823×10^38の範囲。
            小数点以下の数値が扱える)
(5)倍精度浮動小数点型(-1.79769313486231×10^308~-1.79769313486231×
           10^308の範囲。少数点以下の数値が扱える)
(6)十進型(-10^28-1~10^28-1の範囲。小数点以下の数値が扱える)

と6種類決められますが、それぞれの「選び方の違い」と「その理由」を
教えてください。

たとえば、(1)~(3)くらいなら分かります。
扱える数値の桁数が違うということですよね?で、(1)~(3)を選ぶ時と(4)~(6)を
選ぶときで大きな違いというと、「小数点以下の数値が扱えるかどうか」
ですよね?そういう認識であっているか・・・ということと、上記の(1)~(6)を
「選び分ける必要がある場合」というのを教えてください。

なぜ、このような6種類に分かれているのか、人に説明しないとなりません。

よろしくお願い致します。m(_ _)m

アクセスのデータ型。「数値型」ですが、「フィールドサイズ」に

(1)バイト型(0~255の範囲。小数点以下の数値は扱えない)
(2)整数型(-32,768~32,767の範囲。小数点以下は扱えない)
(3)長整数型(-2,147,483,648~2,147,483,647の範囲。小数点以下は扱えない)
(4)単精度浮動小数点型(-3.402823×10^38~3.402823×10^38の範囲。
            小数点以下の数値が扱える)
(5)倍精度浮動小数点型(-1.79769313486231×10^308~-1.79769313486231×
           10^308の範囲。少...続きを読む

Aベストアンサー

整数型と浮動小数点型の大きな違いは、少数点以下の数字を扱えるかどうかで合っていると思います。
補足すると、浮動小数点型の方が整数型より大きい数字が扱えます。
長整数型なら21億くらいまでしか扱えませんが、浮動小数点型なら、兆、京・・・と非常に大きい数字が扱えるようになります。
有効数字として、どのくらいのケタを保持できるかが、精度になります。
倍精度は単精度の倍の精度です(当たり前ですが)

コンピュータが2進数で数字を表現していることはご存知のことだと思いますが、2進数で少数を表す場合、必ずしも10進数の少数と一対一に対応するわけではありません。2進数を10進数に直すのはnビットめの数字(0,1)*2のn乗の和ですが、少数の場合は-n乗になります。つまり1/2+1/4+1/8っていうような感じになります。0.75だったら、1/2+1/4で表現できますが、0.3とかになると1/4+1/32+・・・という感じできっちり表現しきれないので、0.299・・・という近似値になります。

それで問題があるようでしたら、十進型を使えば?ってことだと思います。

整数型と浮動小数点型の大きな違いは、少数点以下の数字を扱えるかどうかで合っていると思います。
補足すると、浮動小数点型の方が整数型より大きい数字が扱えます。
長整数型なら21億くらいまでしか扱えませんが、浮動小数点型なら、兆、京・・・と非常に大きい数字が扱えるようになります。
有効数字として、どのくらいのケタを保持できるかが、精度になります。
倍精度は単精度の倍の精度です(当たり前ですが)

コンピュータが2進数で数字を表現していることはご存知のことだと思いますが、2進数...続きを読む


人気Q&Aランキング