Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
DiscussionsAccessExcelInfoPathOutlookPowerPointPublisherWord
DirectoryUser Groups
Related Topics
Outlook ExpressInternet ExplorerWindowsMS Server ProductsMore Topics ...

MS Office Forum / Word / Mailmerge and Fax / November 2004

Tip: Looking for answers? Try searching our database.

"AND" (compound conditions)

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Monika Krug - 08 Nov 2004 15:39 GMT
(version: Word 2003)

I hope someone can help me with this problem, it is
driving me crazy:

I have these fields in my document:
(The /* comments */ are added for clarity here.)

{ IF { MERGEFIELD "associations" } = "070"  { SET v070
true } { SET v070 false } } { NEXTIF v070 } /* as the
first record has associations=070, this results in v070
being set to true and Word going to the next data record */

v070: { v070 } /* shows v070 for debugging - true as
expected */

less: { IF { MERGEFIELD "Index_070" } < {
MERGEFIELD "Total_070" }  true false} /* this should be
true, because 1 is less than 3 */

{ SET more { = AND (v070; { IF { MERGEFIELD "Index_070" }
< { MERGEFIELD "Total_070" }  true false}) } } /* here is
the trouble */

more: { more } /* this should be 1, as true and true
results in true - but it is not working */

{ IF v070 "{ MERGEFIELD Index_070 }/{ MERGEFIELD
Total_070 }"} /* shows 1/3 as expected */

The relevant columns of the first four rows of data are:
associations;    Total_070;    Index_070;
070;    ;    ;
;    3;    1;
;    3;    2;
;    3;    3;
(I.e. for the first record associations=070 and the total
and index are empty, for the other records associations is
empty, total is always 3 and index is counted from 1 to 3.
The part I show above only uses the first two records.)

The shown result is:

v070: true
less: true
more: 0
1/3

Why is the result of the AND field 0, even though both
parts are true?! I don't get it. What is wrong? Am I using
AND incorrectly?

I have tested { = AND (true; 1) } and different
combinations of true, false, 0, and 1 in the brackets
after AND - the result was always as expected, e.g. = AND
(true; 1) yields 1.

Any ideas?

Different, not so important question: I think { = AND
(v070; { MERGEFIELD "Index_070" } < {
MERGEFIELD "Total_070" } ) } should be working, too,
instead of { = AND (v070; { IF { MERGEFIELD "Index_070" }
< { MERGEFIELD "Total_070" }  true false}) } . Any ideas
why it does not work at all? I get a "!Syntax Error, <".

I have another weird problem with the same mail merge
document:

1. When I open it and preview for the first time (with the
first data record, or actually with the first two as I use
nextif), the result is true, true, 0, 1/3 as shown above,
so as expected except for the weird 0.

2. When I highlight all and press F9, suddenly true,
false, 0, / are displayed. How is that possible?!

3. When I click to preview the next record and back to #1,
it now shows true, true, 0, 1/3 again. (At least I have
found this workaround finally, so I don't have to close
and reopen my document all the time.)

I first thought, maybe Word now (after the second step,
i.e. after pressing F9) is at the second data record and
evaluating that one - but in that case, v070 should be
false (which remains true) and the "less" statement should
still be true, as 2<3, and not without any reason become
false.

Help particularly with the first problem would be greatly
appreciated.

Regards,
Monika.
Monika Krug - 08 Nov 2004 16:23 GMT
It is becoming even weirder. I have changed the fields a
little and copied it five times:

{ IF { MERGEFIELD "associations" } = "070"  { SET v070
true } { SET v070 false } } { NEXTIF v070 }
v070: { v070 }
1. { SET less { IF { MERGEFIELD "Index_070" } < {
MERGEFIELD "Total_070" }  true false} }{ SET more { = AND
(v070; less) } } more: { more }
{ IF more "{ MERGEFIELD Index_070 }/{ MERGEFIELD
Total_070 }"}
{ NEXTIF more }
2. { SET less { IF { MERGEFIELD "Index_070" } < {
MERGEFIELD "Total_070" }  true false} }{ SET more { = AND
(v070; less) } } more: { more }
{ IF more "{ MERGEFIELD Index_070 }/{ MERGEFIELD
Total_070 }"}
{ NEXTIF more }
3. { SET less { IF { MERGEFIELD "Index_070" } < {
MERGEFIELD "Total_070" }  true false} }{ SET more { = AND
(v070; less) } } more: { more }
{ IF more "{ MERGEFIELD Index_070 }/{ MERGEFIELD
Total_070 }"}
{ NEXTIF more }
4. { SET less { IF { MERGEFIELD "Index_070" } < {
MERGEFIELD "Total_070" }  true false} }{ SET more { = AND
(v070; less) } } more: { more }
{ IF more "{ MERGEFIELD Index_070 }/{ MERGEFIELD
Total_070 }"}
{ NEXTIF more }
5. { SET less { IF { MERGEFIELD "Index_070" } < {
MERGEFIELD "Total_070" }  true false} }{ SET more { = AND
(v070; less) } } more: { more }
{ IF more "{ MERGEFIELD Index_070 }/{ MERGEFIELD
Total_070 }"}
{ NEXTIF more }

The result shown is:


v070: true
1.  more: 0
1/3

2.  more: 0
2/3

3.  more: 0
3/3

4.  more: 0
/

5.  more: 0
/

