プロが教える店舗&オフィスのセキュリティ対策術

フォーム上にあるボタンを押すと、あるフィールドに数値を入力する
VBAを作りましたが、フィールドには入力されませんでした。
色々やってみたらフォーム上にフィールドが無いと入力されないようでした。
これはAccess2002の仕様なのでしょうか。
それともそのための表記があるのでしょうか。

例)
顧客ID = 1

単純にこれだけのことがしたいのですがうまくいきません。
よろしくお願いします。

A 回答 (4件)

余計なことかもしれませんが、フォーム上のテキストボックスには、アクセスが勝手にフィールドと同じ名前をつけます。

が、フィールドにつながっている別のものです。
ですから、テキストボックスにフィールドAとおなじ名前をつけて、フィールドBをソースにしてもよいのです(やったことありませんが、できるはずです)。

本題に戻して、アクションクエリを呼び出すには DoCmd オブジェクトの OpenQuery メソッドを使用します。
例えばコマンドボタンのクリックイベントに

Private Sub コマンドボタン_Click()
DoCmd.OpenQuery "クエリ名"
End Sub

と書きます。
クエリ(ご質問の場合は更新クエリになりますが)は、普通にクエリビルダで作成します。
クエリが選択クエリなら、その結果が表示されます。
詳しくはヘルプをご参照ください。

ついでに ADO を使ったやり方。

Private Sub コマンドボタン_Click()
Dim Cnxn As ADODB.Connection
Set Cnxn = CurrentProject.Connection
Cnxn.Execute "SQL"
End Sub

SQLとは、言ってみればクエリを逐語的に記述したものです。
ADOは、VBAから直接テーブルを操作するしくみです。
    • good
    • 0
この回答へのお礼

まだ私には難しい内容ですが勉強になります。

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

お礼日時:2008/09/12 23:32

#1です。


フィールドとは「顧客ID」という名のテキストボックスなんですね?

Forms!<フォーム名>.[顧客ID] = 1

をコマンドボタンのClickイベントに記述してください。
<フォーム名>は、現物にあわせ適宜変更してください。
これからテキストボックスを配置するなら、Text1といった名前でしょうから、顧客IDに変更するなどしてください。



#2さんの1)呼び出すとは、オブジェクト「クエリ」で「更新クエリを作成し、呼び出す(=クエリを実行する)」ということです。
    • good
    • 0
この回答へのお礼

なるほど、勉強になりました。

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

お礼日時:2008/09/12 23:31

申し訳ありませんが、よくわからないのですが、フォーム上にフィールド(テキストボックスのことだと思いますが)がないのに、なぜ、どこに、1を表示、あるいは入力するのでしょうか。


存在しないテキストボックスに、値を入力しようとしてもできないのは、Access2002の仕様というより、至極当たり前のことだと思うのです。

フォームではなくて、テーブルの、当該レコードの「顧客ID」フィールドに1を入力するのですか?
それなら、いくつか方法があると思います。
1) アクションクエリーを作って、それを呼び出す。
2) ADODBを使って、SQLを走らせる。
3) フォーム上の「顧客ID」をソースにする非表示のテキストボックスを作って、そこに書き込む。

はずしてますかね。
    • good
    • 0
この回答へのお礼

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

>フォームではなくて、テーブルの、当該レコードの「顧客ID」フィールドに1を入力するのですか?
はい、そうなんです。
顧客IDというフィールドを変数として使用したいと思っており、
変数ならばわざわざフォーム上に表示させる必要も無いと思ったしだいです。
基本的にフォーム上に無ければ入力はされないということなんですね。
教えていただいた3)の方法をとろうと思います。

後学のために教えていただきたいのですが、1)の呼び出すというのはどのような表記をすればいいのでしょうか。

お礼日時:2008/09/11 09:16

例示の「顧客ID = 1」の「顧客ID」を、どのような利用をなさろうとされているのか、によります。


「変数」という「入れもの」は、フォーム上の「テキストボックス」だったり、Dimで宣言する Integer型やLong型やString型であったりします。

VBAでForm上に定義してあるオブジェクト(例:TextBox1)を参照する場合は

 Forms!TextBox1.Text = 1

をコマンドボタンのClickイベントに記述するなどします。
    • good
    • 0
この回答へのお礼

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

顧客IDというのは数値型のフィールドです。
フィールドに1という値を入力したいだけなのです。
なにか宣言のようなものが必要なのでしょうか。

お礼日時:2008/09/11 00:58

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

関連するカテゴリからQ&Aを探す