Eliminating a value in a mail merge

M

myrnapap

I have a mail merge where I want to eliminate printing a field if it
contains a particular value. But I still want to print the record. It's
just the field I want to skip. Can anyone suggest how to do this?

Thanks!
Myrna
 
P

Peter Jamieson

You use an IF field. For example, if you don't want to print the value of a
field called myfield when it is "M", use

{ IF "{ MERGEFIELD myfield }" = "M" "" "{ MERGEFIELD myfield }" }

All the special {} pairs can be entered using ctrl-F9. Everything else is
plain text you can type.

Peter Jamieson
 
M

myrnapap

Thanks, this sounds good. Now one more question - how do I do this if I
want to say 'don't print this field if it contains the word "blank" '
 
M

myrnapap

I guess I need more help than I thought - where do I put the IF
statement? I thought it would go on the mail merge document but that
doesn't seem to work.
 
P

Peter Jamieson

Sorry if I misunderstood - you can't do a test using simple fields for 'this
field's text contains the word "blank"' unless you happen to know that
"blank" is at the beginning or end of the text.

You may be able to do that
a. in the data source before you merge, or
b. using a DATABASE field if the data source uses a suitable dialect of SQL
(it is difficult to recommend this approach anyway)
c. using VBA and Word's mailmerge events to examine the content of the
field before each record is merged.

Peter Jamieson
 
P

Peter Jamieson

It does, but if you need to detect the word "blank" anywhere in the mere
field text, it won't work, sorry.

Peter Jamieson
 
M

myrnapap

I looked at doing it in the select but this will delete the records
having the word 'blank'. I'm not sure how to say that I want to keep
the record but clear the field for this merge. Any thoughts?
 
P

Peter Jamieson

You could use an expression in the SELECT to create another field, e.g. in
Jet SQL, something like

SELECT iif(instr(myfield,'blank',1) = 0, myfield, '') AS 'mynewfield', *
FROM ....

(My syntax probably isn't quite right there)

Peter Jamieson
 
P

Peter Jamieson

You could use an expression in the SELECT to create another field, e.g. in
Jet SQL, something like

SELECT iif(instr(myfield,'blank',1) = 0, myfield, '') AS 'mynewfield', *
FROM ....

(My syntax probably isn't quite right there)

Peter Jamieson
 
G

Graham Mayor

Can we clarify what is in this field? Does it contain just the word 'blank'
or does it contain 'blank' and some other text?
Are you merging just that field?


--
<>>< ><<> ><<> <>>< ><<> <>>< <>><<>
Graham Mayor - Word MVP


<>>< ><<> ><<> <>>< ><<> <>>< <>><<>
 
M

myrnapap

The field contains a statement "This field intentionally left blank". I
am merging many fields and this is just one of them. I don't want to
skip the record, I just want to print nothing if this is in the field.
Myrna
 
P

Peter Jamieson

Matching an exact text is straightforward - just use the whole text instead
of the single word example I gave before. If the text is the same apart from
capitalisation you can use the appropriate \* switches in your MERGEFIELD
field to make the text upper or lower case.

You can also use wildcards to a limited extent, e.g.

{ IF { MERGEFIELD myfield } = "*blank" "x" "y" } should give you "x" if
myfield contains your sample text. You can also do
{ IF { MERGEFIELD myfield } = "something*" "x" "y" } but you can't achieve a
"contains" using

{ IF { MERGEFIELD myfield } = "*something*" "x" "y" }

It doesn't work. Also, you may find that matching only works on relatively
short texts up to 128 characters. There's more about this in Word Help.

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