我想根据SQL查询的结果自动填充表单中的字段。我只是不确定让它正确读取查询的正确语法。这就是我所得到的,但它并没有返回查询的值,实际上只是返回查询本身的文本。
Private Sub PurchBatchNo_Enter()
Dim MostRecentPurchBatch As String
MostRecentPurchBatch = "SELECT Max(PurchaseBatchNo) FROM purchases"
Me.PurchBatchNo.Value = MostRecentPurchBatch
End Sub
我确信这个问题与引号有关,但没有引号也不行,我不知道如何正确书写。
谢谢你来这里为像我这样的初学者服务!
您的代码所做的就是将一个变量设置为一个字符串,然后尝试用该字符串设置字段的值。
但为什么要用记录中已经使用过的值填充字段呢?很可能你需要增加1。
若要使用SQL语句,必须打开一个记录集对象,然后引用记录集的字段。
Private Sub PurchBatchNo_Enter()
Dim MostRecentPurchBatch As DAO.Recordset
If IsNull(Me.PurchBatchNo) Then
Set MostRecentPurchBatch = CurrentDb.OpenRecordset("SELECT Max(PurchaseBatchNo) AS MaxBatch FROM purchases")
Me.PurchBatchNo = MostRecentPurchBatch!MaxBatch + 1
End If
End Sub
然而,从表中提取单个值是域聚合函数的优点。
Private Sub PurchBatchNo_Enter()
If IsNull(Me.PurchBatchNo) Then Me.PurchBatchNo = DMax("PurchaseBatchNo", "purchases") + 1
End Sub
不要使用VBA过程,只需考虑使用DMax((表达式设置绑定到PurchBatchNo字段的文本框的DefaultValue属性。一旦通过输入到另一个文本框来启动记录,就会填充PurchBatchNo。
如果用户不能编辑此值,请将文本框设置为"锁定是"one_answers"选项卡停止否",并在使用VBA时为VBA代码使用其他事件。