Seite 1 von 2

Feldtyp Hyperlink

Verfasst: Sa, 22.08.2009 19:15
von greenhorn100
Ich suche dringend nach einer Möglichkeit, in einer Tabelle ein Feld zu definieren, welches es später - egal ob auf Ebene der Tabelle oder eines Formulares - zulässt, einen Hyperlink auf ein Dokument innerhalb des Netzwerkes einzutragen. Bei MS-Access gibt es diese Funktion und ich kann mir nicht vorstellen, dass es bei OpenOffice Base nicht möglich ist. Wäre sehr froh um Hinweise, wo ich diese Funktion finde.

Re: Feldtyp Hyperlink

Verfasst: So, 23.08.2009 11:45
von komma4
greenhorn100 hat geschrieben:ich kann mir nicht vorstellen, dass es bei OpenOffice Base nicht möglich ist.
Ich schon.

Es gibt bei HSQLDB keinen Feldtyp HYPERLINK, und bei BASE keine "Funktion", welche nur URLs zulässt.

Re: Feldtyp Hyperlink

Verfasst: Mo, 24.08.2009 16:51
von greenhorn100
Schade, aber vielen Dank für Deinen Bescheid, so verliere ich wenigstens keine Zeit mehr zum Suchen.

Re: Feldtyp Hyperlink

Verfasst: So, 06.09.2009 12:03
von clag
Hallo Leutz,

da habe ich wohl ein ähnliches Problem, ich mich mit BASE noch nicht tiefgehend auseinandergesetzt habe möchte ich die SuperUser mal fragen

ich habe hier eine sehr große Tabelle als Datenbank > 20.000 Zeilen und jeder Datensatz hat einen Hyperlink der auf eine Datei bzw Ordner zeigt
da CALC aber immer zäher wird dachte ich daran jetzt BASE zu nutzen aber wie mein Vorredner habe ich noch keine BASE Erfahrung und noch nichts gefunden wie man einen Hyperlink o.ä. einbauen könnte.
Ist das in BASE absolut ausgeschlossen oder kann "man" da eventuell mit einem Makro nachhelfen oder irgend wie anders ?

den link als Text in ein Feld zu schreiben ist ja kein Problem aber dann das anlicken/aufrufen der Adresse, geht da was ?

schonmal Danke vorweg für verbrauchte DenkKalorien :)

Re: Feldtyp Hyperlink

Verfasst: So, 06.09.2009 15:00
von komma4
Die fehlende Funktionalität habe ich mit dem folgenden kleinen Skript nachgebaut.

Ein Formular zu der DB-Tabelle mit dem Assistenten erstellt.
Den BASIC-Code in einem Modul eines Formulars gespeichert [Formular>Bearbeiten>Extras>Makros>Makros verwalten>OpenOffice.org Basic...>[Formularname]>Neu]
Eine Schaltfläche auf dem Forumular erstellt und das Makro dem Ereignis "Beim Auslösen" zugewiesen.

[die Namen des Formulars, und des Textfeldes müssen natürlich an die bei Euch genutzten Namen angepasst werden]

Code: Alles auswählen

oForm = ThisComponent.Drawpage.Forms.getByName( "MainForm" )
oFeld = oForm.getByName( "txthyperlink" )
starten = createUnoService("com.sun.star.system.SystemShellExecute")
starten.execute( ConvertToUrl( oFeld.getString() ), "", 0)
Funktioniert hier unter Linux sowohl mit Datei***- als auch Internet-Adressen. Diese können mit oder ohne Protokollnamen (file:// bzw. http://) vorhanden sein.

***die dem MIME-Typ zugehörende Anwendung wird geöffnet, bei Internetadressen wird der Standardbrowser genutzt


Edit: es kann auch das Ereignis "Maustaste gedrückt" des Textfeldes selbst genutzt werden; in Verbindung mit den Textfeld-Schrift-Eigenschaften Schriftfarbe "blau" und "Unterstrichen>Einfach" sieht es schon wieder wie Hyperlinks aus :)

Have fun!

Re: Feldtyp Hyperlink

Verfasst: So, 06.09.2009 18:28
von clag
Hi komma4,

da hast du mir ja wieder Hoffnung gemacht :)
dann werde ich da mal loslegen.

Re: Feldtyp Hyperlink

Verfasst: So, 06.09.2009 20:02
von eBayer
Hallo Komma,
das hat mich auch interessiert und ich habe es gleich mal in ein ooBase-Formular eingebaut.
Klappt hervorragend und nimmt damit allen den Wind aus den Segeln, die bisher bemängelten, daß ein Datentyp "Hyperlink" fehlt.
Allerdings muß für ooBase die folgende Zeile geändert werden:
starten.execute( ConvertToUrl( oFeld.getString() ), "", 0)
nach:
starten.execute( ConvertToUrl( oFeld.text ), "", 0)

