Hyperlink in Base per Makro auslösen

Hallo, Ich arbeite mit LO 6.0.7.3 unter Linux 4.15. Arbeite mich gerade in Base ein, da ich eine Mineralien-Datenbank aufbauen will. In der Datenbank würde ich in einem Formular gerne eine Schaltfläche mit einem Makro belegen, das dann direkt einen Hyperlink zu einer Internet-Adresse auslöst, um diese Internet-Seite anschauen zu können. Die Internet-Adresse besteht aus einem konstanten Anteil (“https://www.mineralienatlas.de/lexikon/index.php/MineralData?mineral=”) und nach dem Gleichheitszeichen kommt der Inhalt der Spalte Nr. 2 (=“Name”) der Datenbank. Habe gestern den ganzen Tag mit großen Fragezeichen über die Programmierung von Makros in Base gegrübelt (gibt es irgendwo ein Befehlsverzeichnis für die Makros?), habe aber rein gar nichts hinbekommen. Kann mir da jemand helfen??


Habe auf die Antwort mit "Kommentar geantwortet. Das sieht man wohl von außen nicht, deshalb hier noch Mal als Bearbeitung meiner Frage:


Danke zunächst einmal für die Antwort. Ich oute mich gerne als Anfänger und gestehe wachsende Verzweiflung über die Makro-Sprache. Mit folgenden Zeilen:


oShell = createUnoService(“com.sun.star.system.SystemShellExecute”)


stLink = “Mineralienatlas Lexikon - Buntkupferkies


oShell.execute(stLink,0)


kann ich ein Makro erzeugen, das mir auf Mausklick auf eine Schaltfläche tatsächlich die genannte Internet-Seite aufruft. Es will mir aber nicht gelingen, an Stelle des Textes in “” hinter stLink die Daten aus dem Formular (und somit aus der Datenbank) einzufügen. Versucht habe ich z.B. folgendes:


oDoc = thisComponent


oDrawpage = oDoc.drawpage


oForm = oDrawpage.forms.getByName(“Objekte_Test”) REM Name der Form


DIM sMineralienatlas as String


sMineralienatlas = oForm.getByName(“Mineral_Minatlas”) REM Name des Textfeldes lt. Formular-Navigator


oShell = createUnoService(“com.sun.star.system.SystemShellExecute”)


stLink = “sMineralienatlas”


oShell.execute(stLink,0)


Da kommt die Fehlermeldung “Ausnahme aufgetreten, Type: com.Star.Container.NoSuchElementExceptionMessage”. Ideen???

Dies hier ist nicht der Inhalt des Textfeldes, sondern das Textfeld selbst:
sMineralienatlas = oForm.getByName("Mineral_Minatlas"). Das Ganze ist ein Objekt, also besser oFeldMin = oForm.getByName("Mineral_Minatlas"). Zu dem angezeigten Inhalt kommst Du über sMineralienatlas = oFeldMin.Text. Zu dem Inhalt, der in der Datenbank enthalten ist, über sMineralienatlas = oFeldMin.currentValue.

Jetzt hast Du bereits eine Standardvariable für den Pfad, die stLink heißt. An die willst Du den Wert aus dem Feld anhängen:

stLink = stLink & sMineralienatlas

Wenn das dann wirklich der komplette Link ist. Gegebenenfalls muss ja noch ein Frontslash dazu oder anderes.

Super, jetzt klappt alles! Danke.
Volker

Schau im Handbuch, dort im Kapitel Makros > Datenbankaufgaben mit Makros erweitert > Aufruf von Anwendungen … Auch die folgenden Kapitel dürften dafür interessant sein. geht es doch darum, den Mauszeiger beim Überfahren eines Links zu ändern usw.

Den entsprechenden Link musst Du natürlich schon in Deiner Datenbank zusammenbauen. Notfalls eben auch aus 2 Feldern, wenn Du das benötigst. Oder eben aus der Konstanten, die Du in das Makro packst, und dann nur dem Text, den Du ruhig auch anklickst. Einen Button brauchst Du dann nicht, weil Du den Text für den Link direkt aus dem feld, das Du anklickst, ausliest.

Im Prinzip läuft das im Makro immer gleich:

oShell = createUnoService("com.sun.star.system.SystemShellExecute")
oShell.execute(stLink,,0)

Du erstellst einen Link und gibst den an Dein System weiter. Das System sucht dazu das Programm. Und bei einer Website ist das eben der Standardbrowser.

Danke zunächst einmal für die Antwort. Ich oute mich gerne als Anfänger und gestehe wachsende Verzweiflung über die Makro-Sprache. Mit folgenden Zeilen:
oShell = createUnoService(“com.sun.star.system.SystemShellExecute”)
stLink = “Mineralienatlas Lexikon - Buntkupferkies
oShell.execute(stLink,0)
kann ich ein Makro erzeugen, das mir auf Mausklick auf eine Schaltfläche tatsächlich die genannte Internet-Seite aufruft. Es will mir aber nicht gelingen, an Stelle des Textes in “” hinter stLink die Daten aus dem Formular (und somit aus der Datenbank) einzufügen. Versucht habe ich z.B. folgendes:
oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName(“Objekte_Test”)
DIM sMineralienatlas as String
sMineralienatlas = oForm.getByName(“Mineral_Minatlas”)
oShell = createUnoService(“com.sun.star.system.SystemShellExecute”)
stLink = “sMineralienatlas”
oShell.execute(stLink,0)
Da passiert aber Nichts.
Ideen???