我遇到了以访问形式填充数据的问题。
目前,我的表设计是:一个表 [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无法找到表或查询“最小”” ...我在查询表达式上缺少内容吗?