2015-02-23 49 views
2

我有我的團隊用於跟蹤項目的訪問數據庫中插入一個「是」或「否」值。我們用它作爲VCB。表,形成以關不同的表 - 看看在表中存在一個共同的記錄,並在形式

在主窗體(項目)上,我們查看它並在項目的表單上進行更新 - 然後更新鏈接到該窗體的表格。

然而,我們也有一個單獨的表中,我們存儲與項目註釋(評論)。兩個表的主鍵都是ProjectID。

「項目」表單上只有1個項目條目,但評論表上的評論可以有0到多個。

我想要實現的是讓項目窗體(我們的VCB)查看註釋表,並查看錶中是否存在具有相同ProjectID的記錄 - 如果向我的插入「是」值文本框,但如果沒有,則插入「否」。

它只是一個簡單的視覺輔助,以查看是否在VCB項目存在意見(我們處理在一個單獨的形式發表評論進入和查看)

我難倒上採取哪條路線。我試了幾件事情,並陷入循環。任何幫助表示讚賞

Dim strSQL As String 
Dim rs As Dao.Recordset 
Dim db As Dao.Database 

strSQL = "SELECT * FROM COMMENTS WHERE [PROJECTID] = " & Me.PROJECTID & "" 

Set db = CurrentDb 
Set rs = db.OpenRecordset("COMMENTS") 

rs.MoveFirst 

Do Until rs.EOF = True 
Set rs = db.OpenRecordset(strSQL) 
    If rs.RecordCount = 0 Then 
    Me.CommentTxtBox.SetFocus 
    Me.CommentTxtBox.Text = "NO" 
    Else 
    Me.CommentTxtBox.SetFocus 
    Me.CommentTxtBox.Text = "YES" 
    End If 
rs.MoveLast 
Loop 

rs.Close 
Set rs = Nothing 

我得到每個條目在該領域的NO,它的錯誤,因爲該專案編號不在意見表(它可能不是),所以它說沒有找到記錄。

回答

2

DCount()可以使你的代碼更簡單。

Dim lngComments As Long 
Dim strComments As String 

lngComments = DCount("*", "COMMENTS", "[PROJECTID] = " & Me.PROJECTID) 
If lngComments > 0 Then 
    strComments = "YES" 
Else 
    strComments = "NO" 
End If 
Me.CommentTxtBox.Value = strComments 

通過將值文本框的.Value財產(而不是其.Text屬性)的通知,你不必理會SetFocus

我認爲這是你目前的做法的一個簡化版本。但我不確定這是否是最好的方法。也許你可以讓你通過文本框的控件來源屬性設置爲它使用IIf評估DCount的表達需要什麼:

=IIf(DCount("*", "COMMENTS", "[PROJECTID] = " & [PROJECTID]) > 0, "YES", "NO") 
+1

設置控制源的工作完美!非常感謝HansUp。我甚至沒有想過嘗試這條路線。 – 2015-02-23 15:28:48

相關問題