- ベストアンサー
テーブルをコンボボックスで選びたい
いつも、お世話になっています。お願いします。 1つのフォームで複数のテーブルにデータ入力をしたいのです。 テーブルに、平成14年1月、平成14年2月、・・・、と 毎月分あります。 現在は、コマンドボタンを作成して、以下のようにしてます。 Private Sub コマンド1_Click() Me.RecordSource = "平成14年1月" End Sub Private Sub コマンド2_Click() Me.RecordSource = "平成14年2月" End Sub これですと、テーブルの数のコマンドボックスが必要ですので、 ちょっと、煩雑に見えています。 コンボボックスを作って、 テーブルを選べるようにしたいのですが、 式ビルダとか、見ているのですが、出来ません。 お教えください。お願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
コンボボックスをcboTableNameとして、 Private Sub cboTableName_Change() Me.RecordSource = Me![cboTableName].Text End Sub ――ってのでどうでしょう?
その他の回答 (2)
- ShadowMoon
- ベストアンサー率59% (73/122)
Access2000での前提でお答えします。 コンボボックスの値集合ソースに何もいれないと、表示されません。 (1)まずは、テーブル名を入れたテーブル(テーブル名は、仮に”平成テーブル名”としておきます。)を作成してください。 作成したテーブルのフィールドは、ID(オートナンバー型)、テーブル名(テキスト型)として、テーブル名フィールドに平成14年1月、平成14年2月、・・・と入力してください。 (2)コンボボックス(cboTableName)のプロパティで、値集合ソースを SELECT [平成テーブル名].[ID], [平成テーブル名].[テーブル名] FROM 平成テーブル名; とします。 列数は2、連結列は1としておきます。 (コンボボックスを最初から作成すると、ウイザードで指定できるので簡単ですが・・・) (3)コンボボックス(cboTableName)の更新後イベントに次のような処理を入力します。 Private Sub cboTableName_AfterUpdate() Dim strテーブル名 strテーブル名 = Me.cboTableName.Column(1) Me.RecordSource = strテーブル名 End Sub 'もし、テーブル名フィールドが、1番目ならColumn(0)、3番目ならColumn(2)としてください。 とりあえずは、これでできますので、お試しください。ご参考になれば幸いです。
お礼
ShadowMoonさん、ありがとうございます。 お教えどおりにやりましたが、当方が未熟ゆえに、 完了できませんでした。 コンボボックスに、SELECT [平成テーブル名].[ID]と出ます。 クリックすると、以下のエラーが出ました。 実行時エラー '3078': 入力テーブルまたはクエリ 'SELECT [平成テーブル名].[ID]' が見つかりませんでした。そのテーブルやクエリが存在していること、 または名前が正しいことを確認してください。 デバッグを押下すると、 Me.RecordSource = strテーブル名 の行を示します。 もっと、引き続いてお教え願いたいのですが、 ご迷惑をお掛けしそうなので、辞めておきます。 どうも、ご丁寧にありがとうございました。失礼します。m(_ _)m
- harumimi
- ベストアンサー率46% (51/109)
コンボボックスの指定の仕方は、 cboTableNameのプロパティで、 [値集合タイプ] = 値リスト [値リスト] = "平成14年1月";"平成14年2月";"平成14年3月" と指定します。 [コントロールソース]は、何も指定せずに非連結で良いと思います。 それで、No1の方の回答のコードも指定します。
お礼
harumimiさん、ありがとうございます。出来ました。 感激しています!本当に、アドバイスを頂き、 ありがとうございました。m(_ _)m
お礼
コンボボックスの名前をcboTableNameとしました。 よく分からないので、イベントタブのところは、 変更時の[イベント プロシージャ]にお教えいただいた ように、記述をしましたが、コンボボックスにテーブル名が、何も出てきません。 プロパティのデータタブのところの コントロールソースには何を入れたらいいのでしょう。 などなど、分かりません。お願いします。