我负责管理一个大型综合体的设施,并负责为我们的客户发布和跟踪物理密钥。钥匙印有特定的代码(与锁本身相匹配),我还在一个单独的系统上对单独的门进行了编号,以说明锁经常更换门的事实。
在我的数据库中,我正在Microsoft Access中构建(对不起,非常像SQL noob),我有一个空间表(包括建筑、房间和门号),还有另一个单独的表用于钥匙(钥匙代码、钥匙槽口代码、主钥匙等)。我还在spaces表中包含了一个引用密钥表的字段(通过ID字段),以指示哪些锁与哪些门相关联。
最后,我有一个日志表,其中记录了客户端对键的请求。他们可以通过门号或钥匙代码来请求钥匙。我希望能够在表单中输入门号或钥匙代码(绑定到从两个表中提取的查询),并让它相应地自动填充其他字段。目前,我管理了一个配置,输入门号码将自动完成关键字段,但我无法让它工作-反之亦然。
这可能需要进行某种结构上的更改,但如果需要,我甚至愿意深入研究直接编写SQL代码。我甚至尝试过编写内部连接代码,但它已经执行了双重连接,我不确定这是否是可以链接的东西。
站住!
发布于 2017-06-07 03:28:41
您可以通过在textbox字段的AfterUpdate事件中添加一些VBA来完成此操作。您可以在每种情况下使用相同的查询。
为了便于参数,我将门号文本框命名为"txtDoorNbr",将钥匙代码文本框命名为"txtKeyCode“。
首先,编写一个获取所有门号和钥匙代码的查询。我想你已经说过你已经写好了这个查询。
接下来,在txtDoorNbr的AfterUpdate事件中,您将编写如下代码:
Dim db as Database
Dim rec as Recordset
Set db = CurrentDB
Set rec = db.OpenRecordset("Select KeyCode from MyQuery where DoorNumber = " & Me.txtDoorNbr & "")
Me.txtKeyCode = Rec(0)
rec.Close
db.Close在txtKeyCode的AfterUpdate事件中,编写一些非常类似的代码:
Dim db as Database
Dim rec as Recordset
Set db = CurrentDB
Set rec = db.OpenRecordset("Select DoorNbr from MyQuery where KeyCode = " & Me.txtKeyCode & "")
Me.txtDoorNbr = Rec(0)
rec.Close
db.Close这应该就行了。可能需要对其进行一些调整,以适应某些情况(例如,如果在查询中没有找到相应的记录,则会出现错误消息,等等)以及您在查询中使用的实际字段名称,但这基本上就是方法。
发布于 2017-06-08 04:09:42
你有记录日志的表格吗?这只是一个新记录的数据输入,对吗?什么数据是输入的- date,keyID,userID?因此,表单绑定到日志表,并将ControlSource设置为每个字段的控件,以便将输入直接保存到表中的记录中?
我的建议是有两个组合框。一个设置为显示门号,另一个设置为显示钥匙代码,但两者都将ControlSource设置为key字段,并将保存keyID。这是一种非常规的设计。用户必须知道,如果他们用一个组合框进行选择,他们可能会忽略另一个组合框。您可以在两个组合框的上方放置一个标签"Select door number or key code“。
Door combobox RowSource,如:SELECT keyID, DoorNum FROM ...;"
Key combobox RowSource如:SELECT keyID, KeyCode FROM ...;
对于这两个组合框,设置属性:
ControlSource:日志表中的关键字段
ColumnCount: 2
ColumnWidths: 0";1“
https://stackoverflow.com/questions/44396735
复制相似问题