2012-12-20 61 views
-1

爲什麼這個代碼不runninig.I想在手QTY_IHND1與數(COMM_NUM)返回Mininimum (MIN_STOCK)Maximum (Stock MAX_STOCK1)>quantity的藥物。訪問窗體和引用

If DCount(QTY_IHND1, "Stores_Table") = 0 Then 
    QTY_IHND1 = 0 

ElseIf DCount(QTY_IHND1, "Stores_Table") > 1 Then 
    QTY_IHND1 = DLast("QTY_IHND1", "Stores_Table", "COMM_NUM = [COMM_NUM]") _ 
      + ((SubStoresTable.Form!QTY_RECVD) - (SubStoresTable.Form!QTY_ISSUE)) 
Else 
    QTY_IHND1 = 0 
End If 

Forms!Pharmacytally.Controls("QTY_IHND1").Value = QTY_IHND1 
MAX_STOCK1 = DMin("QTY_IHND1", "Stores_Table", "COMM_NUM" = [COMM_NUM]) 
Forms!Pharmacytally.Controls("MAX_STOCK1").Value = MAX_STOCK1 
MIN_STOCK1 = DMin("QTY_IHND1", "Stores_Table", "COMM_NUM" = [COMM_NUM]) 
Forms!Pharmacytally.Controls("MIN_STOCK1").Value = MIN_STOCK1 

回答

0

我不知道標題中的子表單部分在哪裏出現在您的問題中。有來自MVPs網站here的文章。

您在等錯誤的地方。

MAX_STOCK1 = DMin("QTY_IHND1", "Stores_Table", "COMM_NUM =" & [COMM_NUM]) 

COMM_NUM必須是數字,否則需要引號。

整個代碼部分不好,可以重做。例如:

DCount(QTY_IHND1, "Stores_Table") 

這似乎是一個相當奇怪的檢查是否存儲表是完全空的,並且QTY_IHND1未被引用。

DLast("QTY_IHND1", "Stores_Table", "COMM_NUM = [COMM_NUM]" 

Comm_Num總是等於自身。

此外,你有這麼多的查找,你會更好的記錄集。

然後是最後一件事。最後是在單個用戶系統中獲得價值的一種非常糟糕的方式,即使如此,您也應該考慮到它可能不是單一用戶。

沒有必要提及的控制特性得到控制:

Forms!Pharmacytally.Controls("QTY_IHND1") 

控制成爲形式的屬性:

Forms!Pharmacytally.QTY_IHND1 

或者

Forms!Pharmacytally!QTY_IHND1 

或者,如果該代碼在Pharmacytally表單上運行,

Me.QTY_IHND1 

這將允許您利用智能感知。

編輯再評論

從主窗體,並命名爲MySubformControl

MyQty = Me.MySubformControl.Form.QTY_RECVD 

重要的是要注意的是MySubformControl子控件的工作是子窗體控件的名稱,而不是形式包含。

+0

感謝您的回覆。我對此很新。我在主窗體上有COMM_NUM,QTY_IHND1,MIN_STOCK1和MAX_STOCK1。QTY_RECVD和QTY_ISSUE位於子窗體上。如果我想在子窗體中調用字段值我在主窗體中使用哪個代碼,反之亦然。 MVP網站太混亂了。我會看看Recordset,我還沒有任何經驗。提前致謝。 – user1916067

+0

我已添加註釋。 – Fionnuala

+0

,我按照你的建議花了一些時間學習Recordset。我認爲這是一個很好的管理。但我確定這是基本的,我怎樣才能把來自VBA的立即窗口的結果放到我的表單上的字段中。 – user1916067