🙏 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!🍀

❤️ DANKE >> << DANKE ❤️

>> 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, "https" - Sonderzeichen

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
malt14
Beiträge: 125
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
* LO-Experte *
Beiträge: 2884
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: 125
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
* LO-Experte *
Beiträge: 2884
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: 125
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

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

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

Beitrag von malt14 » Do 24. Okt 2024, 06:17

Geändertes Makro

Guten Tag

RobertG hatte freundlicherweise ein Makro zur Verfügung gestellt, welches abweichend zu dem im Base Handbuch, "Aufruf von Anwendungen zum Öffnen von Dateien", auch mit Sonderzeichen funktioniert.

Code: Alles auswählen

SUB Website_Aufruf(oEvent AS OBJECT)
	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
Dies funktionierte noch, bewirkte jetzt bei jeder Benutzung die Meldung:
"
oShell.execute(stFeld,,0)
"

"
BASIC-Laufzeitfehler.
Argument ist nicht optional.
"

Mit diesem Code arbeitet das Makro wieder problemlos:

Code: Alles auswählen

SUB Website_Aufruf(oEvent AS OBJECT)
    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) ' Added empty string as second argument
END SUB
Grüße
Malt

LibreOffice Base, Version: 24.8.2.1 (X86_64), eingebettete Firebird Datenbank, OS: Windows 11 X86_64 (10.0 build 22631)

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

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

Beitrag von RobertG » Do 24. Okt 2024, 08:08

Da ist etwas von der Basic-Seite her bei der Version LO 24.8.2.1 geändert worden. Der 2. Parameter war eigentlich ein notwendiger Parameter. Wenn da nichts steht kommt eine Fehlermeldung.

Code: Alles auswählen

oShell.execute(stField,"",0)
Einfach den Plats zwischen den 2 Kommas mit zwei doppelten Anführungszeichen oben versehen. Ist dann ein (leerer) Text.
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


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.



Antworten