2012-08-22 41 views
1

我有一个单一的窗体上存在几个组合框和文本框。一个组合框的值(井)将被独立填充,然后我需要文本框根据井组合框的值得到它的值。我创建了一个部分解决了问题的查询,它需要井组合框的值。如果我用表单查询一部分,它会很好,并要求参数,它是可以的。我认为要利用VBA,添加处理SELECT语句(上面提到的查询)的代码,然后告诉它从将在表单上准备好的井组合值中取出参数。文本框根据组合框值使用查询

有人可以帮助这个。这可以像我描述的那样工作。

在此先感谢。

穆罕默德

而且上面我的问题,我曾尝试以下解决方案:

Private Sub Well_ID_Change() 
Last_Ref.ControlSource = " SELECT TOP1 New_Ref FROM" & _ 
" BSW_Transactions WHERE BSW_Transactions.New_Ref Is Not Null AND BSW_Transactions.Well_ID = " & Me.Well_ID.Value & _ 
" ORDER BY BSW_Transactions.Sample_Date DESC" 
End Sub 

的Last_Ref是文本框我想在代码中嵌入SELECT语句的结果填写。 Well_ID是组合框,其值将是SELECT语句的参数。 Well_ID是数字字段,它显示well_name并将关联的ID值存储在表中。在保存更改后运行表单时,Last_Ref文本框显示(#Name?)。我猜想文本框(是一个数字字段)在组合框Well_ID中找到了一个文本,所以我在条件Me.Well_ID中将“.Value”添加到上面的语法中。但问题依然存在。

我可以误解语法吗?有人会帮助解决这个问题。这可以正常工作吗?

在此先感谢。穆罕默德

+0

当订单中有匹配项时,排名前1可以返回更多的记录。为了正常工作,系统中不能有多个人,否则在A人工作时,人员B可以进行新的交易。我怀疑可能有设计问题。 – Fionnuala

回答

0

的问题是,文本框中不能有自己的控制源设置像一个组合框或列表框,它需要传递的值,例如:

Private Sub Well_ID_Change() 

Dim rs As Recordset  

Set rs = CurrentDb.OpenRecordset("SELECT TOP1 [New_Ref] FROM" & _ 
" [BSW_Transactions] WHERE [BSW_Transactions].[New_Ref] Is Not Null" & _ 
" AND [BSW_Transactions].[Well_ID] = " & Me.Well_ID & _ 
" ORDER BY [BSW_Transactions].[Sample_Date] DESC", dbOpenSnapShot) 

rs.MoveFirst 
Last_Ref = rs![New_Ref] 
rs.Close 
Set rs = Nothing 

End Sub 

我也放弃了。价值因为它不是必需的

+0

这一切看起来有点令人担忧,但如果OP认为这必须完成,我想DMax将与其他任何东西一样有用。 – Fionnuala

+0

@Remou是的,我对这个问题也有点小心,因为你说它看起来可能会有不好的设计。我选择了一个D函数,这是因为一旦有多个参数,我从来都不喜欢与他们合作。 –

+0

@Matt唐南,我试过你的解决方案,但由于VBA显示的语法错误消息失败,如下所示:运行时错误(3075)语法错误在查询表达式'TOP1 New_Ref'中缺少运算符。请您回顾一下 – mhegazy