我正在使用Access 2010.我有一个数据库,可以记录流程中错误的自由格式文本。我想创建一个函数,在自由格式文本中搜索关键字并根据错误代码进行报告。不知道如何去做这件事:
EX:
ID |的说明
1 |松散的部分
2 |涂抹油漆
3 |没有螺栓
与另一个表格中的关键字进行比较
关键字 | 错误代码
油漆| 32个
螺栓| 25
部分| 55
输出看起来像
ID | 错误代码
1 | 55
2 | 32
3 | 25
我的想法是,我可以更新关键字表,以包含新的关键字和错误代码作为更多弹出窗口。
答案 0 :(得分:1)
我给你一个可能的解决方案:
假设您的表名为tbDescriptions,tbKeywords,tbErrors。 tbErrors的ID字段是自动编号的(如果不是,您只需要在重建期间添加ID值)。
这是一个可用于重建错误表的子程序。 请注意,我假设每次需要更新时都可以删除并重建tbErrors。如果不是这样,你需要在tbErrors中管理Error的存在,但它并没有那么复杂。
Private Sub RebuildErrorTable()
Dim rsKeyWords As dao.Recordset, rsErrors As dao.Recordset
Dim strKeyword As String
Dim strSELECT As String
Dim strWhereCond As String
Dim intNumOccurrences As Integer
'
' Delete all records from tbErrors
'
DoCmd.SetWarnings False
DoCmd.RunSQL = "DELETE * FROM tbErrors"
DoCmd.SetWarnings True
'
' Rebuild table tbErrors
'
strSELECT = "SELECT * FROM tbKeyWords"
Set rsKeyWords = CurrentDb.OpenRecordset(strSELECT, dbOpenDynaset) ' Open keywords table
strSELECT = "SELECT * FROM tbErrors"
Set rsErrors = CurrentDb.OpenRecordset(strSELECT, dbOpenDynaset) ' Open Errors table for rebuilding
'
' Scan all keywords
'
Do While Not rsKeyWords.EOF
strKeyword = rsKeyWords!keywords ' Current keyword
strWhereCond = "Desc LIKE '*" + strKeyword + "*'" ' Build search condition
intNumOccurrences = DCount("ID", "tbDescriptions", strWhereCond) ' Count keyword occurences in the descriptions table
If intNumOccurrences > 0 Then ' If keyword was found at least once
With rsErrors ' Inser error code into Errors table
.AddNew
.Fields("ErrorCode") = rsKeyWords!ErrorCode
.Update
End With
End If
rsKeyWords.MoveNext ' Move to next keyword
Loop
'
' Close all and free memory
'
rsErrors.Close
rsKeyWords.Close
Set rsErrors = Nothing
Set rsKeyWords = Nothing
End Sub
再见:-) WIZ