So, even though "more" evaluates to 0, it is treated as
true in the {if more ...} fields, otherwise nothing would
be printed ({ IF more "{ MERGEFIELD Index_070 }/{
MERGEFIELD Total_070 }"}).

On the other hand, it is always treated as true - the 4.
and 5. should not appear.

Does anyone understand this?

Monika.
Monika Krug - 08 Nov 2004 16:41 GMT
Oh oh ... I just tried something else:
{ if true "1" "2" }
{ if false "1" "2" }
both show 1.

TRUE, FALSE did not work, either (still showed 1, 1).
Neither did 1 for true, 0 for false (unknown opcode).

I guess I must be using booleans in Word's mail merge
entirely wrong :-( .

Are there no boolean literals?
Is it not possible to assign booleans to variables
(bookmarks)?

But { = AND (true, false) } worked, no matter the
capitalization and also with 1 and 0, same for OR. So
true, false must be the correct literals.

This does not make any sense to me.

Monika.
Peter Jamieson - 09 Nov 2004 01:32 GMT
Just looking at your first message...

The Word field language does not use the keywords or values "true" and
"false" to represent true and false. The main change you need to make is to
use 1 for true and 0 for false.

Although it is not always essential, I would do always use { REF v070 } or
{ v070 } when you want to use a bookmark value, not just v070 (no mateer
what examples you see).

It is also worth bearing in mind that Word does not necessarily perform
numeric comparisons when you use < and > operators. If you want to be sure
that Word is comparing numbers and not strings, it is better to use an { = }
field to subtract one value from the other and compare the result with 0.

Peter Jamieson

> (version: Word 2003)
>
[quoted text clipped - 90 lines]
> Regards,
> Monika.
Monika Krug - 09 Nov 2004 09:45 GMT
>The Word field language does not use the keywords or values "true" and
>"false" to represent true and false. The main change you need to make is to
>use 1 for true and 0 for false.
>
>Although it is not always essential, I would do always use { REF v070 } or
>{ v070 } when you want to use a bookmark value, not just v070

Thank you thank you thank you! You solved most of my mail
merge problems and saved me from certain insanity with
your post :-) .

Live long and prosper,
Monika.
macropod - 09 Nov 2004 09:33 GMT
Hi Monika,

For a 'tutorial' with examples of how you can do 'AND' comparisons and much
more, for both numbers and text, download the Word document at:
www.wopr.com/cgi-bin/w3t/showthreaded.pl?Number=365442
(url all one line)

Although not specifically written with MAILMERGE fields in mind, the logic,
syntax etc are the same.

Cheers

> (version: Word 2003)
>
[quoted text clipped - 90 lines]
> Regards,
> Monika.
Monika Krug - 09 Nov 2004 09:58 GMT
>For a 'tutorial' with examples of how you can do 'AND' comparisons and much
>more, for both numbers and text, download the Word document at:
[quoted text clipped - 3 lines]
>Although not specifically written with MAILMERGE fields in mind, the logic,
>syntax etc are the same.

Thank you! That's a very comprehensive tutorial and will
help me a lot with further mail merge problems.

A note: In your tutorial you write e.g. AND(x,y). I have
tried this and I get a syntax error. It only worked with ;
instead of ,. Maybe this was changed in a recent Word
version? The Word help also says to use a comma.

Greetings,
Monika.
macropod - 09 Nov 2004 10:11 GMT
Hi Monika,

At the end of the description of 'AND(x,y)', you'll see the number '1'. That
is a calculated field result using the syntax described. Select the '1' and
press Shift-F9 to reveal the field coding, which is exactly as shown in red.
In other words, it works. But, as described under 'Testing Or Returning Text
Strings With Logical Functions In Bookmarks', you need a different approach
if you're not working with numbers alone.

Cheers

> >For a 'tutorial' with examples of how you can do 'AND'
> comparisons and much
[quoted text clipped - 17 lines]
> Greetings,
> Monika.
Monika Krug - 09 Nov 2004 11:46 GMT
>At the end of the description of 'AND(x,y)', you'll see the number '1'. That
>is a calculated field result using the syntax described. Select the '1' and
>press Shift-F9 to reveal the field coding, which is exactly as shown in red.
>In other words, it works.

It works - until I press F9 for updating the field, then I
get a syntax error.

I have just tested it with different Word versions: On
Word 2003 AND(x;y) works, AND(x,y) does not, on Word 2002
it's the other way around.

Monika.
Peter Jamieson - 09 Nov 2004 13:39 GMT
> A note: In your tutorial you write e.g. AND(x,y). I have
> tried this and I get a syntax error. It only worked with ;
> instead of ,. Maybe this was changed in a recent Word
> version?

This is almost certainly because of differences in regional settings.
English USA, UK and probably elsewhere use comma as a list separator whereas
e.g. German (Germany) uses semi-colon.  It looks as if the "field language"
expects that list character to separate parameter lists within fields,
whereas (for example") a language such as C would use a comma regardless of
region/locale.

Peter Jamieson

>>For a 'tutorial' with examples of how you can do 'AND'
> comparisons and much
[quoted text clipped - 17 lines]
> Greetings,
> Monika.
Monika Krug - 09 Nov 2004 14:06 GMT
>> A note: In your tutorial you write e.g. AND(x,y). I have
>> tried this and I get a syntax error. It only worked with ;
[quoted text clipped - 3 lines]
> English USA, UK and probably elsewhere use comma as a list separator whereas
> e.g. German (Germany) uses semi-colon.

Thank you, this must be the explanation. The regional
settings of my PC are set to German. (The PC with Word
2002 where ; worked must have been set to English.)

Monika.
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.