【问题标题】:Is there a way to conditionally list field names on an access form?有没有办法有条件地在访问表单上列出字段名称?
【发布时间】:2016-06-09 22:35:42
【问题描述】:

我有一个大型数据库,用于监控员工参加培训活动的情况。每条记录都是一名员工,并且(连同基本信息)有大约一百个字段代表过去 10 年的培训活动。这些字段都是是/否复选框,因此会检查员工是否参加了该研讨会。

我有一个表单,可以轻松查看个别员工的信息,但我希望此表单上有一个动态列表,显示当前选定的员工参加了哪些活动。

所以我想要一个列表来查看指定记录的哪些字段被指定为真。

有没有办法做到这一点?找了一天也没找到解决办法。谢谢。

【问题讨论】:

标签: ms-access vba


【解决方案1】:

可能是这样的,假设所有 boolean 字段都是相关的并且字段名称是车间名称:

Public Function getWorkshops(ByVal strEmployee As String) as String
' Declare vars
Dim db as DAO.Database
Dim rs as DAO.Recordset
Dim lngFieldsCount as Long
Dim n as Long
Dim strWorkshops as string

Set db = CurrentDb() '
lngFieldsCount = db.TableDefs("myTable").Fields.Count ' Count number of fields to iterate through
Set rs = db.OpenRecordset("SELECT * FROM myTable WHERE employeeName LIKE '" & strEmployee & "';",DbOpenSnapshot)
Do While not rs.Eof
  For n = 0 to lngFieldsCount -1 ' iterate through all fields
    If TypeOf rs.Fields(n) is dbBoolean Then ' check if field is boolean
      If rs.Fields(n) Then ' check if boolean is true
        strWorkshops = strWorkshops & rs.Fields(n).Name & vbCrLf ' add field names to string, separated by linebreaks
      End If
    End If
  Next n
  rs.MoveNext
Loop
getWorkshops = strWorkshops 'Set result of function
'Clean up
rs.Close
Set rs = Nothing
Set db = Nothing
End Function

这将返回字符串中所有真实字段的名称,用换行符分隔(未测试)。

【讨论】:

猜你喜欢
  • 2021-05-31
  • 1970-01-01
  • 1970-01-01
  • 2021-03-22
  • 1970-01-01
  • 2023-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多