2017-07-30 8 views
0

フォーム(製品skusとそれぞれの詳細)私のフォームにある特定のSKUの情報を選択して表示するコンボボックス。コンボボックスが機能し、正しいレコードが選択されます。MS Access Combobox FORMフィルタ1)次のレコードが選択されたときに更新されない2)変更後にクリアされない3)ビューの変更後に最後の値に留まる

コンボボックスの問題は、1)次のまたは前の矢印で別のレコードを選択したときに更新されない2)変更後にクリアされない3)ビューからデザインビューへのビューの変更後に最後の値にとどまる。私は#1か#2のどちらかで働く必要があります。 #3でもうまくいくなら、それはこれまでで最大の勝利でしょう!

私は、通常、フォームヘッダーにコンボボックスフィルタを保存し、以下のデータを表示することがよくわかっています。しかし、これはデータ入力エラーを助長するため、この場合は機能しません。それはsku番号を顕著に表示するコンボボックスの1つです。私もスキン番号をフォームに表示しても、レコードとフィルターは同期していなくて混乱の原因になります。

(私のフォームレコードソースはTbl_UniqueSkuです。このテーブルは主に外部キーを格納しているため、コンボボックスのソースはクエリに基づいています。これは、コンボに表示されるデータが、レコードがボタンやレコードセレクタで前進したときにフォームと同期しない理由とは関係ありません。同じテーブルから単一のフィールドと私は同じ問題を持っている)

1:

私が移動した場合、このCBO選択(SKU番号)のデータが更新されません他のレコード選択ボタンとフォームの異なるレコード。

このコンボボックスに表示されるskuは、コンボボックスをナビゲーションにのみ使用している場合を除き、フォームと同期していません。

私のskusは1001,1002,1003などの時系列です。したがって、後続の各レコードに移動するためにコンボボックスを排他的に使用するのは意味がありません。コンボボックスと次/前の矢印をオプションとして使用して、目的のSKUに移動することは理にかなっています。

私はフォームとcboの両方について考えることができるすべてのイベントプロパティでマクロとvbaを試しました。私は、再クエリのすべてのバリエーションを試しました、リフレッシュ、値=ヌル、値= ID。結果がありません。

2:

コンボボックスには、現在のレコードを反映することができない場合は、それが更新された後、私は、少なくともNO値のように表示するでしょう。フォームレコードと異なるスキューを表示しないようにするために必要なことは、私が解決するという結果です。私はこの角度から問題を攻撃するために私が考えることができるすべてを試しましたが、また空になっています。

3:

私は、このフォームのコンボボックスのフィルタを表示設計するために、フォームビューから前後に切り替えると、フォームは常に私のテーブルから最初のレコードを表示しながら、追加の問題は、最後に選択した値に留まっています。もう一度、これらの2つは同期していません。私はまだフロントエンドとバックエンドを分ける準備ができていません。なぜなら私はまだデータベースを設計しているからですが、データ入力も行わなければなりません。それを分割すると、この時点で私にとって効率が悪くなります。

私はこの問題を私が認めようとしているよりも長く研究しました。私はこの問題に取り組んでいるいくつかの人を見つけましたが、許容できる解決策はありませんでした。あるいは、私が遭遇したプログラミング・ソリューションが有効かもしれませんが、私は実践として理論を適用するために密集しています。私は参照するための構文が必要です。

Here's the closest help I've found in my research

コメントの投稿者の半分の助けを借りて助けてくれる人はbhammerstromです。「私がしているのは、コンボのAfterUpdateイベントで、テキストボックス(me.txt.visible = True)を非表示にするcboの同じ場所に直接(下矢印を表示しない限り)、テキストボックスはサブフォームのフィールドにバインドされ、現在の情報を表示します。

私はこれを試しましたが、フォーカスはまだ変更後のcboにあるので、カーソルを別のフィールドに移動するまで、非表示のテキストボックスがコンボボックスの後ろに表示されます。私はそれに亀裂を覚えましたが、更新後にどのようにプログラムの焦点が緩んでいるのか把握できません。永遠にグーグル。何もない。もし私がそれを働かせることができれば#2で十分だろうが、私は#3の手でまだ空いている。

このリンクされたスレッドの他の回答は有望でしたが、私が提供した情報から何ができるかを試したとき、私は運がなかったのです。それは良いアドバイスかもしれませんが、私はそれを使用するにはあまりにも愚かであり、より完全な指示とうまくいけば構文参照が必要です。

Tbl_UniqueSkuに新しい列を作成してそこにヌル値を格納することしかできませんでした。次に、私のコンボボックスの行のソースクエリで、そのフィールドを追加することができます。そして、私のフォームのプロパティでは、その列をコンボボックスの表示列に保存することができるので、選択後は常にnullになります。しかし、この回避策は、データベースが目指すと考えられているすべてのものに対して脅かされるようです。

私を助けてください!

+1

UNBOUNDコンボボックスを使用してフィルタ条件を入力/選択する必要があります。 UNBOUNDなので、「更新」しません。ナビゲーション後にコードを使用してコンボボックスをNullに設定します。レコード値を表示するには、バインドされたテキストボックスを使用します。混乱がなくなった。フォームヘッダーにコンボボックスを挿入します。 – June7

答えて

1

ああ答えはとてもシンプルでした。私はちょうどvbaで=を使用する方法を知りませんでした!

me.cbobox = me.ID

変更cboboxへ:次のコードでイベントプロシージャを作成して現在のイベントでは、フォームから

はここでこのすべてを解決するものですあなたが検索したフィールドの名前にバインドされていないコンボの名前とIDを の名前に変更します。

あなたは を持つレコードが私の場合はそう新しいレコード(したがって、IDがnullまたは空の)

であるためにナビゲート場合は、エラー制御に追加する必要があります。

私を。 cbobox = me.txtbox

私のテキストボックスは、私のTbl_UniqueSkuの主キーを参照します。私は早い段階でこのアプローチを試していましたが、コード化する方法がわからないので、=の代わりに再クエリーとリフレッシュを試みていました。 :)

まだエラーハンドラを追加する必要はありません。新しいレコードを追加すると、すでにコンボボックスにnull値が表示されていますが、エラーメッセージは表示されません。

ボーナスのヒント:デザインオブジェクトの名前を常に確認してください。

Ajax over at this forumに大きな感謝します。

関連する問題