PDA

Vollständige Version anzeigen : Daten nach Word übergeben


bernd1
02.01.2002, 23:17
Ich möchte über VBA einzelne Datenfelder von einem Unterformular aus nach WORD übergeben. Es klappt auch recht gut.
Mein Problem besteht nun darin, dass ich die Orte über ein Listen/Kombinationsfeld mit Nummern in der Tabelle abgespeichert habe.
Wie kann ich mit VBA über die Nummern (Zahlen) wieder auf die Orte (String) kommen und im Word ausgeben. Ich habe einige Sachen probiert, komme aber nicht weiter.
Ich hoffe ich habe mein Problem halbwegs verständich ausdrücken können und hoffe du kannst mir helfen.
Übrigens, die normalen Felder aktiviere ich über PARENT!... und alles klappt.

A.S.
03.01.2002, 00:09
Hallo Bernd,

ich gehe einmal anhand Deiner Beschreibung davon aus, das Du die Orte in einer extra Tabelle gespeichert hast und nur die ID in Deine Tabelle einträgst, welche mit dem Formular verknüpft ist.

In diesem Fall reicht es IMHO wenn Du in der Funktion, welche die Daten nach WinWord überträgt
über die DLookUp-Funktion (AccessHilfe-Stichwort Domänenaggregatsfunktionen) den Wert (String) anhand des Formularfeldes ermittelst und diesen an WinWord übergibst.

Dim strOrt As String
strOrt = DLookUp("[Ort_Name]", "tblOrte", "[Ort_Id] = " & Me.Parent.kmbOrt)
'.... Weitere Verarbeitung der WinWord-Übergabe

Gruß

Arno

bernd1
03.01.2002, 13:59
Vielen Dank Arno
Dein Tip hat mich super weitergebracht.
Der genannte Befehl ist stark.
Ich habe alle meine Probleme lösen können.
Noch mal danke bis zum nächsten Mal.
Bernd

<WernerF>
03.01.2002, 17:30
Hallo Arno,
habe Deine Antwort mit Interesse gelesen.
Auch ich möchte aus einem Kombifeld einen Wert auslesen und in einem anderen Formular anzeigen. Das Kombifeld bezieht die Daten aus einer Tabelle.
Da ich noch wenig Erfahrung mit Access habe bitte ich um eine etwas ausführlichere Antwort.
Vielen Dank
Werner

A.S.
03.01.2002, 17:50
Hallo Werner,

das kommt darauf an, aus welcher Richtung Du auf das Kombinationsfeld zugreifen willst. Willst Du die Date des Kombinationsfeldes nach der Eingabe in das andere Formular übertragen oder möchtest Du aus dem anzeigenden Formular die Date des Kombinationsfeldes Nutzen?

Gruß

Arno

<WernerF>
03.01.2002, 18:25
Hallo Arno,

Dank für die schnelle Reaktion.
Eigentlich geht es mir um das Prinzip wie die Sache funktioniert.
Ich habe ein Formular1 mit Kombifeld und ein weiteres Formular2 mit einem Textfeld.
Bei Aktivierung eines DS im Formular1 soll das
Kombifeld ausgelesen werden und im Textfeld des Formular2 sichtbar sein.
Bisher ist es mir nur gelungen, daß im Formular2 der betreffende ID sichtbar war.
Gern möchte ich aber den hinterlegten Wert sehen.
Gruß Werner

A.S.
04.01.2002, 03:27
Hallo Werner,

um dies bei der Aktivierung bzw. bei der Anzeige eines Datensatzes automatisch zu tun, mußt Du das Ereignis "Beim Anzeigen" des Formulars1 benutzen, welches bei jedem DS-Wechsel des Formulars ausgelöst wird.

In diesem wird entweder ein Makro oder VBA-Coding (Ereignis-Prozedur) genutzt um den Wert entweder via, wie oben gezeigt, DLookUp oder direkt aus dem Kombinationsfeld in das zweite Formular zu übertragen.

