2016-08-13 15 views
1

私はMS Accessの次の問題について助力を求めます。MS Access:別のフォームのコマンドボタンを使用して、フォームに特定のテキストを入力してください

フォーム "CustomerListF"を作成しました。各クライアントのコマンドボタンがあります。各ボタンのために、私は次のコードを作成していた:

Private Sub cmd_outlets_ABC_Click() 
DoCmd.OpenForm "OrderFormF" 
Forms!OrderFormF!Outlets = "ABC" 
End Sub 

ボタンはその後、「OrderFormF」別のフォームを開き、「アウトレット」という名前のテキストボックスに「ABC」と入力します。しかし、2番目のコード行(Forms!OrderFormF!Outlets = "ABC")は、 "OrderFormF"にあるサブフォームに常にファントムレコードを作成し、このレコードは他のクライアントのフォームに移動します。このファントムレコードは、通常、コマンドボタンが2回クリックされたとき(ダブルクリックまたはそれ以降のクリック)に作成されます。それはレコードが周りを転じ始めるときの頭痛です。

enter image description here

私は、コードの2行目を編集するVBAコードのためのアドバイスを求めたいと思います。

ありがとうございます。

+0

"ファントムレコード"とはどういう意味ですか?コンボボックスが必要な場所で複数のボタンを使用しているのはなぜですか?明確化された画面ダンプによっては、 – Rene

+0

ファントムレコードは、レコードが他のクライアントのサブフォームに移動し続けると一緒にコーディネートした用語です。私は、個々の顧客ごとにボタンを含む "CustomerListF"フォームを持っています。私はタッチスクリーンデスクトップを使用しているので、 – Crystal

+0

私の他の質問にも答えてくれるかもしれません;) – Rene

答えて

0

フィールドを開いた形で塗りつぶすこの方法は良くありません。 OrderFormFの初期化とフィールドに値を割り当てるコードの2行目は、異なる順序で実行される可能性があります。これらは同期されません。 これを避けるには、引数をOrderFormFに別の方法で渡す必要があります。 「ABC」の値がで最初の行に割り当てられます。この場合、

Me.Outlets = Me.OpenArgs 

DoCmd.OpenForm "OrderFormF",,,,,,"ABC" 

そしてOrderFormFのLoadイベントでテキストボックスに値を割り当てる:私はOpenArgsパラメータを使用することをお勧めしますフォームが空の場合はフォームまたは新しいレコードに変更します。割り当てを行う前に、最初の行に値を割り当てない場合は、行を選択できます。また、この方法でボタンをダブルクリックしないように保護します。最初のフォームを開くときに1回だけロードイベントを実行します。

+0

種類の説明ありがとうございます。私は試してみましたが、それは私のために働いていませんでした。コードにエラーはありません。私のアウトレット(Outlets)フィールドに "ABC"が含まれています。ただし、フォームを開くたびに、私のサブフォーム(OrderFormF内にある)に2つの新しいレコードが作成されるようになりました。最初のレコードは、他のアウトレットのサブフォームに移動するファントムレコードです。私はこれのために得ることができる任意のアドバイス?事前に多くの感謝! – Crystal

+0

質問の2番目のような行をすべて削除したことを確認し、すべてのプロジェクトで「Outlet」という文字列を検索してください。 –

+0

私は起動時に常に新しいアプリケーションを使用します。私はあなたの指示に従ったとき、すべての店舗のために2列目が飛び出し始めました。削除しても、同じクライアントまたは別のクライアントのフォームを開くと、再びポップアップ表示されます。ファントム行を使用すると、他のクライアントのフォームに表示され続けます。ご意見をお聞かせください。 – Crystal

関連する問題