2016-11-30 69 views
0

这是我到目前为止的代码,我试图找到解决方案,但我找不到我正在寻找的。我在Access中这样做。如何从我的数据库中填充文本框的值?

Dim rs As DAO.Recordset 
sSQL = "SELECT Building FROM tblDepartment WHERE Department_ID = 
'" & Me.cboDepartment & "'" 
Set rs = CurrentDb.OpenRecordset(sSQL) 
Me.txtLocation = rs.Fields(1).Value 

我也尝试这样的:

Dim db As DAO.Database 
Set db = CurrentDb() 
sSQL = "SELECT Building FROM tblDepartment WHERE " _ 
& "Department_ID = '" & Me.cboDepartment.Value & "'" 
Me.txtLocation.Value = db.Execute(sSQL) 

第三次尝试是这样的:

Sub spGetBuilding() 
Dim rs As DAO.Recordset 
sSQL = "SELECT Building FROM tblDepartment WHERE Department_ID = '" & Me.cboDepartment & "'" 
Set rs = CurrentDb.OpenRecordset(sSQL) 

If rs.RecordCount > 0 Then 
    Me.txtLocation = rs.Fields(0).Value 
Else 
    Me.txtLocation = 0 
End If 

Set rs = Nothing 
End Sub 

但它返回错误消息 “条件表达式中的数据类型不匹配”

我找出造成此错误的原因是因为某些值不包含构建值。我试图设置参数,以便WHERE还包含“AND Building IS NOT NULL”以消除空值。但同样的错误仍然出现。

+0

Office应用程序,您使用的是哪个时,Excel?访问?以下[链接](http://stackoverflow.com/questions/38196833/multiple-arithmetic-operations-in-vba-userforms/38198479#38198479)可能会帮助您填充VBA中的texbox。 –

+0

你有什么错误?有什么问题?和你使用什么数据库? – Sami

+0

我更新了答案中的信息,但我使用的是Access。 –

回答

1

对于这样一个简单的任务,使用DLookup要简单得多,如果没有建筑发现它返回一个空。

而且,离开了单引号作为部门编号最有可能的是数字:

Me!txtLocation.Value = DLookup("Building", "tblDepartment", "Department_ID = " & Me!cboDepartment.Value & "") 
1

肯定是你背后的组合框。 如果您使用的组合框的列数超过1,则隐藏具有ID的列,因为您使用查询来填充所述组合框,然后您将底层ID传递给select查询。

要真正将组合框上写的内容传递给select子句,请使用它的文本属性。

sSQL = "SELECT Building FROM tblDepartment WHERE " _ 
& "Department_ID = '" & Me.cboDepartment.Text & "'"