Letzteres ist eine elegantere Alternative zu oben genannter vorgehensweise, weil es keinen weiteren DB-Zugriff auslöst und dadurch schneller ist. Hab ich gestern nur nicht dran gedacht.... irgendwie ;)

Im Makro benutzt Du dafür die Aktion SetzenWert und gibst dort entweder

[Forms]![Formular2]![txtOrt] = DomWert("[Ort_Name]", "tblOrte", "[Ort_Id] = " & [Forms]![Formular1]![kmbOrt])

ein um den Wert aus der Tabelle zu ermitteln. Die oben Erwähnte zweite Möglichkeit, sähe so aus:

[Forms]![Formular2]![txtOrt] = [Forms]![Formular1]![kmbOrt].Column(1)

Dies ließt unmittelbar aus dem Kombinationsfeld den Wert der 2ten (!!!) Spalte aus und überträgt den Wert in das Formular2.

Den Wert der 2ten Spalte deshalb weil der Spalten-Index (Column-Index) von Kombinations und Listenfeldern immer bei 0 beginnt. ".Column(1)" ließt daher den Wert der zweiten Spalte aus. Ich bin hier natürlich davon ausgegangen, das in dem Kombinationsfeld nur 2 Spalten sind. Spalte 0 der Index, Spalte 1 die Ortsbezeichnung.

Um das ganze über VBA zu machen, muß das entsprechende Ereignis des Formulars auf "[Ereignisprozedur]" eingestellt werden und über den 3-Punkte-Button am Ende des Feldes in die Codeansicht gewechselt werden.

Hier gibst Du dann für die DomWert- bzw. DLookUp-Variante

Forms!Formular2!txtOrt = DomWert("[Ort_Name]", "tblOrte", "[Ort_Id] = " & Me.kmbOrt)

ein um den Wert über die Tabelle zu ermitteln. Für die Kombinationsfeldvariante gibst Du hier in die Ereignisprozedur

Forms!Formular2!txtOrt = Me.kmbOrt.Column(1)

ein.

Wie Du siehst, habe ich im Makro überall das [Forms]!... vor die Steuerelementbezeichner gesetzt. Innerhalb der Ereignisprozedur eines Formular brauchst Du dies nicht zu tun, hier gibt es das Objekt "Me", welches eine Referenz auf das aktive Formular darstellt. Um auf Steuerelemente ausserhalb des aktiven Formulars zuzugreifen, mußt Du die Forms-Angabe, wie zu sehen, allerdings weiterhin benutzen.

So, ich hoffe das reicht Dir ;) Wenn Du weitere Fragen hast, melde Dich doch noch einmal.

Gruß

Arno

bernd1
04.01.2002, 21:28
Hallo Arno
so weit so gut
Ich möchte jetzt von einem Unterformular des Unterformulars auf das Hauptformular zugreifen.
Immer mit Datenübergabe nach WinWord.
Gibt es ein einfaches Parent^2 oder so ähnlich.
Wenn du mir einen Tip geben könntest, würde ich mir viel herumprobieren ersparen können.
Bernd

Sascha Trowitzsch
04.01.2002, 23:58
Indeed: Hauptformular = Me.Parent.Parent

<img src="graemlins/kasperl.gif" border="0" alt="[Kaslperl]" />

<WernerF>
05.01.2002, 09:31
Hallo Arno,
habe Deine Post erhalten und einiges nachgespielt.
So langsam begreife ich das Prinzip.
Dank für die Hilfe, möglicherweise melde ich mich
nochmals.
Gruß Werner

<WernerF>
06.01.2002, 11:13
Hallo Arno,
das übernehmen der Daten mit VBA funkt.
Bei Übernahme mit einem Makro habe ich Probleme.
Frage: In Deiner Anweisung steht:
-"[Ort_Name]" wie ist das zu verstehen?
Gruß Werner

A.S.
06.01.2002, 11:27
Hallo Werner,

