VB 找不到访问变量中的脚本

VB Script in Access Variable not found

所以有人建议我可以为此表单创建一些复制替换功能。

这是我在 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? 之类的值应该在哪里。我的代码也中断了,它说 "Invalid use of null"

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

您正在使用 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")

解决了 "Invalid use of null" 问题,方法是首先识别任何可能为 NULL 的字段并使用类似

的字段

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

在 SELECT 语句中传递至少一个空字符串而不是 NULL 值。