Access2000を使用しています。テキストボックスへの式の書き方なのですが、たとえばレコードソースに指定されているテーブルにNameというフィールドがあるとします。


コントロールソースに「Name」と書いたときは期待通りにテーブルのNameフィールドが表示されますが、「=Trim([Name])」と書いたときにはフォームの名前が表示されてしまいます。これを回避する記述方法はあるのでしょうか。

他にこういったAccess特有(VBA特有?)の記述方法がありましたらよく使うものをいくつか教えていただけるとありがたいです。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答7件)

id:kanetetu No.1

回答回数2199ベストアンサー獲得回数11

ポイント10pt

http://www.mahoutsukaino.com/ac/ac2000/ac2000/kihon2/s017.htm

MS-Access2000超入門部屋--基本操作をさらに考える

こちら参考になると思います。

id:eggi

ありがとうございます。

基礎の基礎をまとめたサイトはいいですね。一通り勉強したいと思います。しらなかった便利な機能を発見しそうで楽しみです。ですが、ちょっと希望の答えは(とりあえずこのページにはないようです。)

2004/05/11 16:58:00
id:fk_2000 No.2

回答回数249ベストアンサー獲得回数1

ポイント10pt

http://www.mahoutsukaino.com/ac/ac2000/ac2000/report/01.htm

MS-Access2000超入門部屋--印刷するときにレポートのレコードソースを入れ替える

ご参考ください。

id:eggi

ありがとうございます。

ですが、レコードソースの入れ替えとはちょっとちがうような・・・。

2004/05/11 17:00:18
id:karen_maria No.3

回答回数104ベストアンサー獲得回数0

ポイント40pt

http://ww3.tiki.ne.jp/~kaya/Ac_tips.html#Tips0_001

ミニミニ Access Tips

ヘルプにものっていますが、NameはVBの予約語であるためこのような動作を起こすので、会費のためには面倒ですが、Trimを行う関数を一つ作成して表示するのがよいかと思います。関数の作成方法はお分かりでしょうか?

id:eggi

ありがとうございます。

予約語ですか。確かに・・。

しかし、Nameと書くだけのときはちゃんと動くんですよね。そこも不思議な感じです。

関数を作る方法は知っています。

2004/05/11 17:11:35
id:cx20 No.4

回答回数607ベストアンサー獲得回数108

ポイント40pt

恐らく、”Name” という名称が、

フォームの ”Name” プロパティとして解釈されているものと思われます。

できれば、フィールド名を直されることを推奨します。

また、コントロール名(テキストボックスなどのオブジェクト名)と

レコードソースで使うフィールド名がバッティングしていた場合も

不具合が起こる可能性があります。

例えば

コントロール名:Field1

レコードソース:=Trim([Field1])

とかすると、エラーになる可能性があります。

ですので、なるべく、コントロール名は、

”txtField1”(プレフィックス+フィールド名)のように

名称がバッティングしないように注意する必要があります。

例)

コントロール名:txtField1

レコードソース:=Trim([Field1])

id:eggi

ありがとうございます。

今まではそのような工夫でやってきたのですが、

なにかいい方法があるのかなと質問させていただきました。もう少し待ってみます。

2004/05/11 17:13:27
id:cx20 No.5

回答回数607ベストアンサー獲得回数108

ポイント40pt

URL はダミーです。

レコードソースのフィールド名の指定を

”テーブル名” + ”.” + ”フィールド名”

にするとうまくいくかもしれません。

=Trim([TableName.FieldName])

id:eggi

ありがとうございます。

この場合、「このオブジェクトには、オートメーションオブジェクト ’テーブル1’ は含まれません」というエラーになりました。

2004/05/11 17:34:24
id:bitam No.6

回答回数5ベストアンサー獲得回数0

ポイント40pt

http://www.hatena.ne.jp/1084260966#

Access2000を使用しています。テキストボックスへの式の書き方なのですが、たとえばレコードソースに指定されているテーブルにNameというフィールドがあるとします。 コン.. - 人力検索はてな

アドレスはダミーです。

AccessはSQLの中でVBの関数が使えたりします。

ですので、レコードソースへ以下のように書くと「名前」というフィールド名が「Name」をTrimしたものになります。

SELECT *,Trim(Name) As 名前 from テーブル1

id:eggi

ありがとうございます。

SQLのなかでVBの関数がつかえるというのは新たな発見でした。

ただ、Nameは例ですので、うまく書く記述方法があるのかなと思いました。

実際にはSQLサーバーのストアードプロシージャが返すレコードセットを使用しています。

出来るだけ簡単に解決したかったのですが、どうもなさそうな感じがしてきましたが、もう少しだけ待ってみます。

2004/05/11 17:37:26
id:karen_maria No.7

回答回数104ベストアンサー獲得回数0

ポイント40pt

2度目の書き込みです。特有の記述方法についてはこれなどどうでしょう。

ここはAccessではまった人のための掲示板です。(リニューアルで書き込みはできないようですが…。)

コントロールソースでの書き込みの違いですが、

Nameだけの場合は、フォームのレコードソースによるドロップダウン制御ができることより、Accessによるフィールドリストをあらかじめ引っ張ってきているためフィールドでのNameが強いのに対し、

=Trim([Name])とやると、フィールドより予約語の方が強くなるのではと思います。

それにしても、予約語はフィールド名に使用できないというエラーメッセージでも出してくれるといいんですがね…。予約語はとかくバグが出やすいので避けてくださった方が無難です。Nameなんていかにもつけてくださいって名称ですから。

id:eggi

ありがとうございます。

Accessって非常に便利ですけど、簡単なことではまってしまったりしてその際にはこの「はてな」など本当に助かります。

2004/05/11 18:19:06
  • id:bitam
    おまけですが...

    ストアドのデータを表示するだけならいっそのことフィールド名を変えてしまうのはどうでしょう?
    Select *,Name As 名前,Add As 住所 From [テーブル名]...
    のように、予約語と重なる心配のある項目のみ重ならないフィールド名に変えてしまえば後で悩まなくても良いと思います。
  • id:eggi
    Re:おまけですが...

    ありがとうございます。

    その方法で対応しているところもあるのですが、
    まったく予約語とかで引っかからない、「レコードソースのフィールド」をさす記述方法がないかなと思って質問させていただきました。

    しかし、微妙に扱いづらいのはもうちょっとの工夫だと思いますが、なかなかこういうのはなくならないものですね・・。
  • id:cx20
    今さらですがKBに情報が載ってました。

    [ACC2002] Access 97 から変換されたラベルのコントロールソースが Report!Name の場合 ”#エラー” と表示される
    http://support.microsoft.com/default.aspx?scid=kb;ja;282321

    1. デザイン ビューでレポートを開きます。
    2. ”#エラー” を表示するコントロールを選択します。
    3. プロパティ ウィンドウが表示されていない場合、
      [表示] メニューの [プロパティ] をクリックします。
    4. プロパティ ウィンドウの [データ] タブをクリックします。
    5. ”コントロールソース” プロパティを
      ”=Trim(Report![Name])” から Name フィールドに変更します。

    だそうです。

    また、Access 2000/2002 に「名前の自動修正」機能というのがあるようですが、
    いまいち使い方が分かりませんでした・・・(^^A

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません