[Gelöst] Datei mit Datensatz verlinken

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: [Gelöst] Datei mit Datensatz verlinken

Re: Datei mit Datensatz verlinken

von therealfassi » Do, 06.01.2011 18:50

JUHU! :D

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

Re: Datei mit Datensatz verlinken

von gogo » Do, 06.01.2011 13:22

therealfassi 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()
Wenn oFeld die Methode nicht hat, kann sie auch nicht ausgeführt werden ;) daher der Fehler.

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
Wenn Du den Index bei dem Dein Pfad angezeigt wird dann kennst setzt Du ihn in "oform.getstring(n)" statt 'n' ein und Du erhältst dann den String:

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)

Dein Formular basiert auf einer Tabelle oder Abfrage - zumindest etwas was Zeilen und Spalten hat. Angezeigt wird im Formular immer eine Zeile dieser Tabelle. Mit .getstring(n) erhältst Du den Wert der n-ten Spalte dieser Zeile. Wenn das Feld "Datei" die 3. Spalte dieser Tabelle ist dann erhältst Du mit .getstring(3) den Dateinamen...
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...
... klar, weil der Fehler von oben ja nicht auftritt...
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?
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.


g

Re: Datei mit Datensatz verlinken

von therealfassi » Do, 06.01.2011 11:34

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()
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!

Re: Datei mit Datensatz verlinken

von gogo » Mi, 05.01.2011 12:36

zum Testen des Übergabeparameters:

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)
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


Grundsätzlich müsste ich doch auf dem richtigen Weg sein, oder?
ja

g

Re: Datei mit Datensatz verlinken

von therealfassi » Mi, 05.01.2011 10:56

Sooo,

habe jetzt folgendes Makro angelegt:

Code: Alles auswählen

oForm = ThisComponent.Drawpage.Forms.getByName( "MainForm" )
oFeld = oForm.getByName( "Datei" )
starten = shell("vlc",3, (oFeld))
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:

Code: Alles auswählen

oForm = ThisComponent.Drawpage.Forms.getByName( "MainForm" )
oFeld = oForm.getByName( "Datei" )
starten = shell("vlc",3, (oFeld.getString()))
Grundsätzlich müsste ich doch auf dem richtigen Weg sein, oder?

Re: Datei mit Datensatz verlinken

von gogo » Di, 04.01.2011 21:09

ConvertToUrl verwandelt einen Pfad-String in eine URL... wenn "oFeld.text()" der Pfad & Dateiname Deiner Datei ist, hast Du's geschafft...

g

Re: Datei mit Datensatz verlinken

von therealfassi » Di, 04.01.2011 19:23

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:

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

von gogo » Di, 04.01.2011 18:21

"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

Re: Datei mit Datensatz verlinken

von therealfassi » Di, 04.01.2011 13:55

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.

Code: Alles auswählen

sURL = convertToUrl("Pfad zur Datei die Du öffnen willst")
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.

Re: Datei mit Datensatz verlinken

von gogo » Mo, 03.01.2011 11:31

".loadComponentFromUrl" ... versuch's mal so:

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())
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

Code: Alles auswählen

shell ("c:\programme\playerwasweissich.exe" ,3 , "'c:\meine_DVDs\SchoensterFilm.avi'")
ggf musst Du ein bisschen rumbasteln damit der übergebene Parameter auch korrekt ankommt

g

[Gelöst] Datei mit Datensatz verlinken

von therealfassi » So, 02.01.2011 15:08

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

Nach oben