Public Sub DiagCode()
DoCmd.SetWarnings False
'Create Diag table with a single record for each MolisID
DoCmd.RunSQL ("SELECT HUS.MolisID, '' AS DIAG INTO Diag FROM HUS GROUP BY HUS.MolisID, '' ORDER BY HUS.MolisID;")
'Create a recordset of Diag table for population
Dim rsD As DAO.Recordset
Set rsD = CurrentDb.OpenRecordset("SELECT * FROM Diag")
rsD.MoveFirst
Do While Not rsD.EOF
'Create a sub-recordset of all records in HUS with the current MolisID
Dim rsSS As DAO.Recordset 'SS=subset
Dim ssSQL As String
ssSQL = "SELECT HUS.MolisID, HUS.DIAGCODE, HUS.FILLV1 " & _
"FROM HUS " & _
"WHERE HUS.MolisID='" & rsD!MolisID & "' " & _
"ORDER BY HUS.DIAGCODE, HUS.FILLV1;"
Set rsSS = CurrentDb.OpenRecordset(ssSQL)
'Work through the records concatenating the results in DiagString
Dim DiagString As String
rsSS.MoveFirst
Dim Comment As String
Dim tmpStr As String
Dim sChar As String
Dim Counter As Integer
Comment = rsSS!FILLV1 & ""
If InStr(1, Comment, Chr(28)) <> 0 Then
For Counter = 1 To Len(Comment)
If Mid(Comment, Counter, 1) = Chr(28) Then
sChar = ""
Else
sChar = Mid(Comment, Counter, 1)
End If
tmpStr = Trim(tmpStr)
tmpStr = tmpStr & sChar
Next Counter
Comment = tmpStr
Else
Comment = tmpStr
End If
Do While Not rsSS.EOF
DiagString = DiagString & " " & Trim(rsSS!DiagCode & " " & Comment) & " "
rsSS.MoveNext
Loop
With rsD
.Edit
!DIAG = Trim(DiagString)
.Update
End With
DiagString = ""
rsD.MoveNext
Loop
DoCmd.SetWarnings True
End Sub