1

連絡先フォームがあり、フォームのフィールドの 1 つが Contact_Type_ID です。このフィールドは、別のテーブルのテキスト フィールドにも対応する数値フィールドです (例: 1 = 国外居住者)。

連絡先を巡回すると、Contact_Type_ID は 1、2、3... であり、Non-profit、CEO、Vice-president などではありません。3 番の意味がわからないため、これは問題です。

対応するテキストのみを表示するコンボボックスが欲しいです。

2 つの列と 0;1 形式が機能しません。私の推測では、2 つの異なるテーブルから情報を取得しているためです。正しいリストを生成できますが、現在の連絡先の [Contact_Type_ID] を反映するために連絡先を循環しても、メイン エントリは変わりません。

このアプリケーションをはるかに大規模なデータベースに適用することになっているため、現在のテーブルを編集できません。

行ソースのSQLも設定してみました:

'Populate the connection combo box '
Dim typeSQL As String
typeSQL = "SELECT DISTINCT Contacts.[ContactTypeID], Contact_Types.[ContactType] " & _
    "FROM Contacts, Contact_Types " & _
    "ORDER BY Contact_Types.[ContactType];"
Me.cbo_ContactType.RowSource = typeSQL

ただし、同じ問題があります。連絡先を循環すると、コンボボックスが更新されません。行ソースと制御ソースの違いがわかりません。この違いがここで鍵になるのではないかと思います。

4

2 に答える 2

0

私が正しく理解していると仮定すると:

コンボボックスのプロパティで、Dataタブに移動します。に設定Control SourceContact_Type_IDます。

これは、レコードを調べるときに、コンボボックスがデータのContact_Type_IDフィールドに対応することを意味します。

に設定Row Sourceします"SELECT Contacts.[ContactTypeID], Contact_Types.[ContactType] FROM Contacts, Contact_Types ORDER BY Contact_Types.[ContactType];"

行ソースは、コンボボックスがアクセスできるデータを示します。これは、コントロールソース値の表示方法を決定するのに役立ちます。

に設定Bound Columnします1

Limit to Listに設定Yes

Formatタブにあります。に変更Column Count2ます。次に、質問で言及したに設定column widths0;1ます。

ここでフォームビューを見てみてください。期待どおりに動作するはずです。

それが機能しない場合は、これらの手順を使用して新しいコントロールを作成します。

于 2012-07-20T03:27:19.420 に答える
0

あなたの質問を理解しているように、テーブルに基づいた連絡先を含むフォームがあり、そのテーブルにはまたはContactsというフィールドが含まれています。テーブルから連絡先タイプの説明を表示したい。Contact_Type_IDContactTypeIDContact_Types

コンボのためにテーブルを結合する必要はありません。非常に簡単なはずです。ご想像のとおり、キーは、Control sourceあるテーブルを別のテーブルに関連付けるプロパティである です。

Control source : ContactTypeID '' or Contact_Type_ID, choose from the list
Row source : SELECT ContactTypeID, ContactType FROM Contact_Types ORDER BY ContactType
Bound column : 1
Column count : 2
Column widths : 0,2

余談ですが、コンボでテーブルを結合し、最初の列を 0 に設定しても機能します。すべて正しい設定です。

于 2012-07-20T08:35:34.010 に答える