- ベストアンサー
Accessでの入力で。
「一覧」テーブル ・名前 [テキスト] ・項目1 [コンボボックス/項目] ・項目1の評価 [コンボボックス/評価] ・項目2 [コンボボックス/項目] ・項目2の評価 [コンボボックス/評価] としてあり、 「評価」テーブルは5~1の値が入っている状態です。 「項目」テーブルには何も入っていなく、 テーブルの「項目1」や「項目2」で値が入力されたら、その値をどんどん追加していきたいのです。 そしてその「項目」テーブルの値を「項目1」や「項目2」で使用して・・・と相互させたいのです。 このようなことを実現させる方法は何でしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ご苦労様です。 BeforeUpdateよりAfterUpdateイベントの方がよさそうです。 まず、[項目]テーブルに[内容]というフィールドがあるとします。 とりあえず、項目1の場合です。フォームの[項目1]のコンボボックスの"更新後処理"のイベントプロシージャを起動します。 Private Sub 項目1_AfterUpdate() Dim SQL As String '項目1コンボボックスに値が入力されている場合のみ追加 If Me!項目1.Value <> "" Then '[項目]テーブルに同じ内容のデータがない場合のみ追加 If DCount("内容", "項目", "内容 = '" & Me!項目1.Value & "'") = 0 Then SQL = "INSERT INTO 項目 (内容) " & _ "VALUES ('" & Me!項目1.Value & "')" DoCmd.RunSQL SQL End If End If End Sub 項目2、項目3も同様です。DCount関数などはヘルプを参照して下さい。 試してないのであまり自信はありません。 では。
その他の回答 (1)
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。maruru01です。 こちらの質問については、 現在、[一覧]テーブルの内容の追加や編集はどうやっているのでしょうか? もし、テーブル上でやっているのなら入力用フォームを作成することをお奨めします。 これは普通にフォームの新規作成で出来ると思います。 そして、項目1や項目2の値を[項目]テーブルに追加するコードを追加します。 追加するタイミングは場合によります。 各項目に入力し終わったら(ExitかLostFocusイベントか)追加するか、全体の追加・編集を保存する時(FormのBeforeUpdateイベントか)かで書き方は変わります。 また、[項目]テーブルのデータを[項目1]などで使用する場合は、入力フォームの[項目1]などをコンボボックスにして、ソースを[項目]テーブルにして、入力チェックを"いいえ"にしておけばよいでしょう。 がんばって下さい。 では。
お礼
たびたびありがとうございます。 >もし、テーブル上でやっているのなら入力用フォームを作成することをお奨めします。 はい、フォームでやっています。(「入力フォーム」) >各項目に入力し終わったら(ExitかLostFocusイベントか)追加するか こちらの方法でやりたいのですが、どのようにしたらいいのでしょうか? 何から何まで質問してしまってすいません。 よろしくおねがいします。
お礼
はい、これです! これがやりたかったんです! ほんとうにありがとうございました!!