1

project_IDフィールドコンボボックスと他のいくつかのフィールドを含むMSAccessフォームがあります。ユーザーがproject_IDフィールドを選択すると、フォームの後続のフィールドの大部分が自動的に入力されます。project_IDだけでなくTrans_IDにも基づいた情報を表示するフィールドをフォームに追加しようとしています。キャッチは、Trans_IDをフォーム上のテキストボックスにしたいことです。このテキストボックスでは、ユーザーはTrans_IDを入力するだけで、別のテキストボックスにError_DTL_1フィールドが表示されます。これは私がこれまでに生成したVBAコードです。

Private Sub cboProjectID_Change()

Dim VarComboKey As Integer 
Dim VarObjective As Variant 
Dim VarStartDate As Variant 
Dim VarEndDate As Variant 
Dim VarRiskCategory As Variant 
Dim VarTarDatSet As Variant

Dim VarErrorCount As Variant 
Dim VarErrorCode As Variant

Dim VarErrorDTL As Variant

VarComboKey = Me.cboProjectID.Value

VarObjective = DLookup("[Objective]", "[Project_HDR_T]", "[Project_ID]= " & VarComboKey) 
Me.txtObjective = VarObjective

VarStartDate = DLookup("[Start_Date]", "[Project_HDR_T]", "[Project_ID] = " & VarComboKey) 
Me.txtStartDate = VarStartDate

VarEndDate = DLookup("[End_Date]", "[Project_HDR_T]", "[Project_ID] = " & VarComboKey) 
Me.txtEndDate = VarEndDate

VarRiskCategory = DLookup("[Risk_Category]", "[Project_HDR_T]", "[Project_ID] = " & VarComboKey) 
Me.txtRiskCategory = VarRiskCategory

VartxtTarDatSet = DLookup("[Targeted_Dataset]", "[Project_Targeted_Dataset]", "[Project_ID] = " & VarComboKey)
Me.txtTarDatSet = VartxtTarDatSet

VarErrorCount = DLookup("[Count_Error_Codes]", "[Project_Error_Final]", "[project_ID] = " & VarComboKey)
Me.txtErrorCount = VarErrorCount

VarErrorCode = DLookup("[ErrorCode]", "[Project_Error_Final]", "[project_ID] = " & VarComboKey) 
Me.txtErrorCode = VarErrorCode

VarErrorDTL = DLookup("[Error_DTL_1]", "[Project_DTA_REV_T]", "[project_ID] = " & VarComboKey And "[Trans_ID] = forms![Quality Risk Assessment]!me.stTransID") 
Me.txtErrorDTL = VarErrorDTL

End Sub  

「EndSub」の前の2行は、このコードを攻撃しようとした私の試みです。しかし、フォームのProject_IDコンボボックスで選択を行うたびに、「ランタイムエラー13、タイプの不一致」というエラーが表示されます。

誰か助けてもらえますか?

4

2 に答える 2

3

行で...

VarErrorDTL = DLookup("[Error_DTL_1]", "[Project_DTA_REV_T]", "[project_ID] = " & VarComboKey And "[Trans_ID] = forms![Quality Risk Assessment]!me.stTransID") 

...「And」は引用符の外にあり、2番目の句は参照方法と参照方法の両方を混合しているようForms!ですme.。試す...

VarErrorDTL = DLookup("[Error_DTL_1]", "[Project_DTA_REV_T]", "[project_ID] = " & VarComboKey & " And [Trans_ID] = forms![Quality Risk Assessment]!stTransID.Value") 

...そしてそれがうまく機能するかどうかを確認します。または、試してみてください...

VarErrorDTL = DLookup("[Error_DTL_1]", "[Project_DTA_REV_T]", "[project_ID] = " & VarComboKey & " And [Trans_ID] = " & me.stTransID.Value) 
于 2013-03-14T19:26:59.900 に答える
3

レコードセット:

Dim rs As DAO.Recordset

sSQL = "SELECT p.Objective, p.Start_Date, p.End_Date FROM Project_HDR_T p " _
     & "WHERE p.Project_ID = " & VarComboKey
Set rs = CurrentDb.OpenRecordset(sSQL)

If rs.EOF Then
    MsgBox "oops"
Else
    VarObjective = rs!Objective
    VarStartDate = rs!Start_Date
    VarEndDate = rs!End_Date
End If

また、すべてのテーブルにProject_IDが含まれている場合、すべてのテーブルを含むクエリを作成できるはずです。さらに、クエリは保存され、コード内のパラメーターで参照されます。

参照:
VBAのレコードセットとは何ですか?...それはどのような目的に役立ちますか?
レコードセットオブジェクト

于 2013-03-14T20:08:18.443 に答える