1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
Option Compare Database
Option Explicit
Private m_intCheckCount
Sub CheckSpeller()
Dim oDB As DAO.Database
Dim oRSSource As DAO.Recordset
Dim SQLOccurences As String
Dim strCriteria As String
Dim strFieldValue As String
Dim aFieldValues() As String
Dim intUbound As Integer
Dim O As Integer
Set oDB = CurrentDb()
SQLOccurences = "SELECT * FROM TableErreurs"
Set oRSSource = oDB.OpenRecordset(SQLOccurences, 2)
With oRSSource
Do While Not .EOF
strFieldValue = .Fields(0).Value
aFieldValues = Split(strFieldValue, " ")
intUbound = UBound(aFieldValues)
If intUbound = 0 Then
m_intCheckCount = 1
UpdateOccurences oDB, strFieldValue, oRSSource, 1
Else
m_intCheckCount = m_intCheckCount + 1
For O = LBound(aFieldValues) To UBound(aFieldValues)
strFieldValue = aFieldValues(O)
UpdateOccurences oDB, strFieldValue, oRSSource, intUbound - _
1
Next
End If
.MoveNext
m_intCheckCount = 0
Loop
.Close
End With
Set oRSSource = Nothing
oDB.Close
Set oDB = Nothing
End Sub
Private Sub UpdateOccurences(DB As DAO.Database, ByVal Occurrence As String, _
RSSource As DAO.Recordset, CountCheck As Integer)
Dim SQLCorrections As String
Dim oRSCorrections As DAO.Recordset
Dim strCriteria As String
SQLCorrections = "SELECT Occurence, Correction FROM TableCorrections WHERE "
strCriteria = "Occurence LIKE '" & "*" & Occurrence & "*'"
Set oRSCorrections = DB.OpenRecordset(SQLCorrections & strCriteria, 2)
With oRSCorrections
If .EOF = True And CountCheck >= m_intCheckCount Then
With RSSource
.Edit
.Fields("EstCorrige") = False
.Fields("Correction") = "Occurence non trouvée"
.Update
End With
Else
If Not .EOF Then
With RSSource
.Edit
.Fields("EstCorrige") = True
.Fields("Correction") = oRSCorrections.Fields(1).Value
.Update
End With
End If
End If
.Close
End With
End Sub |
Partager