我有一个这样的表:
+-----------+------+
| TableName | Flag |
+-----------+------+
| TableG | 0 |
| TableE | 0 |
| TableR | 1 |
| TableL | 1 |
| TableN | 0 |
我想做的是有一个函数,其中查找Flag = 1的每个TableName,以便我可以将Flag = 1的每个表分配给表单中的按钮(例如,将第一个实例分配给Button1,等等)。棘手的是,该表无法编辑,因此无法分配唯一的ID /计数来轻松地获取项目。
到目前为止,这是我尝试过的方法:
Public Function TableNameRS(TableID As Integer)
Dim RS As DAO.Recordset
Dim SQL As String
Dim Name As Variant
SQL = "select TableName, COUNT(TableName) from MyTable where Flag=1"
Set RS = CurrentDb.OpenRecordset(SQL)
Name = RS("TableName")
TableNameRS = Name
RS.Close
End Function
我没有主意-在这里我有什么选择?
如果记录和按钮的数量是固定的,例如10,并且按钮的名称如btn1,btn2等,请考虑以下过程:
Public Sub TableNameRS(TableID As Integer)
Dim RS As DAO.Recordset
Set RS = CurrentDb.OpenRecordset("SELECT TableName FROM MyTable WHERE Flag=1 ORDER BY TableName")
For x = 1 to 10
Me("btn" & x).Caption = RS("TableName")
RS.MoveNext
Next
RS.Close
End Function
程序可以以Open事件的形式调用。然后,Click事件中的代码可以将其标题作为参数传递给需要使用TableName值进行操作的任何其他过程。
在Access查询中计算序列标识符是MS Access重新启动编号序列的常见主题。
假设TableName值是唯一的:
SELECT TableName, DCount("*", "table", "TableName<'" & [TableName] & "' AND Flag=1")+1 AS Seq,
FROM table
WHERE Flag=1
ORDER BY TableName;
可以将该查询用作表单或报表的RecordSource或在其上执行DLookup()。
请注意,过滤器的任何更改都会影响序列计算。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句