2012-04-16 76 views
0

我試圖讓它,以便當用戶從組合框中選擇一個人他們的全部細節顯示,但一些錯誤處理if條件應該返回trueVBA跳過如果語句在Access 2010

Private Sub ComboOwnerID_Change() 
Dim SelID As Integer 
Dim rs As DAO.Recordset 
Dim db As Database 
Dim strSQL As String 
Dim result As String 
SelID = 0 
SelID = Me.ComboOwnerID.Text 
If Not (SelID = 0) Then 
    If Not (SelID = Null) Then 
     Set db = CurrentDb 
     strSQL = "SELECT * FROM Owners WHERE OwnerID = " + SelID 
     Set rs = db.OpenRecordset(strSQL) 
     Do While Not rs.EOF 
      result = "" 
      result = rs!Title + ". " 
      result = result + rs!Forname + " " 
      result = result + rs!Surname 
      rs.MoveNext 
     Loop 
     Me.lblOwnerName.Caption = result 
    Else 
     Me.lblOwnerName.Caption = "error" 
    End If 
Else 
    Me.lblOwnerName.Caption = "error" 
End If 
End Sub 

它甚至沒有達到SQL位尚未所以我不知道是否可行與否

回答

2

不要使用VBA中的.text屬性,它是僅當控件有焦點。 VBA中的連接器不是&。當其中一個字符串爲空時使用+可以返回null。

If Not (SelID = Null) Then 
    Set db = CurrentDb 

你的意思是:

If Not IsNull(SelID) Then 
    Set db = CurrentDb 
+0

我還想補充一點,我不認爲'SelID'永遠不會爲因爲這是一個整數。 – markblandford 2012-04-16 13:33:25

+0

確實,如果組合爲空,將會產生問題。此行將失敗SelID = Me.ComboOwnerID.Text,與.text值完全分開。 – Fionnuala 2012-04-16 13:35:27

+0

也添加到@creamyegg:如果'SelID'是一個int,那麼不會'如果SelID <> 0那麼'比'如果不是(SelID = 0)Then'好? – Gaffi 2012-04-16 16:14:49