2014-10-01 33 views
0

使用QueryDef时,我收到以下错误“对象 变量或块变量未设置”。当我将strSQL的输出复制到新的查询时,它工作正常。请协助解决此错误。MS Access VBA QueryDef - 使用块变量未设置错误

运行以下行时发生错误;

Set qryDef = dbs.CreateQueryDef(strQueryName, strSQL) 

见下

Private Sub ComboReclassify_AfterUpdate() 

Dim dbs As Database 
Dim strSQL As String 
Dim strQueryName As String 
Dim qryDef As QueryDef 

strQueryName = "qryST_ReclassifyAttribute" 

Dim attr As String 
Dim ValueID As Integer 
attr = [Forms]![frm_tblST_AttributesReclassification]![ComboItemAttributes] 
ValueID = [Forms]![frm_tblST_AttributesReclassification]![ComboReclassify] 

strSQL = "UPDATE dbo_tblST_DepartmentsAttributes SET " & (attr) & " = " & ValueID & " WHERE dbo_tblST_DepartmentsAttributes.id = 1" 

Set qryDef = dbs.CreateQueryDef(strQueryName, strSQL) 

DoCmd.OpenQuery "qryST_ReclassifyAttribute" 

End Sub 

回答

2

整个代码,您似乎已经错过了设置DBS对象。

Private Sub ComboReclassify_AfterUpdate() 
    Dim dbs As Database 
    Dim strSQL As String 
    Dim strQueryName As String 
    Dim qryDef As QueryDef 

    strQueryName = "qryST_ReclassifyAttribute" 

    Dim attr As String 
    Dim ValueID As Integer 
    attr = [Forms]![frm_tblST_AttributesReclassification]![ComboItemAttributes] 
    ValueID = [Forms]![frm_tblST_AttributesReclassification]![ComboReclassify] 

    strSQL = "UPDATE dbo_tblST_DepartmentsAttributes SET " & (attr) & " = " & ValueID & " WHERE dbo_tblST_DepartmentsAttributes.id = 1" 

    'You have not set the dbs object. That is the problem 
    Set dbs = CurrentDB 
    Set qryDef = dbs.CreateQueryDef(strQueryName, strSQL) 

    DoCmd.OpenQuery "qryST_ReclassifyAttribute" 
End Sub 

一旦你设置它。它应该正常工作!

相关问题