Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Werte selektierter Datensätze auslesen

Begonnen von Kinimod, Oktober 18, 2019, 10:15:14

⏪ vorheriges - nächstes ⏩

Kinimod

Moin,

ich möchte in einem Endlosformular einen, oder mehrer, Datensätze auswählen und dann ein vba- Makro starten, welches Werte aus diesem Datensatz in ein Word Dokument überträgt.

Wie kann ich auf die Werte der selektierten Datensätze zugreifen? Bei Excel geht das ganz einfach über Selection- Eigenschaft, gibt es etwas entsprechendes auch bei Access?

freundliche Grüße
Kinimod

Rivside

Hallo!

Zufälligerweise wollte ich genau gleiches Thema berühren. Ich schließe mich an. Habe in einem Formular ein Listenfeld eingefügt und möchte gerne ausgewählte Werte in Word übertragen.

Dazu noch, ich möchte das die selektierte Werte nach einem Abschluss abgehackt werden (Häkchenbox).

Ich wäre richtig dankbar wenn uns jemanden zu mindestens auf den richtigen Weg setzt.

Danke im Voraus.

Rivside

@Kinimod

Was ich soweit geschafft habe ist:


Set objWord = CreateObject("Word.Application")
With objWord
objWord.Visible = True
objWord.Documents.Open ("Pfad zu deiner Vorlage z.B.: C:\vorlage.doc")
.ActiveDocument.Bookmarks("DeineTextmarke im Word").Select
.Selection.Range.Text = CStr([hier dein Steuerelement])
End With
Set objWord = Nothing


Im Word muss du Textmarker erzeugen.

DF6GL

Hallo,,
Zitatich möchte in einem Endlosformular einen, oder mehrer, Datensätze auswählen


Es können nur zusammenhängende Datensätze in einem Endlosform ausgewählt (markiert) werden.

Besser ist, ein Ja/Nein-Feld im Datensatz mitzuführen, das bei einem zu wählenden DS angehakt wird.


Im Recordset(Clone) des Forms können die abgehakten DS ermittelt und an Word übergeben werden.


ZitatHabe in einem Formular ein Listenfeld eingefügt
Das Gleiche gilt beim Listenfeld, das zunächst  auf Mehrfachauswahl stehen muss.  Allerdings werden hier die markierten Einträge mit der Listenfeld-Aufzählung "Itemsselected" in einer Schleife ermittelt und an Word übergeben.

In beiden Fällen wäre eine separate Schaltfläche zum Auslösen der Übertragung an Word anzuraten und in deren Klick-Ereignis die Änderungen im Form zu speichern  (Me.Dirty = False)

btw:

ZitatobjWord.Documents.Open ("Pfad zu deiner Vorlage z.B.: C:\vorlage.doc")


"Open" öffnet ein Dokument (.docx) als solches, was sowohl ein "normales" Word-Doc als auch eine Wordvorlage (.dotx) sein kann,
"Add"  generiert ein neues Dokument auf Grundlage der angegebenen Word-Vorlage (.dotx)

ebs17

Den Datenübertrag in ein Worddokument kann man auf mehreren Wegen realisieren:
- Verwendung von Textmarken im Worddokument. Da muss man immer einzeln Werte zuweisen, dabei dann bei mehreren Datensätzen einen Plan ob der Verteilung haben.
- Serienbriefunktionalität: Man nimmt also eine Serienbriefvorlage, stellt eine Datenbasis zusammen und weist sie dieser Vorlage zu.

Um einen passenden Weg zu wählen, sollten einem die Anforderungen schon etwas umfangreicher und detaillierter bewusst sein.
Zitateinen, oder mehrer, Datensätze auswählen
Beginnen sollten ja die Überlegungen damit, wie das Auswählen genau erfolgt. Vom Angucken alleine wird noch nicht viel passieren können.
Filtern? Individuelle Auswahl?

Eine Datenbereitstellung und somit das Auswählen sind dann wieder abhängig davon, was da in Word passieren soll.

Mit freundlichem Glück Auf!

Eberhard

Kinimod

Danke für eure Antworten.

@DF6GL
Das mit dem Ja/ Nein- Feld ist eine gute Idee. Wie kann ich mit vba danach filtern?

Die Übertragung der Daten zu Word steht bei mir schon weitestgehend, mir fehlen quasi nur noch die Daten, an die ich bis jetzt nicht ran komme.

DF6GL

Hallo,

ZitatWie kann ich mit vba danach filtern?

LuftCode:
Sub btn2Word_Click()

Dim rs as Dao.Recordset, _
objWord as Object

Set objWord = CreateObject("Word.Application")
With objWord
objWord.Visible = True

Me.Dirty=false

Set rs = Me.RecordsetClone
rs.MoveFirst
    Do Until rs.EOF
      If rs![MeinMarkierungsfeld] Then

          objWord.Documents.Add ("Pfad/Dateiname zu deiner Vorlage z.B.: C:\vorlage.dotx")
          .ActiveDocument.Bookmarks("DeineTextmarke im Word").Select
          .Selection.Range.Text = CStr(Me![hier dein Steuerelementname])
          ' für alle Textmarken anwenden

          ' hier weitere Aktionen zu Word
          '.Close  , .SaveAs oder ähnliches
      End If


  rs.Movenext
  Loop



