アプリ版:「スタンプのみでお礼する」機能のリリースについて

サブフォーム上で適当なレコード(IDと商品名)を選択して、そのレコードにある入力ボタンを押すと、フォームのコンボボックス上にその商品名が出るようなフォームがあります。
すでに入力済みのIDと商品名は表示されます。

ところが、サブフォーム上でIDと商品名を新規入力して入力ボタンを押すと、フォームのコンボボックスは空白となり、商品データが表示されません。
しかし、一旦フォームを閉じて開くと、データは表示されています。

IDと商品名を新規入力して、そのままフォームのコンボボックスに反映させたいと思います。
入力ボタンはこのようにやってみました。

Private Sub 入力_Click()
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
Forms!フォーム!ID = Me.ID
End Sub

または、

Private Sub 入力_Click()
DoCmd.RunCommand acCmdSaveRecord
Forms!フォーム!ID = Me.ID
End Sub

ご教授いただければ幸いです。よろしくお願いいたします。

A 回答 (1件)

> コンボボックスは空白となり、商品データが表示されません。



コンボボックスのリストは、参照元のテーブルに対する新規登録を
自動で反映するようにはなっていないので、それを反映させるための
コードが必要になります。

この反映には、Requeryを使用します。
(値集合タイプが「テーブル/クエリ」のコンボボックスの場合)

以下のコードは、コンボボックス名が「商品名」の場合です。
(IDそのものを表示する「ID」テキストボックスと、コントロールソースが
 同じで商品名を表示する「商品名」コンボボックスがあるものと推測)

Private Sub 入力_Click()
  DoCmd.RunCommand acCmdSaveRecord
  Forms!フォーム!商品名.Requery
  Forms!フォーム!ID = Me.ID
End Sub

また、表示を更新する対象がメインフォームなのでしたら、「Me」を使用して
以下のようにすることもできますので、参考まで:

Private Sub 入力_Click()
  DoCmd.RunCommand acCmdSaveRecord
  With Me.Parent
    !商品名.Requery
    !ID = Me.ID
  End With
End Sub


※「DoMenuItem」はAccessのバージョンへの依存性が高いため、
  ヘルプでは「DoCmd」での対応が推奨されています。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
Requeryでできました。
DoMenuItemについても勉強になりました。これからはDoCmdを使おうと思います。
ありがとうございました。

お礼日時:2008/12/19 14:38

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