Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations bkrike on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Mr. and Mrs. in a Report 2

Status
Not open for further replies.

mellay

Technical User
Oct 3, 2001
33
US
Hi Everyone!

I have a Church Database. In most cases, I have two separate records that contain information on a two people who are married. When I sort telephone numbers or mailing addresses on a report, I get:

John Smith (478)-555-5555 101 Main St, Anywhere,State
Mary Smith (478)-555-5555 101 Main St, Anywhere,State

Is there a anyway to show?

John and Mary Smith (478)-555-5555 101 Main St. Anywhere, State

Or

Mr. and Mrs. John Smith (478)-555-5555 101 Main St. Anywhere, State

I would like to show one entry instead of two on a report.

I have Access 2002 and Windows XP

Thank you for your help!! Mellay
 
If you mean, 'Is there a way to do this with just SQL', then no, I don't think there is. It's very possible using a module and creating a function that will loop through the recordset and concantenate matching information.

leslie
 
I found this in my pile of notes. I used it before and it works well. Just change the field and table names to yours and concatenate the fields you need:

I made a table with two fields - partno, desc. Desc can span more than one record, eg. partno desc
abcd this is one desc
abcd this is two desc
xyz another desc
xyz more desc
etc. etc.

I want to concatenate the desc's into one field.

create a query that looks like this:
SELECT [partno], fConcatFld("parttable","partno","desc","string",[partno]) AS descs
FROM parttable
GROUP BY [partno];

Do ALT+F11, insert a new module and put the following code for the fConcatFld function:

Function fConcatFld(stTable As String, _
stForFld As String, _
stFldToConcat As String, _
stForFldType As String, _
vForFldVal As Variant) _
As String

'Usage Examples:
' ?fConcatFld(("Customers","ContactTitle","CustomerID", _
' "string","Owner")
'Where Customers = The parent Table
' ContactTitle = The field whose values to use for lookups
' CustomerID = Field name to concatenate
' string = DataType of ContactTitle field
' Owner = Value on which to return concatenated CustomerID
'
Dim lodb As Database, lors As DAO.Recordset
Dim lovConcat As Variant, loCriteria As String
Dim loSQL As String

On Error GoTo Err_fConcatFld

lovConcat = Null
Set lodb = CurrentDb


loSQL = "SELECT [" & stFldToConcat & "] FROM [" & stTable & "] WHERE [" & stForFld & "] = '" & vForFldVal & "' ;" 'place this line on one line in the VBA window.

Set lors = lodb.OpenRecordset(loSQL, dbOpenSnapshot)

'Are we sure that duplicates exist in stFldToConcat
With lors
If .RecordCount <> 0 Then
'start concatenating records
Do While Not .EOF
lovConcat = lovConcat & lors(stFldToConcat) & " "
.MoveNext
Loop
Else
GoTo Exit_fConcatFld
End If
End With

'Just Trim the trailing ;
fConcatFld = Left(lovConcat, Len(lovConcat) - 1)


Exit_fConcatFld:
Set lors = Nothing: Set lodb = Nothing
Exit Function

Err_fConcatFld:
MsgBox "Error#: " & Err.Number & vbCrLf & Err.description
Resume Exit_fConcatFld
End Function

Run the query, which calls the function. Besure in your VBA window, click on Tools , the References and make sure the DAO library is referenced first.
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top