找不到Access变量中的VB脚本

时间:2015-01-08 19:25:40

标签: forms vba ms-access-2007

所以我被告知我可以为这个表单创建一些复制替换功能。

这是我在VB中的编码尝试:

首先,我使用DAO连接到数据库。然后我使用已经过验证的SELECT语句来拉出插入数据库的最后一条记录。然后我尝试使用查询中的值重新填充控件,但我收到了引用错误。

Private Sub AutoFill_Click()
Dim db As DAO.Database, rs As DAO.Recordset
Dim strSQL As String

Set db = CurrentDb()
strSQL = "SELECT DISTINCTROW  TOP 1 CPOrders.Cust, Customer.NAME, CPOrders.CP_Ref, CPOrders.Slsman, CPOrders.Date_opn, CPOrders.CPSmall, CPOrders.InvIssu, CPOrders.InvNo, CPOrders.InvDate, CPOrders.DueDate, CPOrders.ETADate, CPOrders.Closed, CPOrders.BuyerRef, CPOrders.ToCity, CPOrders.ToState, CPOrders.ToCtry, CPOrders.ToPort, CPOrders.Supplier, CPOrders.Origin, CPOrders.Product, CPOrders.GradeType, CPOrders.NoUnits, CPOrders.Pkg, CPOrders.Qty, CPOrders.TotSale, CPOrders.TotCost, CPOrders.GrMargin, CPOrders.[Sale$/Unit], CPOrders.[Cost$/Unit], CPOrders.OceanCost, CPOrders.OceanNotes, CPOrders.BLadingDate, CPOrders.USAPort, CPOrders.FOBCost, CPOrders.FASExportVal, CPOrders.InlandFrt, CPOrders.CommodCode, CPOrders.Notes FROM Customer INNER JOIN CPOrders ON Customer.[CUST_#] = CPOrders.Cust ORDER BY CPOrders.CP_Ref desc;"
Set rs = db.OpenRecordset(strSQL, dbOpenDynaset, dbReadOnly)
rs.MoveFirst 

CP_Ref.ControlSource = rs!CP_Ref
Slsman.ControlSource = rs!Slsman
CPSmall.ControlSource = rs!CPSmall
InvIssu.ControlSource = rs!InvIssu
InvDate.ControlSource = rs!InvDate
DueDate.ControlSource = rs!DueDate
Closed.ControlSource = rs!Closed



rs.Close
db.Close

控制源参考选择并自动填充单词。

我认为这就是它的立场。虽然我没有用我的SELECT语句中的记录填充所有值,但它会填充,但我会得到值#NAME?之类的值。我也在我的代码中断了它并说“无效使用null”

为什么呢?我感谢你的家伙输入,如果有必要,我可以提供截图。我认为这涉及参考领带,但我不确定。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您正在使用SELECT语句中的字段名称,就好像它们是变量一样。

CP_Ref.ControlSource = rs("CP_Ref")
Slsman.ControlSource = rs("Slsman")
CPSmall.ControlSource = rs("CPSmall")
InvIssu.ControlSource = rs("InvIssu")
InvDate.ControlSource = rs("InvDate")
DueDate.ControlSource = rs("DueDate")
Closed.ControlSource = rs("Closed")

当你解决了这个问题后,通过首先识别任何可能为NULL的字段并使用类似

之类的字符来解决"无效使用null" 问题

SELECT Iif(IsNull([InvDate]), '', [InvDate]) As [InvDate], ...

在SELECT语句中传递最少的空字符串而不是NULL值。