如何使用VBA代码将查询结果分配给文本框来填充表单中的数据

时间:2018-07-25 18:18:05

标签: sql ms-access

我遇到了以访问形式填充数据的问题。

目前,我的表设计是:一个表 [product] ,其中包含所有产品信息(ID,产品名);一个 [产品级别数据] 以获得产品级别变体的列表(ID,变体);还有一张 [产品级数据更新] 表,用于更新这些变体的值(ID,ProdID,VariantID,更新值,时间戳)。因此这些变体是时间敏感的。

现在,我想创建一个form,其中包括所有受时间影响的变量值。因此,例如,如果我输入购买时间X,则它将使用时间X的产品所有变体的最新更新值填充表格。

我知道如何使用以下查询填充一个文本框:

Select Top 1 updatevalue
From table [product level data update]
Where prodID = A 
And variantID = [forms]![form name]![detailID]
And timestamp <= [forms]![form name]![purchase time]
Order by timestamp

但是由于访问表单仅允许一个表单的一个数据源,所以我不知道如何以这种方式填充我需要的所有数据。

希望有道理!我是一个新手,所以希望有经验的人可以给我一些有关此问题的提示。

感谢任何帮助!


更新我的问题:

因此,我对此进行了深思,因为我需要为每个变体运行一个查询,因此无法将表单的控制源设置为一个查询。相反,我可以编写VBA代码,将查询结果分配给每个文本框。

所以我开始编写这段代码...而我无法使其正常工作。这是我的代码如下:

Private Sub purchasedate_AfterUpdate()

Dim theminimum As String
Dim thedataID As String
Dim theprodscID As String
Dim thepurchasedate As String


thedataID = "1"
theprodscID = Me.prodscID.Value
thepurchasedate = Me.purchasedate.Value

theminimum = "Select Top 1 [update value]" & _
            "From [product and shareclass level data update]" & _
            " Where [product and shareclass level data update].[dataID] = thedataID" & _
            " And [product and shareclass level data update].[prodscID] = theprodscID" & _
            " And [product and shareclass level data update].[timestamp] <= thepurchasedate" & _
            " Order by [product and shareclass level data update].[timestamp] DESC"


Me.minimum.SetFocus
Me.minimum = CurrentDb.OpenRecordset("theminimum").Fields(0).Value

End Sub

错误消息是“ Access无法找到表或查询“最小”” ...我在查询表达式上缺少内容吗?

0 个答案:

没有答案