1

複数のコンボ ボックスとテキスト ボックスが存在する 1 つのフォームがあります。1 つのコンボ ボックス値 (ウェル用) が個別に入力されるため、ウェル コンボ ボックスの値の値に基づいてテキスト ボックスの値を設定する必要があります。問題を部分的に解決するクエリを作成しました。これには、wells コンボ ボックスの値を指定するパラメータが必要です。フォームから部分的にクエリを実行すると、うまく機能し、パラメーターを要求して問題ありません。VBA を使用して、(上記のクエリの) SELECT ステートメントを処理するコードを追加し、フォームで準備ができているウェルのコンボ値からパラメーターを取得するように指示することを考えています。

誰かがこれを手伝ってくれますか。これは私が説明したように機能しますか。

前もって感謝します。

モハメド

上記の質問に加えて、次の解決策を試しました。

Private Sub Well_ID_Change() 
Last_Ref.ControlSource = " SELECT TOP1 New_Ref FROM" & _ 
" BSW_Transactions WHERE BSW_Transactions.New_Ref Is Not Null AND BSW_Transactions.Well_ID = " & Me.Well_ID.Value & _ 
" ORDER BY BSW_Transactions.Sample_Date DESC" 
End Sub 

Last_Ref は、コードに埋め込まれた SELECT ステートメントの結果を入力するテキスト ボックスです。Well_ID は、値が SELECT ステートメントのパラメーターとなるコンボ ボックスです。Well_ID は数値フィールドであり、well_name を表示し、関連付けられた ID 値をテーブルに保存します。変更を保存した後にフォームを実行すると、Last_Ref テキスト ボックスに (#Name?) が表示されました。テキスト ボックス (数値フィールド) がコンボ ボックス Well_ID 内のテキストを検出したと推測したので、基準 Me.Well_ID で上記の構文に「.Value」を追加しました。ただし、問題はまだ存在します。

構文を間違えたかもしれませんが、誰かがこれについて助けてくれますか? これでうまくいきますか?

前もって感謝します。モハメド

4

1 に答える 1

0

問題は、テキスト ボックスにコンボ ボックスやリスト ボックスのようにコントロール ソースを設定できないことです。たとえば、値を渡す必要があります。

Private Sub Well_ID_Change()

Dim rs As Recordset    

Set rs = CurrentDb.OpenRecordset("SELECT TOP1 [New_Ref] FROM" & _
" [BSW_Transactions] WHERE [BSW_Transactions].[New_Ref] Is Not Null" & _
" AND [BSW_Transactions].[Well_ID] = " & Me.Well_ID & _
" ORDER BY [BSW_Transactions].[Sample_Date] DESC", dbOpenSnapShot)

rs.MoveFirst
Last_Ref = rs![New_Ref]
rs.Close
Set rs = Nothing

End Sub

また、必須ではないため、コンボ ボックスから .Value を削除しました。

于 2012-08-23T07:58:18.107 に答える