BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

[gelöst] Dateien link in Base, "https" - Sonderzeichen

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
malt14
Beiträge: 119
Registriert: Fr 7. Nov 2014, 06:21

[gelöst] Dateien link in Base, "https" - Sonderzeichen

Beitrag von malt14 » So 18. Mär 2018, 14:05

Guten Tag,


Mit diesem Makro kann ich Webseiten oder LO Dateien, z.B. odt, aufrufen, wenn ich den Pfad in das Feld eingebe. Dank an RobertG für den Hinweis und die Hilfe dazu.

Code: Alles auswählen

REM  *****  BASIC  *****

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
	oFeld = oEvent.Source
	REM Den Text aus der Dateiauswahl auslesen
	stFeld = oFeld.Text
	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
Enthält der Pfad oder Dateiname Sonderzeichen (gibt es z.B. bei deutschen oder französischen Dateinamen) oder enthält die URL "https" anstelle von "http" funktioniert der Aufruf nicht. Gibt es dafür eine Lösung? Manuell die Namen der Dateien und Pfade zu ändern, ist bei einer größeren Zahl aufwendig.


Grüße
Malt

LibreOffice
Version: 4.4.7.2
Gebietsschema: de_DE
Microsoft Windows 10
Zuletzt geändert von malt14 am Mo 19. Mär 2018, 10:05, insgesamt 1-mal geändert.

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Dateien link in Base

Beitrag von RobertG » So 18. Mär 2018, 16:44

Hallo Malt,

ich habe das jetzt nicht getestet, würde aber folgendermaßen vorgehen:

Code: Alles auswählen

ELSEIF InStr(stFeld,"http://") THEN
ersetzen durch

Code: Alles auswählen

ELSEIF InStr(stFeld,"http://") OR InStr(stFeld,"https://") THEN
und dann, wenn der Kontakt zu https weiter nicht funktioniert, vor oShell eine Zeile Einfügen mit msgbox stFeld, die Dir dann ausgibt, was denn da in der Verbindung jetzt steht.

Für die Sonderzeichen würde ich das ELSE leer lassen. Also:

Code: Alles auswählen

ELSE
END IF
Da fehlt mir jede Erfahrung, da ich grundsätzlich keine Sonderzeichen, auch keine Leerzeichen, bei Dateinamen und Pfaden verwende.

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

malt14
Beiträge: 119
Registriert: Fr 7. Nov 2014, 06:21

Re: Dateien link in Base

Beitrag von malt14 » Mo 19. Mär 2018, 10:04

Hallo Robert,

vielen Dank für die Hilfe. Ich änderte das Makro entsprechend Deinen Hinweisen:

Code: Alles auswählen

REM  *****  BASIC  *****

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
	oFeld = oEvent.Source
	REM Den Text aus der Dateiauswahl auslesen
	stFeld = oFeld.Text
	IF stFeld = "" THEN
		EXIT SUB
	END IF
	IF InStr(stFeld,"@") THEN
		stFeld = "mailto:"+stFeld
	ELSEIF InStr(stFeld,"http://") OR InStr(stFeld,"https://") THEN
		stFeld = convertToUrl(stFeld)	'convertToUrl erkennt, dass mit http:// bereits eine Verbindung vorgegeben ist. file:/// wird nicht gesetzt
	ELSE	
	END IF
	REM Start des Files mit der entsprechenden URL-Verbindung
	oShell = createUnoService("com.sun.star.system.SystemShellExecute")
	oShell.execute(stFeld,,0)
END SUB
Internetseiten mit "https" und "http" werden aufgerufen.
Dateinamen mit Sonderzeichen werden aufgerufen.
Allerdings funktionierte es bei einer Datei mit " ’ " in Namen nicht, bei einer anderen wohl. Das scheint mit der Verarbeitung beim Speichern der Dateien zusammenzuhängen. Obwohl bei beiden " ’ " angezeigt wird, wird bei der aufgerufenen Datei wohl mit " ' " gearbeitet.

Nochmals Dank für die Verbesserung des Makros.

Grüße
Malt

LibreOffice
Version: 4.4.7.2
Gebietsschema: de_DE
Microsoft Windows 10

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: [gelöst] Dateien link in Base, "https" - Sonderzeichen

Beitrag von RobertG » Mo 19. Mär 2018, 16:19

Hallo Malt,

vielleicht hilft eine Funktion wie diese beim Überbringen der Sonderzeichen:

Code: Alles auswählen

FUNCTION String_to_SQL(st AS STRING)
IF InStr(st,"'") THEN
st = Join(Split(st,"'"),"''")
END IF
String_to_SQL = st
END FUNCTION
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

malt14
Beiträge: 119
Registriert: Fr 7. Nov 2014, 06:21

Re: [gelöst] Dateien link in Base, "https" - Sonderzeichen

Beitrag von malt14 » Mo 19. Mär 2018, 19:01

Hallo Robert,

Dank für den Hinweis. Mit der Anwendung von Funktionen in Base will ich mich künftig befassen.

Grüße
Malt

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten