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

フォーム入力時、顧客や商品データが無い場合、フォームを開いたままで、そのテーブルを開き、顧客や商品データを入力、閉じます。
フォームでは、顧客や商品データはコンボボックスで選ぶ用にしていますが、それにテーブルに新たに入力したそのデータが出てきません。
フィールド→更新、やフォームを閉じ開きすれば、現れます。
これを、例えばボタンを作成し、テーブルにデータ追加後、ワンクリックで、フォームのコンボボックスに新入力データを反映させるにはどうすれば良いのでしょうか(SQLの方が良いか?)。
また、フォームのコンボボックスのデータは、フォームを開いた時のテーブルやクエリのデータそのままで、コンボボックス選択時に再読み込みなどはしないのでしょうか?
正確にはコンボボックスのデータは順の関係でクエリで整順させたものです。
access2000でwindows2000です。
宜しくお願いいたします。

A 回答 (4件)

<訂正>


X フォーム[Test]を閉じた場合に
O フォーム[ItemAdd]を閉じた場合に
    • good
    • 0

<Test>


ID  Field_1
1   Item_1
2   Item_2
3   Item_3

を[コンボ_Items]で表示しているフォーム[Form1]があります。

Private Sub コマンド_Add_Click()
On Error Resume Next
  DoCmd.OpenForm "ItemAdd", , , Null
End Sub

で、<Test>へのID=4、Field_1='Item_4' を追加するフォーム[ItemAdd]をオープン。
フォーム[Test]を閉じた場合に[コンボ_Items]に4つのデータを表示するには?
との質問かと思います。

Private Sub Form_Close()
On Error Resume Next
  Forms("Form1").Controls("コンボ_Items").Requery
End Sub

この場合、コンボアイテム追加フォームを閉じる際にコンボボックスを更新させるといいです。
    • good
    • 0

質問のようなことをする場合の定石です


追加入力はテーブルで行うのではなく、入力用フォームから行います
コンボのNotInListイベントに下のようなコードを書きます

Private Sub 品名コード_NotInList(NewData As String, Response As Integer)
Dim NewCategory As Integer
'入力されたものを新規登録するか確認
NewCategory = MsgBox("新規の商品として登録しますか?", vbYesNo + vbQuestion + vbDefaultButton1, "新規の商品")

If NewCategory = vbYes Then
'入力されたものを再クエリに備えて削除
DoCmd.RunCommand acCmdUndo
End If
DoCmd.OpenForm "h商品", acNormal, , , , acDialog, NewData
Response = acDataErrAdded
End Sub

入力用フォームの開くときイベントに下のコードを書きます

Private Sub Form_Open(Cancel As Integer)
DoCmd.GoToRecord , , acNewRec
Me.品名 = Me.OpenArgs
End Sub

入力用フォームを閉じれば入力された状態から作業を続けられます
再クエリは必要ありません
    • good
    • 0

> コンボボックス選択時に再読み込みなどはしないのでしょうか?



リストは自動では更新されませんので、「再クエリ(Requery)」を使用します。

いわゆるマクロで組んでいるのでしたら、
 1)「アクション」に「再クエリ」を設定
 2)画面左下の「コントロール」引数にコンボボックス名を指定
コードで組んでいるのでしたら、
 コンボボックス名.Requery
をコマンドボタンのクリック時イベントに設定してやればOKです。

または、コマンドボタンは作らずに、コンボボックスのフォーカス
取得後イベントでもいいと思います。
    • good
    • 0

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

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