2017-01-21 6 views
0

フォームのフィールドから値を取得し、それを同じフォームの別のフィールドへの参照として使用する方法はありますか?文字通り?私は手動で[txtFlavor]のようなものを1つのフィールドに入力して、実際のフレーバー、別のフィールドの "txtFlavor"という文字列だけでなく "txtFlavor"という名前のフィールドの値を表示させたいと考えています。私は基本的にいくつかのVBAリファレンス(用語?)をテーブルに保存しようとしていますので、フォーム上の値の参照を含む一連のテキストを表示することができます。Access 2010 - フォームフィールドへの参照をテキストフィールドの値として入力

Access 2010にレターテンプレートを格納するシステムを作成し、ユーザーが個人情報を含むレコードを選択し、その情報をテンプレートレターに挿入するように要求されました。私はすでにこれを行うためにレポートを使用するよう提案しましたが、それはエンドユーザーに受け入れられませんでした。彼らは本当にただ

a)の連絡先レコード、
b)は、文字テンプレート、私はテンプレート情報を保存しようとしてきた時間

1つで時刻
に1つずつを組み合わせた形をしたいですそれはテーブル内のフォーム参照ですが、フォーム上の別のテキストフィールドから参照を引き出すことはできません。

テーブルの中に次のようなものを保存したり、フォーム上のフィールドに入力することは可能でしょうか。その後、

[txtFlavor] & " is dull but popular." 

と私は確信してダムを感じると私は何かを明らかに見逃していると確信しています

Vanilla is dull but popular. 

として、それは他の場所の形で現れています。私がしていることはすべて文字通り繰り返され、参考として解釈されません。

答えて

0

Wordでマージドキュメントをデザインする方法と同様に、データベース情報のプレースホルダとして「タグ」を使用してテンプレートを作成することができます。それはあなたが実際のデータ値にこれらのタグを変更するにはReplace機能を使用する必要がありますマージされた結果を作成するには時間が来ると

{Flavor} is dull but popular. 

:だから、上記のあなたの例では、テンプレート文書は次のようになります。あなたは、フォーム上の読み取り専用のテキストボックスを持っていたのであれば、制御ソースは次のようになります。

=Replace([txtTemplate], "{Flavor}", [Flavor]) 

私はあなたが巣にReplace機能が必要になり、このアプローチを使用して、あなたが潜在的なタグがたくさんあるだろうと仮定します。あなたはより多くのデータベースフィールド/タグを持っていた場合、これは非常に扱いにくいになり始めるでしょう

=Replace(
    Replace(
     Replace([txtTemplate], "{EmpName}", [EmpName]), 
     "{EmpAddress}", [EmpAddress]), 
    "{EmpPhone}", [EmpPhone]) 

ので、私は人生を容易にするためにいくつかのVBAを使用することをお勧めします:私はそれが少し読みやすくするために、複数行にわたって私のネスティングを分割しています、多分の線に沿って何か:

Dim rsSource As Recordset 
Dim strMerge As String 
Dim intField As Integer 

'Assuming your form has a field called EmpNo (numeric data) that you can use to pull data... 
Set rsSource = CurrentDb.OpenRecordset ("Select EmpName, EmpAddress, EmpPhone From Employees Where EmpNo = " & Me.EmpNo) 
strMerge = txtTemplate 
For intField = 0 to rsSource.Fields.Count - 1 
    strMerge = Replace(strMerge, "{" & rsSource(intField).Name & "}", rsSource(intField)) 
Next intField 

txtMerge = strMerge 

rsSource.Close 
Set rsSource = Nothing 

はあなたのtxtTemplateテキストボックスのAfterUpdateイベントにこのコードを置くことができ、それがtxtMergeテキストボックスの内容を更新します。 tagの名前がデータベースの列と一致する必要があります。そうでない場合はSelectステートメントの列の別名を付けて、tagの名前に一致させることができます。

+0

Skippyの回答が問題を解決しました。今私が本当にやりたいことは、理解しやすく、似たような問題を抱えている人の目を捉えることができるように質問を書き直すことです。私はこれについて私にいくつかのフィードバックを与えることができる誰にも非常に感謝します。私が本当に求めていたのは、フォーム上のフィールドへの参照として役立つ情報をフォームに入力したり、テーブルに格納したりする方法でした。 Skippyのソリューションは、私がしようとしていることに対して完全に機能しますが、問題は自己参照的であるため説明するのが非常に難しいようです。 – Annndy

関連する問題