[Gelöst] Datei mit Datensatz verlinken
Moderator: Moderatoren
-
- *
- Beiträge: 15
- Registriert: Di, 15.09.2009 12:31
[Gelöst] Datei mit Datensatz verlinken
Hallo,
rippe gerade meine DVD-Sammlung auf die Festplatte und würde in Base nun gerne jeden Datensatz mit der passenden avi-Datei verlinken, damit dann per Klick die Datei an den Standard-Player übergeben wird. Ist das mit OoBase überhaupt möglich? Habe bisher mit papyrus Base gearbeitet, aber diese Funktion klappt dort nicht unter Wine. Will im Grunde auch nicht mehr mit Windows-Programmen arbeiten. System ist übrigens Ubuntu 10.04.
Viele Grüße
rippe gerade meine DVD-Sammlung auf die Festplatte und würde in Base nun gerne jeden Datensatz mit der passenden avi-Datei verlinken, damit dann per Klick die Datei an den Standard-Player übergeben wird. Ist das mit OoBase überhaupt möglich? Habe bisher mit papyrus Base gearbeitet, aber diese Funktion klappt dort nicht unter Wine. Will im Grunde auch nicht mehr mit Windows-Programmen arbeiten. System ist übrigens Ubuntu 10.04.
Viele Grüße
Zuletzt geändert von therealfassi am Sa, 26.02.2011 22:31, insgesamt 1-mal geändert.
Re: Datei mit Datensatz verlinken
".loadComponentFromUrl" ... versuch's mal so:
Wenn Du die Datei mit einem bestimmten Programm öffnen willst, kannst Du Shell verwenden, vorausgesetzt das Programm unterstützt einen Aufruf über die Kommandozeile:
http://www.dannenhoefer.de/faqstarbasic ... ml#Zweig48
ggf musst Du ein bisschen rumbasteln damit der übergebene Parameter auch korrekt ankommt
g
Code: Alles auswählen
Dim sURL as String
Dim Doc
sURL = convertToUrl("Pfad zur Datei die Du öffnen willst")
Doc = starDeskTop.loadComponentFromUrl (sURL, "_blank", 0, Array())
http://www.dannenhoefer.de/faqstarbasic ... ml#Zweig48
Code: Alles auswählen
shell ("c:\programme\playerwasweissich.exe" ,3 , "'c:\meine_DVDs\SchoensterFilm.avi'")
g
g
LucidLynx/WinXP LibreOffice v3.3.2 ab 03/12 v3.3.2 & v3.4.5
LucidLynx/WinXP LibreOffice v3.3.2 ab 03/12 v3.3.2 & v3.4.5
-
- *
- Beiträge: 15
- Registriert: Di, 15.09.2009 12:31
Re: Datei mit Datensatz verlinken
Danke erstmal für die Antwort - und hier gleich die blöde Frage hinterher: Wenn ich bei der Schaltfläche unter Ereignisse "Maustaste gedrückt" dann das Makro zuweise und es ausführe, kommt die Fehlermeldung: "URL seems to be an unsupported one". Das liegt ja nun wahrscheinlich daran, dass ich natürlich gar keine URL eingegeben habe.
In einem Makro macht es ja auch keinen Sinn, hier den Pfad genau einzugeben, oder? Das Makro soll ja nach dem Pfad fragen und diesen dann im Datensatz speichern.
Also, der Plan ist folgender: ich habe im Formular eine Schaltfläche "Datei". Wenn ich einen neuen Datensatz anlege, sollte ich bei Klick auf diese Schaltfläche die entsprechende Datei auswählen können. Dieser Pfad soll dann im Datensatz gespeichert werden. Rufe ich dann den Datensatz auf, soll bei Klick auf die Schaltfläche "Datei" die unter dem Pfad gespeicherte Datei an den Player übergeben werden (unter Linux ja zumindest kein Problem, was Aufruf über Kommandozeile angeht).
Sorry, aber ich habe leider überhaupt keinen Plan von BASIC, vielleicht stelle ich mir das zu einfach vor.
Code: Alles auswählen
sURL = convertToUrl("Pfad zur Datei die Du öffnen willst")
Also, der Plan ist folgender: ich habe im Formular eine Schaltfläche "Datei". Wenn ich einen neuen Datensatz anlege, sollte ich bei Klick auf diese Schaltfläche die entsprechende Datei auswählen können. Dieser Pfad soll dann im Datensatz gespeichert werden. Rufe ich dann den Datensatz auf, soll bei Klick auf die Schaltfläche "Datei" die unter dem Pfad gespeicherte Datei an den Player übergeben werden (unter Linux ja zumindest kein Problem, was Aufruf über Kommandozeile angeht).
Sorry, aber ich habe leider überhaupt keinen Plan von BASIC, vielleicht stelle ich mir das zu einfach vor.
Re: Datei mit Datensatz verlinken
"Pfad zur Datei die Du öffnen willst" ist die Pfadangabe à la: "C:\videos\Film.avi". Diese musst Du natürlich vorher speichern. Videodateien würde ich aber nicht mit .loadComponentFromUrl öffnen, sondern üner das shell-Kommando.
Wie Du zu dem gespeicherten Pfad-String kommst findest Du z.B. hier:
http://www.dannenhoefer.de/faqstarbasic ... teein.html
g
Wie Du zu dem gespeicherten Pfad-String kommst findest Du z.B. hier:
http://www.dannenhoefer.de/faqstarbasic ... teein.html
g
g
LucidLynx/WinXP LibreOffice v3.3.2 ab 03/12 v3.3.2 & v3.4.5
LucidLynx/WinXP LibreOffice v3.3.2 ab 03/12 v3.3.2 & v3.4.5
-
- *
- Beiträge: 15
- Registriert: Di, 15.09.2009 12:31
Re: Datei mit Datensatz verlinken
Also, das automatische Aufrufen von vlc klappt schonmal prima - allerdings wird der im Feld "Datei" gespeicherte Pfad nicht übergeben - also auch kein Film gestartet. Habe in derselben DB ein Feld namens "IMDB", in dem eine URL zu ebendieser (Internet Movie DB) eingegeben wird. Diese URL wird dann mit folgendem Makro auf Klick an den Standardbrowser übergeben:
Wie kommt also die Pfadangabe zum Player? Beim o.g. Beispiel macht das doch die letzte Zeile, oder?
Beim Hinweis auf den gespeicherten Pfad-String verstehe ich nur Bahnhof.
Code: Alles auswählen
oForm = ThisComponent.Drawpage.Forms.getByName( "MainForm" )
oFeld = oForm.getByName( "IMDB" )
starten = createUnoService("com.sun.star.system.SystemShellExecute")
starten.execute( ConvertToUrl( oFeld.text() ), "", 0)
Beim Hinweis auf den gespeicherten Pfad-String verstehe ich nur Bahnhof.
4.2.1 Wie erhält die im Formular ausgewählten Werte eines Datensatzes?
Der Zugriff auf den im Formular aktuell ausgewählten Datensatz erfolgt wie bei einem resultset. Nur das hier das Resultset direkt das Formular ist. Der aktuelle Datensatz ist innerhalb des Formulares eine Zeile mit den entsprechenden Spalten des Datensatzes. Der Zugriff erfolgt dann mit get(typ) und der Spaltenangabe.
odoc=thiscomponent
oform=odoc.drawpage.forms.getbyindex(0)
myselect=oform.getstring(1)
Die Spaltenzählung beginnt wie bei Resultset mit 1.
Re: Datei mit Datensatz verlinken
ConvertToUrl verwandelt einen Pfad-String in eine URL... wenn "oFeld.text()" der Pfad & Dateiname Deiner Datei ist, hast Du's geschafft...
g
g
g
LucidLynx/WinXP LibreOffice v3.3.2 ab 03/12 v3.3.2 & v3.4.5
LucidLynx/WinXP LibreOffice v3.3.2 ab 03/12 v3.3.2 & v3.4.5
-
- *
- Beiträge: 15
- Registriert: Di, 15.09.2009 12:31
Re: Datei mit Datensatz verlinken
Sooo,
habe jetzt folgendes Makro angelegt:
Bringt natürlich nichts, aber so wird immerhin vlc aufgerufen, wenn auch ohne Parameter. Mache ich folgendes, kommt die Fehlermeldung "Eigenschaft oder Methode nicht gefunden" und vlc wird nicht gestartet:
Grundsätzlich müsste ich doch auf dem richtigen Weg sein, oder?
habe jetzt folgendes Makro angelegt:
Code: Alles auswählen
oForm = ThisComponent.Drawpage.Forms.getByName( "MainForm" )
oFeld = oForm.getByName( "Datei" )
starten = shell("vlc",3, (oFeld))
Code: Alles auswählen
oForm = ThisComponent.Drawpage.Forms.getByName( "MainForm" )
oFeld = oForm.getByName( "Datei" )
starten = shell("vlc",3, (oFeld.getString()))
Re: Datei mit Datensatz verlinken
zum Testen des Übergabeparameters:
oder mit:
sUebergabeParameter = "'" + oFeld.getString() + "'"
oder mit:
sUebergabeParameter = """" + oFeld.getString() + """"
vielleicht hilft das weiter:
http://www.computervideos.eu/videolan-v ... zeile.html
(Das Teil scheint ja richtig fähig zu sein ...)
Wenn in einem Terminal/command shell der Befehl zum gewünschten Ergebnis führt dann sollte es auch aus Base heraus funktionieren
g
Code: Alles auswählen
Dim sUebergabeParameter as String
oForm = ThisComponent.Drawpage.Forms.getByName( "MainForm" )
oFeld = oForm.getByName( "Datei" )
sUebergabeParameter = oFeld.getString()
msgbox "Uebergabe-Parameter an vlc: " + sUebergabeParameter
starten = shell("vlc",3, sUebergabeParameter)
sUebergabeParameter = "'" + oFeld.getString() + "'"
oder mit:
sUebergabeParameter = """" + oFeld.getString() + """"
vielleicht hilft das weiter:
http://www.computervideos.eu/videolan-v ... zeile.html
(Das Teil scheint ja richtig fähig zu sein ...)
Wenn in einem Terminal/command shell der Befehl zum gewünschten Ergebnis führt dann sollte es auch aus Base heraus funktionieren
jaGrundsätzlich müsste ich doch auf dem richtigen Weg sein, oder?
g
g
LucidLynx/WinXP LibreOffice v3.3.2 ab 03/12 v3.3.2 & v3.4.5
LucidLynx/WinXP LibreOffice v3.3.2 ab 03/12 v3.3.2 & v3.4.5
-
- *
- Beiträge: 15
- Registriert: Di, 15.09.2009 12:31
Re: Datei mit Datensatz verlinken
Habe das mal probiert, aber die Übergabe klappt immer noch nicht. Es kommt für folgende Zeile wieder die Meldung "Eigenschaft oder Methode nicht gefunden", auch wenn ich die Varianten benutze.
Eine Message-Box bekomme ich auch nur, wenn ich den Pfad zur Datei direkt eingebe. Dann wird auch vlc aufgerufen, das Video startet allerdings nicht und lässt sich auch nicht von Hand starten (aber das ist wohl ein anderes Problem - eins nach dem anderen). Ups, geht doch - Pfad wird ohne "file:" angegeben...
Die Frage ist doch, wieso das ganze bei der Übergabe der URL zu Firefox klappt und hier nicht. Warum wird mit "oFeld" hier nicht der Pfad übergeben, wenn er bei der bei der IMDB-Verlinkung sogar den Pfad erst in eine URL umwandeln muss?
Eieiei, komplizierte Angelegenheit - ich hätte vielleicht damals vor 25 Jahren doch besser im BASIC-Grundkurs aufpassen sollen
. Ich habe das ganze eben noch einmal mit meiner Papyrus-Datenbank unter Windows probiert - mit zwei Klicks hatte ich es so, wie ich wollte! Schade, dass mir das unter Linux nichts nützt - und zu Windows zurück will ich wirklich nicht mehr.
Ich bleibe auf jeden Fall dran!
Code: Alles auswählen
sUebergabeParameter = oFeld.getString()
Die Frage ist doch, wieso das ganze bei der Übergabe der URL zu Firefox klappt und hier nicht. Warum wird mit "oFeld" hier nicht der Pfad übergeben, wenn er bei der bei der IMDB-Verlinkung sogar den Pfad erst in eine URL umwandeln muss?
Eieiei, komplizierte Angelegenheit - ich hätte vielleicht damals vor 25 Jahren doch besser im BASIC-Grundkurs aufpassen sollen

