🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱
🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
[gelöst]Dateien link in Base
[gelöst]Dateien link in Base
Guten Tag,
diese Informationen fand ich bereits:
http://www.libreoffice-forum.de/viewtop ... 10&t=12482
http://www.libreoffice-forum.de/viewtop ... 10&t=10371
Hyperlinks kann man in Writer und Calc einfügen, jedoch nicht in Base Tabellen, weil es dafür keinen Feldtyp gibt?
In einer Tabelle kann man in einem Feld mit Typ Text den Dateipfad eingeben, in einem Formular mit Schaltfläche mittels eines Makro diese Datei dann öffnen.
Ginge das auch in einem Datenblattformular mit einem Button; ohne Schaltfläche? Das Formular würde ein Feld mit dem Dateipfad als Text enthalten. Sobald man dieses Feld anklickt, bzw. den Cursor in das Feld setzt, und dann den Button anklickt, öffnet das Makro die Datei.
Das Makro sollte also ohne Bezug auf ein bestimmtes Formular arbeiten und sich nur auf ein Feld in einer Tabelle beziehen. Verschiedene Formulare im Datenblattformat beziehen sich in meiner Datenbank auf diese Tabelle. Bei der Vielzahl der Datensätze ist das Datenblattformat übersichtlich. Die Datei des jeweiligen Datensatzes könnte dann mittels des Button geöffnet werden, gleichgültig in welchem Formular man sich befindet.
Ich benötigte ein Beispiel, um dies entsprechend zu kopieren, da ich Makros nicht kenne.
Grüße
Malt
LibreOffice Version: 4.2.8.2; keine späteren Versionen, da dann Probleme mit bestimmten Calc Funktionen
Betriebssystem
Windowssystem: Microsoft Windows 8.1 Home
Kompatibel mit Plattform : x64
diese Informationen fand ich bereits:
http://www.libreoffice-forum.de/viewtop ... 10&t=12482
http://www.libreoffice-forum.de/viewtop ... 10&t=10371
Hyperlinks kann man in Writer und Calc einfügen, jedoch nicht in Base Tabellen, weil es dafür keinen Feldtyp gibt?
In einer Tabelle kann man in einem Feld mit Typ Text den Dateipfad eingeben, in einem Formular mit Schaltfläche mittels eines Makro diese Datei dann öffnen.
Ginge das auch in einem Datenblattformular mit einem Button; ohne Schaltfläche? Das Formular würde ein Feld mit dem Dateipfad als Text enthalten. Sobald man dieses Feld anklickt, bzw. den Cursor in das Feld setzt, und dann den Button anklickt, öffnet das Makro die Datei.
Das Makro sollte also ohne Bezug auf ein bestimmtes Formular arbeiten und sich nur auf ein Feld in einer Tabelle beziehen. Verschiedene Formulare im Datenblattformat beziehen sich in meiner Datenbank auf diese Tabelle. Bei der Vielzahl der Datensätze ist das Datenblattformat übersichtlich. Die Datei des jeweiligen Datensatzes könnte dann mittels des Button geöffnet werden, gleichgültig in welchem Formular man sich befindet.
Ich benötigte ein Beispiel, um dies entsprechend zu kopieren, da ich Makros nicht kenne.
Grüße
Malt
LibreOffice Version: 4.2.8.2; keine späteren Versionen, da dann Probleme mit bestimmten Calc Funktionen
Betriebssystem
Windowssystem: Microsoft Windows 8.1 Home
Kompatibel mit Plattform : x64
Zuletzt geändert von malt14 am Di 10. Mär 2015, 22:06, insgesamt 1-mal geändert.
Re: Dateien link in Base
Hallo Malt,
außerhalb eines Formulars kannst Du meines Wissens nicht über einen Mausklick z.B. auf ein Tabellenfeld irgendein Makro auslösen.
Wenn Du ein Tabellenkontrollfeld in einem Formular meinst, dann geht das genauso wie in den von Dir bereits vorgefundenen Beispielen. Du brauchst keinen Button sondern startest das Makro durch einen Klick auf das entsprechende Feld.
Aus Deinem Text werde ich nicht ganz schlau: "Datenblattformular mit einem Button; ohne Schaltfläche"??? "Makro ohne Bezug auf ein bestimmtes Formular"???
Wenn Du das etwas genauer beschreibst kannst Du auch konkretere Antworten bekommen. So weiß ich nicht, ob Du ein Formular hast oder nicht, einen Button willst oder nicht ...
Gruß
Robert
außerhalb eines Formulars kannst Du meines Wissens nicht über einen Mausklick z.B. auf ein Tabellenfeld irgendein Makro auslösen.
Wenn Du ein Tabellenkontrollfeld in einem Formular meinst, dann geht das genauso wie in den von Dir bereits vorgefundenen Beispielen. Du brauchst keinen Button sondern startest das Makro durch einen Klick auf das entsprechende Feld.
Aus Deinem Text werde ich nicht ganz schlau: "Datenblattformular mit einem Button; ohne Schaltfläche"??? "Makro ohne Bezug auf ein bestimmtes Formular"???
Wenn Du das etwas genauer beschreibst kannst Du auch konkretere Antworten bekommen. So weiß ich nicht, ob Du ein Formular hast oder nicht, einen Button willst oder nicht ...
Gruß
Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: Dateien link in Base
Hallo Robert,
Dank für die Antwort.
Ich dachte an ein Makro, welches für jedes angewählte Datenfeld in einem Formular versucht, den Inhalt wie einen Hyperlink zu öffnen. Das Makro selbst würde über einen Button gestartet. Auf diese Weise hätte man in einem Datenfeld mit dem Pfad durch dieses Makro einen Hyperlink. Man müsste nicht in jedem Formular eine Schaltfläche einrichten.
Meine Base Tabelle beinhaltet mehrere hundert Datensätze. Zu jedem Datensatz existiert eine Writer Datei mit weiteren Informationen, welche gelegentlich benutzt wird. Die Datensätze werden nach Bedarf in vier Formularen aufgerufen. Zur besseren Übersicht sind die Formulare im Datenblatt Format. Um gelegentlich auf die jeweilige Writer Datei zugreifen zu können, wäre es am einfachsten, dies durch Anklicken einer Schaltfläche im Datenblatt Formular zu erledigen, da ein Hyperlink nicht möglich ist.
Formular.png
Eine Spalte mit dem Datenfeld "Datei" kann ich hinzufügen. Kann man in ein solches Datenblatt auch eine Spalte mit einer Schaltfläche einfügen?
In Deinem Makro müsste ich "Formular" durch den Namen meines Formulars, "Datei" durch den Namen des Datenfeldes (Inhalt: Dateipfad) ersetzen. Worauf bezieht sich "Dateiauswahl"?
Muss für jedes Formular ein Makro geschrieben werden, da sich die Formularnamen unterscheiden?
Grüße
Malt
Dank für die Antwort.
Ich dachte an ein Makro, welches für jedes angewählte Datenfeld in einem Formular versucht, den Inhalt wie einen Hyperlink zu öffnen. Das Makro selbst würde über einen Button gestartet. Auf diese Weise hätte man in einem Datenfeld mit dem Pfad durch dieses Makro einen Hyperlink. Man müsste nicht in jedem Formular eine Schaltfläche einrichten.
Meine Base Tabelle beinhaltet mehrere hundert Datensätze. Zu jedem Datensatz existiert eine Writer Datei mit weiteren Informationen, welche gelegentlich benutzt wird. Die Datensätze werden nach Bedarf in vier Formularen aufgerufen. Zur besseren Übersicht sind die Formulare im Datenblatt Format. Um gelegentlich auf die jeweilige Writer Datei zugreifen zu können, wäre es am einfachsten, dies durch Anklicken einer Schaltfläche im Datenblatt Formular zu erledigen, da ein Hyperlink nicht möglich ist.
Formular.png
Eine Spalte mit dem Datenfeld "Datei" kann ich hinzufügen. Kann man in ein solches Datenblatt auch eine Spalte mit einer Schaltfläche einfügen?
In Deinem Makro müsste ich "Formular" durch den Namen meines Formulars, "Datei" durch den Namen des Datenfeldes (Inhalt: Dateipfad) ersetzen. Worauf bezieht sich "Dateiauswahl"?
Muss für jedes Formular ein Makro geschrieben werden, da sich die Formularnamen unterscheiden?
Code: Alles auswählen
REM ***** BASIC *****
SUB Datei_Aufruf
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oFeld AS OBJECT
DIM oShell AS OBJECT
DIM stFeld AS STRING
oDoc=thisComponent
oDrawpage=oDoc.Drawpage
REM Lage des Feldes in dem entsprechenden Formular aufsuchen
oForm=oDrawpage.Forms.getByName("Formular")
oFeld=oForm.getByName("Datei")
REM Den Text aus der Dateiauswahl auslesen
stFeld=oFeld.Text
REM Start des Files mit der entsprechenden URL-Verbindung
oShell = createUnoService("com.sun.star.system.SystemShellExecute")
stFeld = convertToUrl(stFeld)
oShell.execute(stFeld,,0)
END SUB
SUB Datei_uebertragen
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oFeld AS OBJECT
DIM oFeld2 AS OBJECT
DIM stFeld AS STRING
oDoc=thisComponent
oDrawpage=oDoc.Drawpage
REM Lage des Feldes in dem entsprechenden Formular aufsuchen
oForm=oDrawpage.Forms.getByName("Formular")
oFeld=oForm.getByName("Dateiauswahl")
REM Den Text aus der Dateiauswahl auslesen
stFeld=oFeld.Text
rem msgbox stFeld
oFeld2=oForm.getByName("Datei")
oFeld2.BoundField.updateString(stFeld)
END SUB
Grüße
Malt
- Dateianhänge
-
- Formular.PNG (39.49 KiB) 8028 mal betrachtet
Re: Dateien link in Base
Hallo Malt,
versuche einmal den Weg, den das beiliegenden Beispiel einschlägt. Du musst mit der Maus einen Klick auf den jeweiligen Links ausführen.
Gruß
Robert
versuche einmal den Weg, den das beiliegenden Beispiel einschlägt. Du musst mit der Maus einen Klick auf den jeweiligen Links ausführen.
Gruß
Robert
- Dateianhänge
-
- Beispiel_Linkaufruf.odb.zip
- Linkaufruf aus einem Tabellenkontrollfeld
- (11.07 KiB) 702-mal heruntergeladen
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: Dateien link in Base
Hallo Robert,
genau das suchte ich!
Bereits in ein Formular eingefügt und probiert. Funktioniert sehr gut.
Vielen Dank!
Ein Formular bezieht sich auf eine Abfrage, welche per Funktion die letzten Datensätze eines Namens auswählt und gruppiert. Die angezeigten Datensätze lassen sich in der Abfrage und im Formular nicht bearbeiten und keine neuen hinzufügen.
In diesem Formular funktioniert der Aufruf der Datei nicht.
Grüße
Malt
genau das suchte ich!
Bereits in ein Formular eingefügt und probiert. Funktioniert sehr gut.
Vielen Dank!
Ein Formular bezieht sich auf eine Abfrage, welche per Funktion die letzten Datensätze eines Namens auswählt und gruppiert. Die angezeigten Datensätze lassen sich in der Abfrage und im Formular nicht bearbeiten und keine neuen hinzufügen.
In diesem Formular funktioniert der Aufruf der Datei nicht.
Grüße
Malt
Re: Dateien link in Base
Hallo Malt,
dass das Makro gar nicht ausgelöst wird, wenn sich das Formulkar auf eine nicht bearbeitbare Abfrage bezieht, werde ich wohl als Bug melden. Alle Ereigbnisse, die mit dem Feld verbunden sind (innerhalb des Tabellenkontrollfeldes) sind dann lahm gelegt. Was geht:
Feld markieren und über einen Button starten.
Hier das komplette Makro dazu:
Der Button gilt jetzt allerdings nur für das 3. Feld. Da musst Du jetzt entsprechend anpassen.
Gruß
Robert
dass das Makro gar nicht ausgelöst wird, wenn sich das Formulkar auf eine nicht bearbeitbare Abfrage bezieht, werde ich wohl als Bug melden. Alle Ereigbnisse, die mit dem Feld verbunden sind (innerhalb des Tabellenkontrollfeldes) sind dann lahm gelegt. Was geht:
Feld markieren und über einen Button starten.
Hier das komplette Makro dazu:
Code: Alles auswählen
SUB Website_Aufruf(oEvent AS OBJECT)
REM Aufruf einer Website oder des Mailprogramms mit einer vorgegebenen Mailadresse
DIM oFeld AS OBJECT
DIM oShell AS OBJECT
DIM stFeld AS STRING
oForm = oEvent.Source.Model.Parent
stFeld = oForm.getString(3)
IF stFeld = "" THEN
EXIT SUB
END IF
IF InStr(stFeld,"@") THEN
stFeld = "mailto:"+stFeld
ELSEIF InStr(stFeld,"http://") THEN
stFeld = convertToUrl(stFeld) 'convertToUrl erkennt, dass mit http:// bereits eine Verbindung vorgegeben ist. file:/// wird nicht gesetzt
ELSE
stFeld = "file:///"+stFeld
stFeld = convertToUrl(stFeld) 'convertToUrl erkennt, dass mit http:// bereits eine Verbindung vorgegeben ist. file:/// wird nicht gesetzt
END IF
REM Start des Files mit der entsprechenden URL-Verbindung
oShell = createUnoService("com.sun.star.system.SystemShellExecute")
oShell.execute(stFeld,,0)
END SUB
Gruß
Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: Dateien link in Base
Hallo Malt,
ich habe das als Bug gemeldet:
https://bugs.documentfoundation.org/sho ... i?id=89917
Das hängt wohl mit dem Tabellenkontrollfeld zusammen. Dort finden die Ereignisse erst dann statt, wenn der Inhalt des Feldes markiert ist. Wenn Du über einen Mausklick ein Ereignis auslösen willst, dann brauchst Du auch da einen Doppelklick: Einen zum Markieren und den nächsten für das Ereignis. Deshalb funktionieren Ereignisse wie OnMousOver auch nur auf markierten Feldern. So konnte ich z.B. nicht den Mauszeiger ändern, wenn die Maus bewegt wurde.
Bei normalen Feldern ist das nicht der Fall. Die reagieren auch bei einer Abfrage die schreibgeschützt ist. Wenn also die Links außerhalb des Tabellenkontrollfeldes angeklickt würden, dann würde dort auch alles ohne einen gesonderten Button und sogar mit geändertem Mauszeiger möglich sein.
Gruß
Robert
ich habe das als Bug gemeldet:
https://bugs.documentfoundation.org/sho ... i?id=89917
Das hängt wohl mit dem Tabellenkontrollfeld zusammen. Dort finden die Ereignisse erst dann statt, wenn der Inhalt des Feldes markiert ist. Wenn Du über einen Mausklick ein Ereignis auslösen willst, dann brauchst Du auch da einen Doppelklick: Einen zum Markieren und den nächsten für das Ereignis. Deshalb funktionieren Ereignisse wie OnMousOver auch nur auf markierten Feldern. So konnte ich z.B. nicht den Mauszeiger ändern, wenn die Maus bewegt wurde.
Bei normalen Feldern ist das nicht der Fall. Die reagieren auch bei einer Abfrage die schreibgeschützt ist. Wenn also die Links außerhalb des Tabellenkontrollfeldes angeklickt würden, dann würde dort auch alles ohne einen gesonderten Button und sogar mit geändertem Mauszeiger möglich sein.
Gruß
Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: Dateien link in Base
Hallo Robert,
für dieses Formular benötige ich die Abfrage mit Funktion; den Schreibschutz kann ich demnach nicht vermeiden.
Da bei mir bestimmte Funktionen in Calc in höheren Versionen als 4.2.8.2 nicht funktionieren, dachte ich, es liegt beim Makro vielleicht kein Bug vor, sondern die Probleme werden von meinem System verursacht.
Ich ersetzte im Makro (3) durch (1), weil der Dateipfad im ersten Feld ist.
Über Anpassen fügte ich einen Befehl in der Symbolleiste hinzu, der das Makro ausführt.
Beigefügte Fehlermeldungen erhalte ich - Nr. 2 nach weiterer Ausführung des Makros nach dem ersten Fehler.
Dank für all Deine Hilfe.
Grüße
Malt
für dieses Formular benötige ich die Abfrage mit Funktion; den Schreibschutz kann ich demnach nicht vermeiden.
Da bei mir bestimmte Funktionen in Calc in höheren Versionen als 4.2.8.2 nicht funktionieren, dachte ich, es liegt beim Makro vielleicht kein Bug vor, sondern die Probleme werden von meinem System verursacht.
Ich ersetzte im Makro (3) durch (1), weil der Dateipfad im ersten Feld ist.
Über Anpassen fügte ich einen Befehl in der Symbolleiste hinzu, der das Makro ausführt.
Beigefügte Fehlermeldungen erhalte ich - Nr. 2 nach weiterer Ausführung des Makros nach dem ersten Fehler.
Dank für all Deine Hilfe.
Grüße
Malt
- Dateianhänge
-
- Website_Aufruf.PNG (67.7 KiB) 7968 mal betrachtet
-
- Website_Aufruf 2.PNG (65.19 KiB) 7968 mal betrachtet
Re: Dateien link in Base
Hallo Malt,
ich bin davon ausgegangen, dass der Button in dem Formular liegt, aus dem heraus Du auch den Link starten willst (rechts neben dem Tabellenkontrollfeld oder wo auch sonst). Wenn Du das Makro von der Symbolleiste oder irgendwo anders her ausführst hast Du erst einmal keinen Kontakt zum Formular. Da müsste ich jetzt auch suchen, wie ich von dort aus zum Formular weiter komme. Mal sehen, was ich da machen kann.
Vielleicht hilft, statt des Events
Ich gehe aber davon aus, dass bereits "thisComponent" nicht zu dem Formular führt.
Gruß
Robert
ich bin davon ausgegangen, dass der Button in dem Formular liegt, aus dem heraus Du auch den Link starten willst (rechts neben dem Tabellenkontrollfeld oder wo auch sonst). Wenn Du das Makro von der Symbolleiste oder irgendwo anders her ausführst hast Du erst einmal keinen Kontakt zum Formular. Da müsste ich jetzt auch suchen, wie ich von dort aus zum Formular weiter komme. Mal sehen, was ich da machen kann.
Vielleicht hilft, statt des Events
Code: Alles auswählen
oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("MainForm")
Gruß
Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: Dateien link in Base
Hallo Robert,
mit einer Schaltfläche im Formular funktioniert es.
Vielen Dank!
Wie von Dir vermutet, beginnt das Makro mit dem geänderten Code nicht:
Malt
mit einer Schaltfläche im Formular funktioniert es.
Vielen Dank!
Wie von Dir vermutet, beginnt das Makro mit dem geänderten Code nicht:
GrüßeVielleicht hilft, statt des Events
Code: Alles auswählen
oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("MainForm")
Malt
An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:
Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.