2015-10-14 152 views
1

我最近問了一個類似的question。但是,我不認爲我知道當時想用我的VBA完成的程度。我正在使用Access 2010並在表單中創建on_click命令。MS Access VBA查詢。選擇其次,然後計算結果

所以我的目的是建立一個查詢,我將要採取的方法如下:

varSQL2 = "SELECT * FROM Inventory WHERE Part_ID=" & rs!Part_ID & ";" 
Set rs2 = db.OpenRecordset(varSQL2, dbOpenDynaset) 
varStock_Level = rs2!Stock_Level +rs!Quantity 

rs!quantityrs!Part_ID是從另一個查詢早些時候在我的代碼。 stock_levelpart_IDInventory表中的字段。

我現在需要能夠創建一個查詢來統計有多少記錄由於varSQL2而返回。所以我可以做一些沿線:

varSQL2 = "SELECT * FROM Inventory WHERE Part_ID=" & rs!Part_ID & ";" 
Set rs2 = db.OpenRecordset(varSQL2, dbOpenDynaset) 
varStock_Level = rs2!Stock_Level +rs!Quantity 
    if count >1 then 
     ....[code].... 
    end if 

我真的不知道從哪裏開始,略有困惑我的自我與子查詢。我相信我不需要2個查詢。任何幫助表示讚賞。

回答

0

從內存:

rs.movelast 
debug.print rs.recordCount 

你必須始終Movelast之前使用RecordCount。我的表格/查詢很大,可能很耗時。

+0

然後我指這是'如果rs2.recordcount> 1'? – LiamH

+0

確實.......... –

+0

它看起來很完美!在很多情況下,這比預期的要容易得多。 – LiamH

2

有幾種方法:

  1. 創建COUNT函數的查詢(類似於你在refered問題所做的)
  2. 使用您的查詢,使用rs2.movelast和讀取rs2.RecordCount
  3. 算出來使用域數

    Dim lngRows As Long lngRows = DCount("*", "Inventory", "Part_ID='" & rs!Part_ID & "'")