<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">Zitat:</font><hr><pre><font face="Courier">[Forms]![Formular2]![txtOrt] = DomWert("[Ort_Name]", "tblOrte", "[Ort_Id] = " & [Forms]![Formular1]![kmbOrt])</font></pre><hr></blockquote>

Die Angabe "[Ort_Name]" habe ich eigentlich nur in den DomWert-Funktionen gebraucht. Schau Dir einmal die Parametrierung der DomWert-Funktion in der Access-Hilfe an ;)

Um ein Ergebnis zu liefern benötigt die DomWert-Funktion die Angabe aus welchem Feld bzw. welchen Feldern - es kann auch eine Zusammenstellung mehrerer Felder der Tabelle angegeben werden - die Daten abzufragen sind.

Der erste Parameter, in dem Fall "[Ort_Name]", gibt an, welches Feld abzufragen ist. Parameter 2 "tblOrte" gibt die abzufragende Tabelle und Parameter 3 gibt die Bedingung an, welcher Wert der Tabelle - sprich Welcher Ort - abzufragen ist.

Gruß

Arno

<WernerF>
08.01.2002, 17:48
Hallo Arno,
nach einigem tappen im dunklen ist mir langsam ein licht aufgegangen.
Nun ist mein formular gefüllt und ich möchte die daten des formular in eine word datei exportieren.
Was muß ich schreiben, damit es gelingt.
Gruß Werner

A.S.
08.01.2002, 19:36
Hallo Werner,

nun, für den Fall ist Bernd1 Dein Ansprechpartner. Er macht's ja gerade, also dürfte er auch aus erster Hand erzählen können, wie's läuft ;) Da ich solche Sachen eher selten mache, halte ich mich da ein wenig bedeckt. OK?

Gruß

Arno

PS Hoffentlich ließt Bernd hier mit. Seine EMail-Adresse hat er ja leider nicht veröffentlicht ;)

A.S.
08.01.2002, 19:48
PS Vielleicht enthält der in diesem Beitrag <a href="http://www.ms-office-forum.net/forum/showthread.php?s=&threadid=64826" target="_blank">Word Automation</a> enthaltene Link nützliche Informationen für Dich.

bernd1
08.01.2002, 20:26
Hallo an alle
Natürlich lese und lerne ich mit,
ich habe jetzt mein Profil geändert und hoffe das die eMail Adresse sichtbar wird, kann aber leider Werner auch nicht viel weiterhelfen, da ich noch in den Anfängen stecke.
Sascha, könntest du mir das näher erklären?
An Arno DLookUp funktioniert bei mir besser als Doomwert.
Grüsse
Bernd

A.S.
08.01.2002, 21:08
Hallo,

vielleicht bringen auch <a href="http://www.microsoft.com/officedev/articles/Opg/toc/pgtoc.htm" target="_blank">diese Seiten von Microsoft</a> ein wenig zusätzliches Licht ins Dunkel.

Ist aber alles auf Englisch!

Gruß

Arno

PS Hab's nur gerade eben gefunden. Da mir solche Beschreibungen schon das ein oder andere mal geholfen haben, dachte ich, das es Euch vielleicht auch was nutzen könnte ;)

A.S.
08.01.2002, 21:23
So... zusätzlich und als meine letzte Aktion für Heute, habe ich für Euch gerade noch <a href="http://www.helenfeddema.com/access.htm" target="_blank">diese Seite</a> aus den untiefen des WWW ausgegraben ;)

Als Tip Nr. 55 findet Ihr zum Beispiel eine Beschreibung mit dem Titel "Moving Large Quantities of Data from Access to Word" komplett mit Beispieldatenbanken für Access97 und Access2000.

Ich denke das könnte recht Informativ auch für mich sein :)

Gruß und gut's nächtle....

Arno

bernd1
08.01.2002, 21:54
Dank dir Arno
Tip 55 ist gut und wird von mir unter die Lupe genommen
Gruß
Bernd