Gruß eBayer

Re: Feldtyp Hyperlink

Verfasst: So, 06.09.2009 20:57
von komma4
eBayer hat geschrieben:Allerdings muß für ooBase die folgende Zeile geändert werden
Korrekt.

Sobald ein einfaches Textfeld mit weiteren Schriftattributen ausgestattet ist geht .getString() nicht mehr.


Allerdings empfehle ich dann,

Code: Alles auswählen

starten.execute( ConvertToUrl( oFeld.getText().getString() ), "", 0)
zu nehmen.

.getText() gibt ein Textobjekt zurück (keine Ahnung, warum das trotzdem funktioniert).

Re: Feldtyp Hyperlink

Verfasst: So, 06.09.2009 21:16
von eBayer
Du kannst Dir den Inhalt des Controls entweder mit der Methode gettext() oder über die unter Properties verfügbare Eigenschaft "text" holen.
Übrigens.... auf die gleiche Weise kannst Du aus ooBase heraus auch eMails versenden. Es wird automatisch das konfigurierte Mailprogramm gestartet.
Gruß eBayer

Re: Feldtyp Hyperlink

Verfasst: So, 06.09.2009 23:06
von komma4
eBayer hat geschrieben: oder über die unter Properties verfügbare Eigenschaft "text"
Entschuldige***, das ist nur eine Pseudo-Eigenschaft... die intern auf die Methode umgesetzt wird. Deshalb nehme ich lieber die Methode.

Und Mails kannst Du mit einer mail-URL nicht "verschicken", sondern nur an den Mail-Editor beim Aufruf übergeben.


***bin da vielleicht etwas pingelig, aber ist mir lieber, bevor irgendwer auf falsche Fährten gelockt wird.

Re: Feldtyp Hyperlink

Verfasst: Di, 15.09.2009 12:42
von therealfassi
Hallo,

bin neu bei ooBase (umgestiegen von Papyrus). Import der DB hat auch problemlos geklappt. Habe jetzt aber auch das Problem, dass ich ein Hypertextfeld benötige (DVD-DB mit Link zur IMDB). Habe für das Feld "IMDB" im Formular "DVD" folgendes Makro eingefügt:

Code: Alles auswählen

oForm = ThisComponent.Drawpage.Forms.getByName( "DVD" )
oFeld = oForm.getByName( "IMDB" )
starten = createUnoService("com.sun.star.system.SystemShellExecute")
starten.execute( ConvertToUrl( oFeld.getString() ), "", 0)
Bekomme nun die Fehlermeldung:

Type:com.sun.star.container.NoSuchElementException


Muss leider zugeben, dass ich nicht die geringste Ahnung von BASIC habe. Schade, dass ein Feld mit Verweis zu einer externen Datei hier nicht so einfach funktioniert wie in Papyrus (System ist Linux Mint und Papyrus läuft nur unter Wine, da klappt die Übergabe nicht. Will aber eh weg von den Wndows-Programmen).

Re: Feldtyp Hyperlink

Verfasst: Di, 15.09.2009 13:49
von komma4
Willkommen im Forum.
therealfassi hat geschrieben:Bekomme nun die Fehlermeldung:
Bei welcher Code-Zeile?

:!: Die Namen sind case-sensitive

Re: Feldtyp Hyperlink

Verfasst: Di, 15.09.2009 13:58
von therealfassi
Danke für die fixe Antwort.

In folgender Codezeile:

Code: Alles auswählen

oForm = ThisComponent.Drawpage.Forms.getByName( "DVD" )
Das Formular heißt tatsächlich "DVD".

Re: Feldtyp Hyperlink

Verfasst: Di, 15.09.2009 14:59
von komma4
Nein.

Dein Formular heisst MainForm ... und hat den (sichtbaren) Namen "DVD"
(es sei denn, Du hast die Formular-Eigenschaft geändert. Sichtbarer "Name" (Formular-Übersicht) <> interner Name !)

Probiere es mal so.

Re: Feldtyp Hyperlink

Verfasst: Di, 15.09.2009 15:01
von eBayer
Hallo, hoffentlich unterliegst Du keinem Irrtum.......
Wichtig ist nicht der Name in der IDE, sondern der im Formular vergebene Name, den Du unter den Eigenschaften des Formulars ggf. ändern kannst!
Gruß eBayer