【发布时间】:2014-12-17 10:06:58
【问题描述】:
我有一个访问网络数据库,需要几个用户登录。该数据库包含一个产品表。
挑战在于,每个用户只需要看到这些产品的一部分,而永远不会看到整个列表。
目前我有一些代码可以根据登录用户的详细信息修改现有查询。当他们登录时,会创建一些临时变量,这些临时变量用于修改查询条件。
这在第一个用户登录时效果很好,但是在下一个用户登录的那一刻,查询再次被修改并且产品列表刷新并且现在显示他的产品而不是第一个用户!我想我需要在登录时为每个用户动态创建一个永久查询?
或者是一种更好的方式来完成我正在尝试的事情?我很陌生访问和挣扎。有人可以帮忙吗?
到目前为止,这是我的代码:
登录表单上的按钮具有以下收集用户详细信息的代码
Private Sub cmdLoginMine_Click()
Dim ID as long, strEmpName as string,strZondsc as string,strgrpdsc as string
ID = DLookup("ID", "Employees", "Login='" & Me.txtUser.Value & "'")
strEmpName = DLookup("FullName", "Employees", "Login='" & Me.txtUser.Value & "'")
strgrpdsc = DLookup("MyGrpdscs", "Employees", "Login='" & Me.txtUser.Value & "'")
strzondsc = DLookup("MyZondscs", "Employees", "Login='" & Me.txtUser.Value & "'")
TempVars.Add "tmpEmployeeID", ID
TempVars.Add "tmpEmployeeName", txtUser.Value
然后我调用一个修改现有查询的函数,并使用此用户详细信息填充它以符合条件
qryEdit strgrpdsc, strzondsc, ID
Sub qryEdit(strgrpdsc As String, strzondsc As String, ID As Long)
Dim qdf As DAO.QueryDef
Dim qdfOLD As String
Set qdf = CurrentDb.QueryDefs("InventoryQryforDS")
With qdf
.SQL = "SELECT Products.ProductCode, Products.ProductName, Products.GRPDSC, Categories.Category, Inventory.Available " & _
"FROM (Categories INNER JOIN Products ON Categories.ID = Products.CategoryID) INNER JOIN Inventory ON Products.ID = Inventory.ProductID " & _
"WHERE Products.GRPDSC in (" & strgrpdsc & ") and Categories.Category in (" & strzondsc & ") and products.ownersid =" & ID & _
" ORDER BY Products.ProductCode"
End With
Set qdf = Nothing
End Sub
查询的结果显示在一个表单上,这是当前正在重新查询并显示错误数据的内容。
谢谢
EDIT - 数据显示在表单上,链接到如图所示的新样式导航按钮之一。表单的 recordsource 属性是填充的查询如上所述。
【问题讨论】:
标签: sql ms-access macros view vba