objWord.Quit
Set objWord = Nothing
End With
rs.Close
Set rs = Nothing
End Sub

Kinimod

Hallo,
ich habe versucht das mit dem extra Auswahlfeld umzusetzen, bin jedoch schnell auf ein Hindernis gestoßen.
Die Daten in dem Formular können nicht geändert werden, es kommt immer der Hinweis "Diese Datensatzgruppe kann nicht aktualisiert werden." Die Abfrage auf der das Formular basiert enthält zum Teil berechnete Felder die Faktoren aus 2 Tabellen enthalten, dass diese nicht aktualisiert werden können verstehe ich, aber warum kann kein Feld aktualisiert werden?

DF6GL

#8
Hallo,

weil nicht nur die Feldern einzeln betrachtet werden, sondern der Datensatz insgesamt....

ZitatDie Daten in dem Formular können nicht geändert werden

War das irgendwo eine Vorgabe, dass die Formulardaten aktualisiert werden müssen?

Wenn das so sein muss, dann wirf die Berechnungen aus der Abfrage heraus und führe sie im Formular durch (mit z. B. den Domänenaggregat-Funktionen, wenn andere Tabellenwerte ausgelsen werden müssen.)

Kinimod

für mein Vorhaben war es zunächst keine Vorgabe, aber du hattest Vorgeschlagen ein zusätzliches Feld zum anwählen einzufügen. Das anwählen geht bei mir dann aber wie das ändern der anderen Daten auch nicht.

Die Domänenaggregat- Funktionen werde ich mir mal anschauen.

Vielen Dank auf jeden Fall für deine Mühen, ich bin bei Access absoluter Beginner und versuche oft mein Vorgehen aus Excel zu übernehmen was natürlich oft nicht klappt.

DF6GL

#10
Hallo,

grundsätzlich sind berechnende Abfragen (Abfragen mit Berechnungsfeldern)  nicht aktualisierbar. Es müssen dann eben andere Methoden für die Berechnung ergriffen werden.

Kinimod

Mit welchen Methoden wäre das denn machbar?
Ich habe versucht im Formular über das Eigenschaftenblatt im Steuerelementinhalt auf die Werte einer anderen Tabelle/ Abfrage zuzugreifen. Das hat aber nicht geklappt, kann auch nicht, da keine Verknüpfung da ist, oder?

Mir würde es schon helfen, wenn ich in meinem Formular mit den berechneten Feldern eine Kontrollkästchen, oder ein Optionsfeld hätte, welches ich an und abwählen kann.

Das Problem das ich habe ist, dass der User in einem Endlosformular mit berechneten Feldern mehrere Datensätze frei auswählen können muss. Die Daten der ausgewählten Datensätze muss ich dann über VBA weiterverarbeiten. In Access fällt mir das gerade sehr schwer, da ich es von Excel gewohnt bin eine markierte Zelle über selection anzusprechen und den Wert auszulesen.

DF6GL

Hallo,


was sind das denn für Berechnungen?

Kannst Du mal die DB datenreduziert, komprimiert/repariert und gezippt hier hochladen?


Mit funktionierenden Beispieldaten und einer authentischen Beschreibung, was wo zu tun ist?


Kinimod

Hier mal eine vereinfachte Version, die Felder die nicht gebraucht werden habe ich fast alle entfernt.
Es geht um Bestellungen die bei uns eingegangen sind, diese sind in in der Tabelle "Order Liste DB".
In der Tabelle "Abrechnungsmeldungen DB" halten wir fest was wir von welcher Bestellung/ Order schon abgerechnet haben.
Das Formular "Order Liste" dient zum händischen eintragen neuer Bestellungen.
Das Formular "Abrechnungsmeldung" für neue Abrechnungen.
Das Formular "Order Liste EUR" ist das Formular um welches es hauptsächlich geht, hier sind die berechneten/ aufbereiteten Daten enthalten, etwa der Status der Order (abgerechnete Items/ gesamt Items).
In diesem Formular soll der Nutzer später Datensätze individuell auswählen können, dann ein Makro starten das die Daten in eine Wordvorlage einfügt. Das Anwählen der Datensätze und auslesen der entsprechenden Daten bereitet mir Probleme.

DF6GL

Hallo,

DB anbei.

Nur bezgl. des Problems mit der Markierung und der Übergabe an Word modifiziert ("Order Liste Eur", Datenherkunft auf Tabelle, Berechnete Werte mit Dlookup aus berechnende Abfrage ausgelesen, nur Word als Instanz geöffnet wegen Unkenntnis der Templates), um das Prinzip zu demonstrieren. In der Datenblattansicht sind keine Buttons verwendbar. Formular als Endlosform ausführen und passend layouten.

BTW:  Datentypen passend verwenden (Zahlen kein TEXT, sondern LONG). Keine Leer und Sonderzeichen verwenden. Reservierte Wörter vermeiden.