> Wie kan mij helpen?
> Mijn probleem is het volgende :
> In Excel heb ik een tabel, waarin de volgende kolommen staan :
> Bonnr.;Datum;Opdrachtnr;Afleveradres;AfleverPC
>
> In de kolom "Bonnr" komen alléén unieke waarden voor, maar in de
> andere kolommen (mogelijk) niet.
> Nu wil ik middels de optie "Afdruk samenvoegen" documenten
> genereren,
> waarbij meerdere bonnummers op één pagina komen, als zij voor
> hetzelfde afleveradres zijn, maar hierbij mogen het afleveradres en
> de postcode van het afleveradres dan maar één keer bovenaan de
> pagina
> wordt neergezet.
>
> Is dit mogelijk met de standaardfunctionaliteit van Word/Afdruk
> Samenvoegen? Zo ja, hoe?
Ik ben bang van niet. Je komt dan meer terecht in de functies van een
database met gerichte rapportages.
--
Vriendelijke groeten,
]-[oRus
www.westbrabantsevwg.nl
Wat jij wilt IS in Word mogelijk, maar het vereist heel wat "kunst- en
vliegwerk". Het beste is inderdaad, wat Horus aangeeft, dat je databron te
manipuleren is, zodat de gegevens gebundeld aan Word worden aangeboden.
Voor dat "kunst- en vliegwerk" heb je in je databron het gegeven nodig
hoeveel records (dus andere bonnummers) er zijn voor die klant / dat adres.
In mijn situatie regel ik dat in Access (waar de data staat) met een
kruistabel, wiens enige functie is om uit te zoeken hoeveel kinderen onder
elke achternaam (familienaam) zijn ingeschreven voor een kamp. Deze
kruistabel (query) geeft mij de familie naam (sleutel) en het aantal records
onder die naam. In jouw situatie zou het dus afleveradres en het aantal
bonnummers moeten geven. Als je dit niet kunt aanmaken, kun je het op je buik
schrijven. :-)
In Word maak je in de brief een reeks samenvoeg formules met de commando's
{SET}, {ALS...DAN...ANDERS} EN {NEXTIF}. Die reeks formulies moet genoeg
regels bevatten (zichzelf herhalen) om het maximaal aantal bestellingen op
een adres te kunnen afdrukken. Als er dus max. 10 bestellingen per adres
kunnen zijn in je database / databron, moet je de formule 10x herhalen.
Doordat Word weet hoeveel bestellingen er voor elk adres zijn, kun je met de
Als...dan functie alleen de volgende x-aantal records (met NEXT) laten
afdrukken.
Dus als je iets dergelijks wilt hebben:
Bonnr. 541/2006
Datum Opdr. nr. Geleverde Computer
17-5-'06 <TAB> JK-1124 <TAB> Pentium3/1,8/256MB/80 GB
22-9-06 <TAB> JK-1398 <TAB> Dell Laptop / Pentium 4/1,8MB/256/40
28-11-06 <TAB> JK-2401 <TAB> Pentium4/2,9/512MB/120 GB
Dan ziet dat er ongeveer zo uit:
{MERGEFIELD Bonnr.}{SET Herh = {Aantal records}}
Datum <TAB> Opdr. nr.<TAB> Geleverde Computer
{MERGEFIELD Datum}<TAB>{MERGEFIELD Opdrachtnr}<TAB>{MERGEFIELD
AfleverPC}{Set Herh={1}}{NEXTIF {Herh0} > "2"{IF Herh0 > "2" "<druk hier op
ENTER>{MERGEFIELD Datum}<TAB>{MERGEFIELD Opdrachtnr}<TAB>{MERGEFIELD
AfleverPC}{Set Herh={1}}{NEXTIF {Herh0} > "3"{IF Herh0 > "3" "<druk hier op
ENTER>
enz enz.
Ik zei al: "Kunst- en Vliegwerk".
Wat je nodig hebt, is eigenlijk een FOR...NEXT loop, zoals vroeger in Basic,
maar die kent Word Afdruk Samenvoegen (nog) niet.
Volledigheidshalve, die accolades maak je met CTRL F9!
Het SET commando, met de gerelateerde vergelijking van {Herh}, heb je nodig
omdat Word anders doorfiets en records zal overslaan.
Dit werkt echt alleen als je Word kunt vertellen hoeveel records er per
klant zijn. Als je die data niet hebt, zal dit niet werken. Dit komt
feitelijk doordat Word het commando {PREVIOUS} niet kent. Anders zou je door
kunnen schuiven totdat het afleveradres niet meer overeenkomt, het commando
{PREVIOUS} invoegen en dan een nieuwe brief aanmaken.
Het lijkt ingewikkeld; is het eigenlijk ook. Maar als je de formule eenmaal
zo hebt dat hij voor twee records per adres goed werkt, dan kun je kopieren
en plakken en hoef je alleen maar de vergelijking van het veld {Herh} voor
elke regel 2x met 1 te verhogen. Het is wellicht mogelijk om dat automatisch
te doen, ik geef er de voorkeur aan om dat handmatig te doen, want dat is de
enige manier die ik heb om te zien welk record er in welk deel van de formule
aan de orde is, want voor de rest is elk deel van de formule identiek.
Laat even weten of je er uit komt?
David
In dergelijke formules blijft alles hangen of anderzijds niet werken als je
een kleinigheid vergeet. In mijn voorbeeld ben ik een aanhalingsteken
vergeten. Tussen de twee accolades net voor het NEXTIF commando moet er een
aanhalingsteken sluiten staan. Zo dus: }"{NEXTIF
De kans is groot dat er nog wat andere foutjes in staan, maar misschien dat
je die zelf kunt debuggen? Wanneer je iets dergelijks aan het testen bent,
wil het soms behulpzaam zijn om in de formule tekst te plaatsen, Zoals bijv.
"Regel 1", "Regel2" enz. Daardoor zie je makkelijker wat Word aan het doen is.
David
Bedankt voor de zéér uitgebreide en korte antwoorden.
Met het antwoord van Horus was ik eigenlijk blijer. Nu moet ik iemand die
zéér veel tijd heeft genomen om mij een antwoord te geven zeggen dat ik dit
inderdaad te omslachtig vind. Het probleem is namelijk dat dit door een
"simpele eindgebruiker" (lees : "leek") gedaan moet kunnen worden en dat is
bij deze oplossing niet echt het geval. Bedankt voor jullie beider tijd en
moeite, maar ik ga dit aan de bronkant oplossen (daar ben ik in ieder geval
bekender met VBA-code), waardoor de bonnummers in één veld komen te staan en
dan is het een stuk makkelijker te verwerken.
Nogmaals hartelijk dank voor jullie expertise!
M vr gr
EdjeVis
Bedankt voor jullie (aan het antwoord te zien héél veel!) tijd en moeite,
maar dit gaat inderdaad te ver. Probleem is dat dit door een simpele
gebruiker (lees: "leek" gedaan moet kunnen worden en dat zie ik hiermee niet
gebeuren....
Nogmaals bedankt voor jullie tijd een expertise, maar ik ga het oplossen aan
de bronkant, waardoor de bonnummers in één veld komen te staan.
Mvrgr,
EdjeVis
Geen probleem. Overigens werkt het samenvoeg document, zo ingewikkeld als
het is om het te maken, daarna voor elke leek feiloos en volkomen op de
achtergrond. Maar als die "leek" het document moet maken, dan is dat i.d.d.
niet te doen.
David