所以我被告知我可以为这个表单创建一些复制替换功能。
这是我在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”
为什么呢?我感谢你的家伙输入,如果有必要,我可以提供截图。我认为这涉及参考领带,但我不确定。非常感谢任何帮助。
答案 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值。