Hallo,
ich habe ein Textdokument in OpenOffice, in Welchem einige Seriendruckfelder eingefügt sind. Indem ich die Ansicht der Datenquellen (Ansicht-Datenquellen) anzeige und dort die entsprechende Datenbanktabelle auswähle kann ich nun in dieser Tabelle, per Maus, eine Zeile (einen Datensatz) markieren und in der Symbolleiste des Datenquellenfensters auf "Daten in Felder" klicken. In den Feldern werden nun die relevanten Inhalte des aktuellen Datensatzes angezeigt.
Wie jedoch stelle ich (per StarBasic) fest welcher Datensatz (Index-Zählung oder eindeutige Schlüsselnummer) gerade in den Seriendruckfeldern angezeigt wird?
Hinweise:
(a)
ich weiß das es möglich ist im Datenquellenfenster zu ermitteln welche Zeile markiert ist, das löst jedoch nicht das Problem da die dortige Markierung nicht identisch mit dem aktuellen Datensatz sein muß, da dieser erst dann übernommen wird, wenn man "Daten in Felder" klickt.
(b)
Mir ist bekannt das ich die aktuellen Inhalte der Seriendruckfelder auslesen kann und mit den Inhalten der Datenbank vergleichen. Das hilft jedoch nicht in allen Situationen den aktuellen Datensatz zu bestimmen, denn die DB kann Datensätze enthalten die sich nicht ausreichend unterscheiden.
Wenn ich beispielsweise die 2 Datensätze habe:
Datenfeld: Inhalt 1. Datensatz/ Inhalt 2 Datensatz
Name: Meier / Meier
Ort: Köln / Köln
Strasse: Marienburger Strasse/ Samariterstrasse
und im Dokument selber nur die Seriendruckfelder für Name und Ort sind diese 2 Datensätze nicht durch Vergleich des aktuellen Dokumentinhalts und der Datenbankinhalte unterscheidbar.
Gruß
Stephan
Aktuellen Datensatz in Seriendruckdokument per Basic
Moderator: Moderatoren
Re: Aktuellen Datensatz in Seriendruckdokument per Basic
Hallo Stephan,
wenn es Dir darum geht die exakte Lösung auf deine Frage zu bekommen, kann ich nicht helfen.
Wenn es dir darum geht, den Datensatz eindeutig zu finden, ginge es so:
Du fügst ein Feldbefehl-Datenbankfeld mit dem Inhalt der ID aus der Datenbank ein und blendest es über Format/Zeichen/Schrifteffekt/ausgeblendet einfach aus. Dann kannst Du es mit Deiner Methode (b) auslesen und mit der ID den Datensatz eindeutig bestimmen.
Gruß Rik
wenn es Dir darum geht die exakte Lösung auf deine Frage zu bekommen, kann ich nicht helfen.
Wenn es dir darum geht, den Datensatz eindeutig zu finden, ginge es so:
Du fügst ein Feldbefehl-Datenbankfeld mit dem Inhalt der ID aus der Datenbank ein und blendest es über Format/Zeichen/Schrifteffekt/ausgeblendet einfach aus. Dann kannst Du es mit Deiner Methode (b) auslesen und mit der ID den Datensatz eindeutig bestimmen.
Gruß Rik
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Aktuellen Datensatz in Seriendruckdokument per Basic
Hallo Rik,
Danke, hilft aber nicht.
Dein Vorschlag wäre dann eine Lösung wenn ich nachträglich das versteckte ID-Feld per Code einfügen könnte und dieses würde automatisch erkennen welcher Datensatz der gerade aktuelle ist und seine Anzeige entsprechend aktualisieren. Das tut es jedoch (nur nach meiner Untersuchung?) nicht, sondern es wäre/ist nötig erst ds ID-Feld einzufügen und dann einmalig einen Datensatz mit "Daten in Felder", das hilft mir aber nicht weiter da dadurch der Datensatz dessen ID oder Index ich finden will ja gerade 'überschrieben' wird.
Was mir nur nicht möglich ist, ist zu gewährleisten das das versteckte ID-Feld bereits im Dokument ist bevor (erstmalig) ein konkreter Datensatz mit "Daten in Felder" angezeigt wird.
Ich bin mir bewußt das meine Anforderungen ziemlich regide sind, denn wenn Du Dir einmal anschaust was ich unter (b) schrieb und Dir das anhand eines 'normalen' Serienbriefes, der üblicherweise immer mindestens Name, Strasse, PLZ, Ort enthält, kommt ein Problemfall nahezu kaum vor, für völlig beliebige Seriendruckdokumente (die keine Briefe sein müssen) trifft das aber so nicht zu und mit dem beschrieben Problemfall ist zu rechnen.
Gruß
Stephan
Danke, hilft aber nicht.
Dein Vorschlag wäre dann eine Lösung wenn ich nachträglich das versteckte ID-Feld per Code einfügen könnte und dieses würde automatisch erkennen welcher Datensatz der gerade aktuelle ist und seine Anzeige entsprechend aktualisieren. Das tut es jedoch (nur nach meiner Untersuchung?) nicht, sondern es wäre/ist nötig erst ds ID-Feld einzufügen und dann einmalig einen Datensatz mit "Daten in Felder", das hilft mir aber nicht weiter da dadurch der Datensatz dessen ID oder Index ich finden will ja gerade 'überschrieben' wird.
Was mir nur nicht möglich ist, ist zu gewährleisten das das versteckte ID-Feld bereits im Dokument ist bevor (erstmalig) ein konkreter Datensatz mit "Daten in Felder" angezeigt wird.
Ich bin mir bewußt das meine Anforderungen ziemlich regide sind, denn wenn Du Dir einmal anschaust was ich unter (b) schrieb und Dir das anhand eines 'normalen' Serienbriefes, der üblicherweise immer mindestens Name, Strasse, PLZ, Ort enthält, kommt ein Problemfall nahezu kaum vor, für völlig beliebige Seriendruckdokumente (die keine Briefe sein müssen) trifft das aber so nicht zu und mit dem beschrieben Problemfall ist zu rechnen.
Gruß
Stephan
Re: Aktuellen Datensatz in Seriendruckdokument per Basic
Servus
Da Seriendruckfelder keine datengebundenen Felder sind, und somit in keiner Verbindung zu einem bestimmten *Datensatz* stehen, ist das mit ziemlicher Sicherheit unmöglich. Du kannst Dir die Funtion Daten in Felder vorstellen wie den Aufruf eines Makros, das per Eingabeaufforderung eine ID vom Benutzer verlangt und einfach nur die Felder X,Y,Z aus der Datenbank für diesen Datensatz ausliest und die Werte an vorher definierten Stellen im Dokument platziert. Vor und nach dem Aufruf weiss weder das Dokument noch das Makro, welche ID der Benutzer eingegeben hat. Die Felder selber halten nur vor, aus welcher Quelle welche Felder selektiert werden sollen.
Du wirst also Wohl oder Übel in allen Dokumente, bei denen Dir die Identifizierung des Datensatzes wichtig scheint, z.B. ein ID-Feld einfügen müssen, wie Rik es vorgeschlagen hat.
Da Seriendruckfelder keine datengebundenen Felder sind, und somit in keiner Verbindung zu einem bestimmten *Datensatz* stehen, ist das mit ziemlicher Sicherheit unmöglich. Du kannst Dir die Funtion Daten in Felder vorstellen wie den Aufruf eines Makros, das per Eingabeaufforderung eine ID vom Benutzer verlangt und einfach nur die Felder X,Y,Z aus der Datenbank für diesen Datensatz ausliest und die Werte an vorher definierten Stellen im Dokument platziert. Vor und nach dem Aufruf weiss weder das Dokument noch das Makro, welche ID der Benutzer eingegeben hat. Die Felder selber halten nur vor, aus welcher Quelle welche Felder selektiert werden sollen.
Du wirst also Wohl oder Übel in allen Dokumente, bei denen Dir die Identifizierung des Datensatzes wichtig scheint, z.B. ein ID-Feld einfügen müssen, wie Rik es vorgeschlagen hat.
Re: Aktuellen Datensatz in Seriendruckdokument per Basic
ja, das ist klarDa Seriendruckfelder keine datengebundenen Felder sind, und somit in keiner Verbindung zu einem bestimmten *Datensatz* stehen
so (mit Betonung auf "ziemlich") sehe ich das auch, ich hatte nur Hoffnung das OO, auf Programmebene, für das gerade geöffnete Dokument vielleicht irgendeine entsprechende Info temporär verfügbar hält.ist das mit ziemlicher Sicherheit unmöglich
Es würde u.U. schon helfen wenn irgendwo eine History auszulesen wäre was zuletzt (innerhalb der aktuelle Sitzung für das Dokument) als Wert für .CurrentPresentation in den Feldern angezeigt wurde (die 'normale' Rückgängigfunktion zeichnet das nicht auf was sich an der Feldanzeige ändert), da sich so im jeweils konkreten Einzelfall die Chance erhöht das mein Vorgehen nach (b) (siehe Startpost) zu einem eindeutigen Ergebnis führen könnte.
Naja, was nicht ist, ist nicht, ich wollte nur nichts unversucht lassen.
Gruß
Stephan
Re: Aktuellen Datensatz in Seriendruckdokument per Basic
das was ich hier sage stimmt nicht, ich war einen Moment davon ausgegangen das der Nutzer die FElder 'chronologisch' mit Werten füllen müsste, das aber ist garnicht so.da sich so im jeweils konkreten Einzelfall die Chance erhöht das mein Vorgehen nach (b) (siehe Startpost) zu einem eindeutigen Ergebnis führen könnte.
Gruß
Stephan