not merging duplicate records

D

dan

Hello listers

I saw your code on the cindy meister website regarding suppressing
duplicates in a mail merge. I unfortaunately am not able to follow it very
well.

I have a data source with a bunch of fields. I only need 2 of the fields in
my mail merge document. When I merge them to my template I get lots of
multiples when I really need only one of each.

I am making labels for pricing items and have the following data source
model

itemnumber itemprice itemdescription itemmodel
1234 24.95 item1yellow 2
1234 24.95 item1gree 3
1234 24.95 item1blue 4
1234 24.95 item1red 5
4321 32.95 item1yellow 1
4321 32.95 item1orange 1

etc

but when i run a mail merge to make the labels i only need the item number
and the price since they are all the same. But running a normal mail merge
gives me 5 labels for item 1234 and two labels for 4321 when i really only
need two labels total as there are only two different item numbers.

If you could help me work through this or offer any code as to how to
accomplish this it would be greatly appreciated.

Altering the data source is not an option.

Thanks in advance!!!
 
D

Doug Robbins - Word MVP

How best to do this depends upon the datasource. If it is a table in an
Access database, it is very easy to do using a query.

If, it's in Excel, it can be done, using and IF() function construction and
then doing a sort.

If it's in Word, you will find some information of eliminating duplicates in
the article "Finding and replacing characters using wildcards" at:

http://www.word.mvps.org/FAQs/General/UsingWildcards.htm


--
Hope this helps.

Please reply to the newsgroup unless you wish to avail yourself of my
services on a paid consulting basis.

Doug Robbins - Word MVP
 
P

Peter Jamieson

In addition to Doug's reply, even if "altering the data source is not an
option" you may be able to open the data source using a query in a VBA
OpenDataSource statement in a way that eliminates the duplicates. However,
it depends on what type of data source you have.

Peter Jamieson
 
D

Dan

Hi all-

Thanks Peter thats an interesting concept that I hadn't considered.

My data source is a flat text file - tab delimited.


Thanks for any advise..
 
D

Dan

To follow up...

I m not saying that Cindy's method wont work. As a matter of fact I would
like a template-side solution like that. I merely cant figure out for the
life of me how to convert her solution there to work for my data model. If
you guys are proficient with this and can help that would be greatly
apreciated.

Again my data source si a flat text file, tab delimited and looks like this:

itemnumber itemprice itemdescription itemmodel
1234 24.95 item1yellow 2
1234 24.95 item1gree 3
1234 24.95 item1blue 4
1234 24.95 item1red 5
4321 32.95 item1yellow 1
4321 32.95 item1orange 1


I need to make labels like this for example:

1234
24.95

4321
32.95

I only need one label per product number/price despite the multiple records
for each product(a result of different colors/sizes/etc. - but prices are
still the same)


Thanks again!!!!
 
D

Doug Robbins - Word MVP

Unfortunately, there are a few errors in the construction given on Cindy's
site. It should be

{ IF { REF Check } <> "{ MERGEFIELD itemnumber } { MERGEFIELD itemprice } "
"{ MERGEFIELD itemnumber } { MERGEFIELD itemprice }¶
" }{ SET Check "{ MERGEFIELD itemnumber } { MERGEFIELD itemprice }" }

Where the ¶ appears in the above construction, you must press the enter key.

When I execute a merge containing the above construction, I receive an error
message about a field calculation error in the first field. However,
clicking OK results in the merge being executed to give the desired result.

When you execute the merge, a bookmark is inserted named Check is inserted
into the main document. If you wish to re-execute the merge, it is
necessary to first delete that bookmark.

--
Hope this helps.

Please reply to the newsgroup unless you wish to avail yourself of my
services on a paid consulting basis.

Doug Robbins - Word MVP
 
P

Peter Jamieson

OK, you may be able to do this another way, but if you have an ODBC User or
System DSN called "Delimited Text Files" that uses the MS Text Driver, and
your file is called c:\myfiles\myitems.txt then you would need:
a. a plain text file called SCHEMA.INI (this is normally created in the
ODBC Admnistartor utility but you can create or edit it in Notepad) in
c:\myfiles with the following content (at least):

[myitems.txt]

ColNameHeader=True

Format=TabDelimited

MaxScanRows=25



(you might also need

CharacterSet=OEM

or

CharacterSet=ANSI

)



Run a macro such as the following to set up the data source (once you have
done this, the document should be connected to the data source for good, as
long as Word's security does not get in the way).


Sub OpenNoDuplicates()
' Disconnect from any existing source (you will lose sort sequence and
filters)
ActiveDocument.MailMerge.MainDocumentType = wdNotAMergeDocument
' Use whatever merge type you need instead of wdCatalog
ActiveDocument.MailMerge.MainDocumentType = wdCatalog
ActiveDocument.MailMerge.OpenDataSource _
Name:="", _
Connection:="DSN=Delimited Text
Files;DBQ=c:\myfiles;DefaultDir=c:\myfiles;DriverId=27;FIL=text;", _
SQLStatement:="SELECT DISTINCT itemnumber,itemprice FROM myitems.txt", _
SubType:=wdMergeSubTypeWord2000
End Sub

Peter Jamieson
 
D

Dan

Thanks Doug - yep i m getting some errors but its kinda working.

The biggest issue is that it just leaves a blank space where the duplicates
are/should be. Is there any way to advance to the next unique record for the
next field? So if I'm printing labels I dont have all these blank spots where
the duplicates would be, I'd like to fill them into the next available
mergefield cell so to speak

does that make sense?

Thanks
 
P

Peter Jamieson

It makes sense but I don't think there's a way to do it using fields, hence
the "modify the data source approach". Trouble is, that's not particularly
easy either. You could also consider doing one merge to eliminate the
duplicates using Cindy's method and a catalog merge, then use the document
produced by that as the source for a second merge.

Peter Jamieson
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top