Ich bleibe auf jeden Fall dran!
Re: Datei mit Datensatz verlinken
Wenn oFeld die Methode nicht hat, kann sie auch nicht ausgeführt werdentherealfassi hat geschrieben:Habe das mal probiert, aber die Übergabe klappt immer noch nicht. Es kommt für folgende Zeile wieder die Meldung "Eigenschaft oder Methode nicht gefunden", auch wenn ich die Varianten benutze.
Code: Alles auswählen
sUebergabeParameter = oFeld.getString()

Mach mal eine Schaltfläche in Deinem Fromular und weise dem Button dann folgendes Makro zu:
Code: Alles auswählen
sub FormFelderAuslesen
odoc=thiscomponent
oform=odoc.drawpage.forms.getbyindex(0)
n=1
do until oform.getstring(n)=""
myselect=oform.getstring(n)
msgbox "Index: " + n + " ergibt: " + myselect
n=n+1
loop
end sub
Code: Alles auswählen
Dim sUebergabeParameter as String
odoc=thiscomponent
oform=odoc.drawpage.forms.getbyindex(0)
sUebergabeParameter = oform.getstring(n)
starten = shell("vlc", 3, sUebergabeParameter)
... klar, weil der Fehler von oben ja nicht auftritt...therealfassi hat geschrieben: Eine Message-Box bekomme ich auch nur, wenn ich den Pfad zur Datei direkt eingebe. Dann wird auch vlc aufgerufen, das Video startet allerdings nicht und lässt sich auch nicht von Hand starten (aber das ist wohl ein anderes Problem - eins nach dem anderen). Ups, geht doch - Pfad wird ohne "file:" angegeben...
Weil FF ein Browser ist und die URL interpretiert. Wenn Du vlc als Plugin im Browser laufen hast wird FF bei jeder URL die auf eine Datei verweist die vlc abspielen kann die Datei auch mit vlc öffnen ... das macht vlc auch ohne Browser aber die Übergabe des Parameters muss schon korrekt erfolgen.therealfassi hat geschrieben: Die Frage ist doch, wieso das ganze bei der Übergabe der URL zu Firefox klappt und hier nicht. Warum wird mit "oFeld" hier nicht der Pfad übergeben, wenn er bei der bei der IMDB-Verlinkung sogar den Pfad erst in eine URL umwandeln muss?
g
g
LucidLynx/WinXP LibreOffice v3.3.2 ab 03/12 v3.3.2 & v3.4.5
LucidLynx/WinXP LibreOffice v3.3.2 ab 03/12 v3.3.2 & v3.4.5
-
- *
- Beiträge: 15
- Registriert: Di, 15.09.2009 12:31
Re: Datei mit Datensatz verlinken
JUHU!
Unglaublich, aber wahr. Das war der Trick.:
Interessant, das über den Indexwert laufen zu lassen - aber dazu ist ein Index ja im Grunde auch da.
Ganz, ganz lieben Dank - jetzt kann die Arbeit beginnen (über 1000 DVDs rippen und in die DB verfrachten).

Unglaublich, aber wahr. Das war der Trick.:
Code: Alles auswählen
Dim sUebergabeParameter as String
odoc=thiscomponent
oform=odoc.drawpage.forms.getbyindex(0)
sUebergabeParameter = oform.getstring(n)
starten = shell("vlc", 3, sUebergabeParameter)

Ganz, ganz lieben Dank - jetzt kann die Arbeit beginnen (über 1000 DVDs rippen und in die DB verfrachten).