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. 🤗

relative Pfadangaben

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
FrankKaden
Beiträge: 7
Registriert: Fr 16. Jun 2017, 08:19

relative Pfadangaben

Beitrag von FrankKaden » Di 20. Jun 2017, 10:37

Hallo,

ich möchte über eine Schaltfläche und dem dahinterliegenden Makro auf einem LOBase-Formular
ein kleines Windows-Programm starten (es handelt sich nur um eine EXE-Datei).
Dieses Programm liegt in einem Unterordner des Ordners, in dem sich meine
LO-Datenbank befindet. Da diese Datenbank auch auf anderen PC's laufen soll,
muss der Pfad zur EXE-Datei relativ angegeben werden (Unterordner sollen beim
Kopieren der Datenbank mit kopiert werden).

Ich konnte ein ähnliches Problem mit Hilfe verschiedener Foren bereits lösen:

Öffnen eines PDF-Dokumentes über eine Schaltfläche und einem Makro.
Das sieht dann so aus:

sub IP_Tabelle_oeffnen
oDB = ThisComponent.Parent ' Der Zugriff auf die URL ist nicht vom Formular aus direkt möglich. Es muss auf den darüberliegenden Frame der Datenbank Bezug genommen werden.
stDir = Left(oDB.Location,Len(oDB.Location)-Len(oDB.Title)) ' Der Titel der Datenbank wird von der URL abgetrennt.
oSer = createUNOService("com.sun.star.system.SystemShellExecute")
oSer.execute(stDir & "\Texte\ip.pdf",,0)
end Sub

Die Variable stDir ermittelt den aktuellen Pfad zum Unterordner Texte des Ordners, in dem sich die Datenbank
befindet. (Soweit, wie ich das verstanden habe. Bin hier leider kein Experte auf dem Gebiet)

Analog dachte ich mir, funktioniert das auch, wenn ich ein Programm (wie oben beschrieben) starten will.

Mein Makro sieht dann so aus:

SUB Schaltjahr_Rechner_starten
oDB = ThisComponent.Parent ' Der Zugriff auf die URL ist nicht vom Formular aus direkt möglich. Es muss auf den darüberliegenden Frame der Datenbank Bezug genommen werden.
stDir = Left(oDB.Location,Len(oDB.Location)-Len(oDB.Title)) ' Der Titel der Datenbank wird von der URL abgetrennt.
shell(stDir & "\Programme\pschaltjahr.exe",1,"")
End Sub

Hier erhalte ich aber die Fehlermeldung: "BASIC-Laufzeitfehler.Datei nicht gefunden."
Mit einer absoluten Pfadangabe funktioniert der SHELL-Befehl aber einwandfrei.

Irgendwas verstehe ich hier falsch. Könnt Ihr mir bitte helfen?

Viele Grüße
Frank

Freischreiber
Beiträge: 763
Registriert: Fr 28. Mär 2014, 10:41

Re: relative Pfadangaben

Beitrag von Freischreiber » Di 20. Jun 2017, 11:58

Hallo Frank,

eventuell mußt du beim Zusammenbauen des Pfads mit converttourl arbeiten. Ich hatte einmal ein entfernt ähnliches Problem:
https://www.libreoffice-forum.de/viewto ... =10#p43459

Gruß
Freischreiber
Freischreiber nutzt seit 6/2023 LibreOffice Version: 7.2.7.2 (x64) unter Windows 10 und SplitDB mit HSQL 2.7.2.

FrankKaden
Beiträge: 7
Registriert: Fr 16. Jun 2017, 08:19

Re: relative Pfadangaben

Beitrag von FrankKaden » Di 20. Jun 2017, 13:06

Hallo Freischreiber,

danke für die schnelle Antwort.

Hast Du das so gemeint?:

SUB Schaltjahr_Rechner_starten
oDB = ThisComponent.Parent ' Der Zugriff auf die URL ist nicht vom Formular aus direkt möglich. Es muss auf den darüberliegenden Frame der Datenbank Bezug genommen werden.
stDir = Left(oDB.Location,Len(oDB.Location)-Len(oDB.Title)) ' Der Titel der Datenbank wird von der URL abgetrennt.
stDir = ConvertToURL(stDir)
shell(stDir & "\Programme\pschaltjahr.exe",1,"")
End Sub

So funktioniert es leider nicht, dieselbe Fehlermeldung.
Ich denke aber, ich habe Deine Antwort missverstanden.
Vielleicht gibt es noch weitere Tipps....

Viele Grüße Frank

Freischreiber
Beiträge: 763
Registriert: Fr 28. Mär 2014, 10:41

Re: relative Pfadangaben

Beitrag von Freischreiber » Di 20. Jun 2017, 14:00

Hallo Frank,

es war nur eine Vermutung. Vielleicht klappt, das converttourl erst in den Shellaufruf zu nehmen?

Hast du mal mit

Code: Alles auswählen

msgbox stDir
vor dem Shellaufruf anzeigen lassen, was in stDir genau drin steht? Vielleicht ist ein Slash falschrum oder man sieht eine andere Ursache.

Gruß
Freischreiber
Freischreiber nutzt seit 6/2023 LibreOffice Version: 7.2.7.2 (x64) unter Windows 10 und SplitDB mit HSQL 2.7.2.

FrankKaden
Beiträge: 7
Registriert: Fr 16. Jun 2017, 08:19

Re: relative Pfadangaben

Beitrag von FrankKaden » Di 20. Jun 2017, 14:15

Hallo Freischreiber,

tatsächlich, es lag an den Rückstrichen in meiner relativen Pfadangabe.

Jetzt funktioniert der Aufruf wie gewünscht.

Viele Dank und viele Grüße
Frank

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