2016-03-21 12 views
1

誰かが私の問題を解決するなら、非常に感謝します。 私はMs Accessで働いていて新しく、基本機能についてはまだ経験があります。ms-accessで長いテキストを使用するためのベストプラクティス

私はテーブルMyItemsを持っています。フィールドの2つは、ItemCodeとItemNameです。 ItemNameは非常に長いテキストです(メモ型)。私はまた、多くのフィールドを持つクエリとフォームを持っています。フォームのレコードソースも多くのフィールドで構成されています。これらのすべてのもの(1つのフィールドに関連付けられている)は、同じ名前または類似の名前を持つため、私はそれらをかなりよく区別できません。

私が欲しいのは、ItemCodeの値(ItemCodeという名前のバインドされていないComboboxまたはListboxで)の値を、コントロールに表示されるItemNameの値(TextBoxなど)に設定する場合です。

(行ソースのSQLクエリによって)ListBoxにその値を表示できますが、これに問題はありません。イベントの管理に問題はありませんが、テキストは非常に長く、切り詰められます。残念ながらListBoxには複数行のプロパティはありません。だから、最も適切なコントロールはTextBoxです。そして、値を表示する最も適切な方法は、TextBoxのコントロールソースでDLookUp関数を使用することです。しかし、同じ名前の同名のアイテムの海では、私はその構文を扱うことができません。私は何度も何度も何度も試していました。だから私は2つの質問がある:

  1. は、TextBoxコントロールとのDLookup関数は、コントロールソースに結合することなく、テーブルから長いテキストを抽出するための最良の方法はありますか(直接SQLクエリで動作)より適切なコントロールがあります?

  2. DLookUpの正しい構文は何ですか? - どこに正確に ''、 ''、[]、.Value、=、&がありますか?ここで、テーブルやフォームへのパスと、それが間違っている場所を記述する必要がありますか?私が[ItemCode]と書いたのは、フォームレコードソース、テーブル、フォームコントロール、または何か他のものと関連付けられるものです。私のケースで正しい構文を書いている人、またはDLookUpを使ってたくさんの例を持つリンクを共有している人に感謝します。私が見つけたものは私を満足させなかった。

答えて

0
  1. 連結コントロール、又は未結合のどれか。バインドされていない場合は、VBAコードまたはDLookupのテキストをコントロールソースに読み込む必要があります。その他のオプションはありません。
    私はむしろAfterUpdateというイベントをItemCodeという名前で使用し、そこにはDLookupを呼び出しますが、それは優先事項です。

それほど複雑ではありません。基本的には、3つの引数にSQLクエリのSELECT、FROM、WHERE部分があります。スペースやその他の特殊文字を含むすべての識別子、およびフォームコントロールを参照する場合は、[]が必要です。 ItemCodeが、それは数ではありませんとき、テキストであれば

=DLookup("ItemName", "[my Table]", "ItemCode = '" & [ItemCode] & "'") 

単一引用符''が必要とされています。

二重引用符(エスケープされた)を使用することもできますが、読みにくいです。

=DLookup("ItemName", "[my Table]", "ItemCode = """ & [ItemCode] & """") 

ここで[ItemCode]はどこですか?

  • のアクセスは、最初の名前ItemCodeで、フォーム上のコントロールを探します。
  • フィールドがない場合は、RecordSourceのフィールドItemCodeを探します。

これらは、[ItemCode]を評価できる唯一の方法です。混乱を避けるため、バインドされたコントロールには、ソースフィールドと同じ名前を付けることをお勧めします。

上記の構文は、すべてが同じ形式の場合にのみ有効です。 [ItemCode]が異なるフォーム上にある、またはクエリからそれを参照する場合は、Refer to Form and Subform properties and controls

を参照してください(ItemCode_AfterUpdateに)VBAでそれを使用するために、サブフォームとのより複雑な例については

=DLookup("ItemName", "[my Table]", "ItemCode = '" & Forms![my Form]![ItemCode] & "'") 

使用します。

Me!ItemName = DLookup("ItemName", "[my Table]", "ItemCode = '" & Me![ItemCode] & "'") 
+0

ありがとうございました!今は物事がはっきりと分かりやすくなります。コードが機能しました。私は "'"で試したことはありません。しかし、私は、おそらくmsアクセス版、私のデフォルトまたはVBA /デザインモードを使用しているかのいずれかで修正する必要があります - 関数内の区切り記号は ";"です。 - not "、" – Peter

+0

@Peter:はい、ドイツ語のアクセスでは、引数の区切り記号は;代わりに、フォームまたはクエリで関数を使用する場合。しかし、VBAではありません。 – Andre

関連する問題