Bookmarks

  • Onderwerp starter Onderwerp starter Dores
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Dores

Gebruiker
Lid geworden
15 sep 2010
Berichten
35
Hallo, zou iemand mij met het volgende kunnen helpen.

Ik heb de volgende script gemaakt voor het invoeren van een word template, met gegevens vanuit een access bestand.

Code:
wd.Selection.GoTo what:=wdGoToBookmark, Name:="Business_Name"
 wd.Selection.TypeText [Business_Name]
 wd.Selection.GoTo what:=wdGoToBookmark, Name:="Contract_Number"
 wd.Selection.TypeText [Contract_Number]
 wd.Selection.GoTo what:=wdGoToBookmark, Name:="Electricity_CUPS"
 wd.Selection.TypeText [Electricity_CUPS]

 wd.Selection.GoTo what:=wdGoToBookmark, Name:="Name"
 wd.Selection.TypeText [Name]

 wd.Selection.GoTo what:=wdGoToBookmark, Name:="Sites_Address"
 wd.Selection.TypeText [Sites_Address]
 wd.Selection.GoTo what:=wdGoToBookmark, Name:="Sites_Postal_Code"
 wd.Selection.TypeText [Sites_Postal_Code]
 wd.Selection.GoTo what:=wdGoToBookmark, Name:="Sites_City"
 wd.Selection.TypeText [Sites_City]
Alles werkt goed, behalve wd.Selection.TypeText [Name] die haalt namelijk de naam van mijn access-report naar word in plaats van de gegevens.

Bedankt,
 
Laatst bewerkt door een moderator:
Wellicht komt dat omdat Name een zogenaamd "reserved word" is in Access.
Gebruik een andere naam voor je objecten die je Name hebt genoemd in Access.

Tardis
 
Je geeft niet aan waar je tekst vandaan moet komen. Als je een tekstveld [Name] hebt dan conflicteert dat met de formuliereigenschap Name. Wat je hier van kan leren, is dat je objecten unieke namen moet geven, anders weet Access het ook niet meer. Zelf maak ik er een gewoonte van om elk tekstveld de prefix txt te geven. Als mijn veld [Achternaam] heet, geeft Access het formulierveld dezelfde naam; daar maak ik dus [txtAchternaam] van. Op die manier houd je tabelvelden en formuliervelden altijd uit elkaar, en bovendien kom je nooit meer in conflict met eigennamen van Access objecten.
 
De tip van OctaFish om objecten unieke namen te geven is in ieder geval een goede tip.
Echter, dat is niet wat je uit jouw probleem kan leren want staat daar compleet los van.

Wat je er wel van kan leren is om het gebruik van gereserveerde woorden te vermijden voor objectnamen.
Hier kun je een overzicht vinden van gereserveerde woorden in Access 2007/2010

http://office.microsoft.com/nl-nl/a...oorden-en-symbolen-in-access-HA010341461.aspx

Tardis
 
Goedemorgen... Bedankt voor jullie reactie, ik had wel een vermoeden dat het zo iets zou zijn. En ik zal zeker de tips onthouden.

Ik heb deze database niet gemaakt, wil er alleen een onderdeel aan toevoegen, maar aangezien het om een grote en complexe database gaat is het niet mogelijk om het veld naam "name" te veranderen, van wegen alle relatie en VBA.

Maar bestaat er niet een mogelijkheid om aan tegeven dat de gevenes uit het tabel gehaald moeten worden... door middel van bv:

Code:
wd.Selection.GoTo what:=wdGoToBookmark, Name:="tblName"
wd.Selection.TypeText [tblName]

of field name.....

Bedankt,
 
Laatst bewerkt door een moderator:
Als je in een bestaande db moet werken, kan het inderdaad lastig zijn om iets aan te moeten passen. Veldnamen in tabellen aanpassen kan dan onverwachte consequenties hebben, dus dat zou ik in jouw geval ook niet doen. Een formulierobject daarentegen wordt meestal alleen op dat formulier aangesproken, al is dat niet altijd zo. Omdat Access de formuliervelden meestal dezelfde naam geeft als de onderliggende veldnaam (sleep maar eens in een nieuw formulier een veld uit de lijst met velden naar de detailsectie in controleer bij de Eigenschappen dan de naam van het Besturingselementbron en de Naam van het object) kun je daar vaak wel de naam van veranderen. Dat doe je op het tabblad <Overige> van de eigenschappen van het tekstvak. Je kunt het in ieder geval proberen, en daarna kijken in het VBA venster of je er last van hebt of niet. Als je daar de opdracht <Compileren> uit het menu <Foutopsporing> uitvoert, komt Access vanzelf de plaatsen waar code niet meer werkt vanwege de verandering tegen, en kun je dat gelijk oplossen. Dus dat kan je zeker proberen.

Je kunt inderdaad ook proberen door volledig naar de naam van het formulierobject te verwijzen kijken of je probleem daarmee is verholpen. In bijgaand document vind je hoe je de syntax daarvan kunt toepassen.
 

Bijlagen

Hallo OctaFish,

Ik heb een andere tabel gebruikt voor mijn query met de naam "Provider_Name" deze heeft dezelfde gegevens als de vorige tabel 'Name" werkt dus goed maar naar het transporteren van acces naar Word noteert hij nu de Provider ID in plaats van Provider Name. Is hier wel iets aan te doen, door middel van een bv. copy real values of zo iets.

Ik hoop dat je begrijpt wat ik bedoel.
Bedankt
 
Vermoedelijk is de Provider_Name een keuzelijst in de tabel? Persoonlijk ben ik een gruwelijk stevige tegenstander van het gebruik van keuzelijsten in tabellen (lees mijn Access cursus er op na!) omdat je je daarmee dit soort problemen op de hals haalt. Gelukkig is daar nog wel wat aan te doen: voeg in de query de tabel met de juiste gegevens toe (je geeft niet aan hoe die tabel heet) en gebruik het naamveld uit die tabel i.p.v. het veld dat je nu gebruikt.
 
Hallo OctaFish, oei dat is niet helemaal duidelijk, begrijp niet helemaal wat je probeert uit te leggen.

Om het misschien iets duidelijker te maken voor ons beide heb ik een screenshot toegevoegd van de query.

Tabel Providers heeft de juiste data maar kan veld "Name" dus niet gebruiken.

Tabel ElectricityContracts heeft onder "Provider Name" dezelfde data maar stuurt een ID nummer naar word.

Nogmaals bedankt.
 

Bijlagen

Tabel ElectricityContracts heeft onder "Provider Name" niet dezelfde data, want die slaat gewoon het Provider ID op, en dat is wat je ziet in je resultaat. De reden dat je in de tabel de naam van de provider ziet, en niet de ID komt doordat je in je tabel een keuzelijst hebt gemaakt (zie mijn gruwel van hierboven :) ). Vandaar mijn voorstel om uit de gekoppelde tabel het veld over te nemen. Jammer genoeg is dat veld dus ongeschikt, vanwege de naam. Oplossing: geef het veld een Alias, door er Provider name: voor te zetten. De totale veldnaam luidt dan:
Code:
Provider Name:Name
En die gebruik je dan uiteraard voor het veld Name uit de tabel Providers.
 
Geweldig...... ik weet niet wat ik precies verkeerd deed, maar bij de eerste keer ging die goed maar daarna kreeg ik weer fout meldingen.

Maar uiteindelijk heb ik hem en loopt i perfect.

Hartelijk bedankt voor je tijd en uitleg.

Groet,

Dores
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan