我是MS Access的新手,我写了一个SQL查询(query name = qryEmployeeInfo)来显示员工信息。
所以,我写了一个SQL查询(query name = qryEmployeeInfo)来显示员工信息。该查询输出了两列。雇员ID(header name = employee_ID)和对应的雇员地址(header name = employee_address)。
我的Access表单有一个文本框(文本框名称=txtEmployeeID),我希望用户能够在这个文本框中输入employee_ID,并将相应的employee_address输出到另一个文本框中(文本框名称=txtEmployeeAddress)。我也希望 employee_address 是一个字符串变量的格式,这样我就可以在以后对它进行其他的 VBA 检查(例如 - 如果 LIKE "California" THEN...什么的)。
我想写一个(我想)被称为注入式SQL查询的东西,这样我就可以从查询中提取那个特定的employee_ID的地址数据。我相信格式应该是这样的。
Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset("select employee_address from qryEmployeeInfo where employee_ID = "' & txtEmployeeID & "'", dbOpenDynaset)
我写的正确吗?
如果是的话,那么我如何把这个输出结果变成一个字符串变量格式(变量名=strEmployeeAddress)?
当我把员工地址转换成字符串变量格式后,我想简单地使用txtEmployeeAddress.value = strEmployeeAddress来填充员工地址文本框。同样,我也希望 employee_address 是字符串变量的格式,这样我就可以在以后对它进行其他 VBA 检查(例如 - 如果 LIKE "California" THEN...什么的)。
如果您能提供任何帮助,我将非常感激。
如果 employee_ID 是一个数字字段,请去掉括号分隔符。
如果 employee_ID 是一个文本字段,移动第一个引号,使其在引号内。"select employee_address from qryEmployeeInfo where employee_ID = '" & txtEmployeeID & "'"
然后将 txtEmployeeAddress = rs!employee_address
然而,与其打开一个记录集对象,不如直接使用DLookup。txtEmployeeAddress = DLookup("employee_address", "qryEmployeeInfo", "employee_ID =" & txtEmployeeID)
或者更好的是,省去VBA。DLookup()表达式可以在文本框ControlSource属性中,只要在前面加上=号即可。
但是,域集合函数的执行速度会很慢。所以,可以用组合框代替文本框来选择员工。在组合框RowSource中包含员工信息。文本框中的表达式引用组合框的列。=combobox.Column(1)
. 问题是combobox对列的字符数有限制,所以如果字段是备忘录(长文本)类型,这种方法是不可行的,应该使用DLookup。
只要这个表单是打开的,地址就可以在文本框中使用。如果你想让地址在表单关闭后也能被其他程序使用,那么需要设置一个全局或公共变量。这种变量必须在模块头中声明,以使其对多个程序可用。TempVars是另一种保存值供将来使用的方法。我从未使用过它们。