Function 使用函数在ms access中搜索整行并返回列名
我需要一点帮助。以前我一直使用IIF语句来获得这个输出,但是IIF有一些限制,现在我正在寻找一个函数(在MS Access中)来满足要求 挑战:需要在一行中搜索条件(例如标题00\Question..),如果/当找到匹配项时,它将使用带有查询的函数返回列名(例如FieldCategorization(标题00\Question))。单击下面的链接以查看表和所需输出 Microsoft access表: 查询的所需输出: 到目前为止,我搜索的是整个表,而不是每行搜索一行:Function 使用函数在ms access中搜索整行并返回列名,function,ms-access,vba,Function,Ms Access,Vba,我需要一点帮助。以前我一直使用IIF语句来获得这个输出,但是IIF有一些限制,现在我正在寻找一个函数(在MS Access中)来满足要求 挑战:需要在一行中搜索条件(例如标题00\Question..),如果/当找到匹配项时,它将使用带有查询的函数返回列名(例如FieldCategorization(标题00\Question))。单击下面的链接以查看表和所需输出 Microsoft access表: 查询的所需输出: 到目前为止,我搜索的是整个表,而不是每行搜索一行: Public Fun
Public Function FieldCategorization(TblName As String, Criteria As Long) As String
Set dbs = CurrentDb
Set rs = dbs.OpenRecordset(TblName)
Dim fld As DAO.Field
' MyValue = 224803 ' T00 = Title 00\Question\First Name Text
' MyValue = 224814 ' AB00 = Abbreviation 00
MyValue = Criteria
'MsgBox "TblName: " & TblName & vbCrLf & "Criteria: " & Criteria
rs.MoveFirst
' Move through each row in the recordset
'Do While Not rs.EOF
For Each fld In rs.Fields
If fld = MyValue Then
FieldCategorization = fld.Name
End If
Next fld
rs.MoveNext
'Loop
End Function
今天我们做了一些类似的事情。下面的例子非常简单,但我认为它包含了您要查找的所有元素
dim fld as fields
dim rst, rstW as recordset
MyValue = "Title 00\Question"
Set dbs = currentdB
Set rst = dbs.openrecordset ("table1")
Set rstW = dbs.openrecordset ("table2")
rst.movefirst
Do while not rst.eof
for each fld in rst.fields
if me(fld.name) = MyValue then
rstW.addnew
rstW!Title00 = fld.name
rstW.update
end if
next fld
rst.movenext
Loop
你的IIF是什么样子的?你所需要的只是两个相似的IIF表达式,比如:
Title 00:IIF(左([T_Val_00_AV],8)=“Title 00”,“T_Val_00_AV”,IIF(左([T_Val_01_AV],8)=“Title 00”,“T_Val_01_AV”,等等…)
。抱歉,我懒得把这一切都说出来。iif声明是错误的。然而,这个表有超过14列,因此触及了驱动函数解决方案需求的iif语句的限制。我不知道你是如何产生你想要的结果的。请将示例数据和预期结果添加为文本,听起来好像您试图将数据库视为电子表格。在标准化数据库(可以使用本机查询)或电子表格(可以使用VBA搜索“行”和“列”)中会容易得多。geeFlo,感谢您的输入。我不想创建一个表,只想在找到搜索条件时搜索一行并返回列的名称(基于每行)。例如,这是一个很好的开始,但它正在尝试处理孔表,而不是一行。WHILE循环应该带您遍历整个表(所有记录),因为循环会遍历每个字段。如果要搜索更多值,只需展开If语句如果只需要该行,则删除while-loopgeeFlo,这是非常有用的指导。我还是卡住了(谢谢你的耐心)。最终需要在查询中多次使用该函数,例如(在查询中):FieldCategorization(“TblName”)例如(在查询中):Title 00:FieldCategorization(“TblName”,“Title 00\Question”)缩写00:FieldCategorization(“TblName”,“缩写00”)查询(将while循环从函数中取出)位于“Title 00”处,返回所有字段的“T_Val_00_AV”(不正确,根据上述示例,部分字段应为“T_Val_03_AV”),然后“缩写词00”列为空