PDF Datei aus Datenbank öffnen

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

sirpete83
*
Beiträge: 10
Registriert: Mo, 13.02.2006 22:33

PDF Datei aus Datenbank öffnen

Beitrag von sirpete83 »

Hallo alle zusammen,
ich habe mir eine kleine Datenbank für meine Elektronikbauteile angelegt. Dort habe ich ein Datenfeld, welches den namen einer PDF Datei enthält. Diese Datei ist das Datenblatt zu dem Aktuell angezeigtem Bauelement.
Die Datenbank befindet sich in einem Verzeichnis das soll frei wählbar bleiben, die Datenblätter bzw. PDF Dateien befinden sich im gleichen Verzeichnis wie die Datenbank jedoch im Unterverzeichnis \Data\ ... Beispiel: \Data\74HC02.pdf .... im Datenfeld steht nur 74HC02.pdf
Beim klick auf das Textfeld oder auch auf einen Button soll die PDF geöffnet werden.

Vielleicht mit einem BASIC Script? Habe damit aber noch nie was gemacht.

Danke Gruß Peter
sirpete83
*
Beiträge: 10
Registriert: Mo, 13.02.2006 22:33

Re: PDF Datei aus Datenbank öffnen

Beitrag von sirpete83 »

Hallo alle zusammen,
vielleicht habe ich es etwas umständlich beschrieben. Also der Tastendruck soll dann den Adobe Reader starten mit der Datei. ...
also möglichst einfach.

Gruß Peter
sirpete83
*
Beiträge: 10
Registriert: Mo, 13.02.2006 22:33

Re: PDF Datei aus Datenbank öffnen

Beitrag von sirpete83 »

Hi,

habe noch immer keine Lösung, aber vielleicht eine Idee.

Zurzeit habe ich mein Inventar in einer Tabellenkalkulation, dort habe ich ein Feld mit dem Text Datanblatt, auf diesem Text liegt der Hyperlink file:///D:/DATA/xyz.PDF
Naja jetzt bräuchte ich nur die nötigen Basic Befehle um die Felder auszulesen und dann den hyperlink zusammenzusetzen und zu starten.

Gruß Peter
Mobbi
**
Beiträge: 23
Registriert: Do, 11.12.2008 21:52

Re: PDF Datei aus Datenbank öffnen

Beitrag von Mobbi »

Hallo Peter

ich habe ein so ähnliche Problem.
Bei mir geht es darum aus einem Dialog oder bestimmte Dateien zu starten (z.B PDF-Datei. oder CAD-File)
Das Problem scheint zu sein, dass man in OOO keine nicht Text/Tabellen-Dokumente starten kann.
Ich hab zumindest noch nicht herausgefunden wie ich z.B. eine "Zeichnung.dwg" starten kann und diese mit der entsprechenden Anwendung startet.

Es könnte aber evtl mit der Shell-Anweisung gehen. Mit der kann ich fremde Anwendungen starten und auch Parameter übergeben.
Hier mal ein Sub was den Explorer startet.

Code: Alles auswählen

Sub ExampleShellForWin
Shell("c:\windows\explorer.exe",2)
end sub
vielleicht hilft das ja schon weiter

Gruss Mobbi
Mobbi
**
Beiträge: 23
Registriert: Do, 11.12.2008 21:52

Re: PDF Datei aus Datenbank öffnen

Beitrag von Mobbi »

Hallo Peter,

habe inzwischen noch ein wenig mit unserem Problem gebastelt
sirpete83 hat geschrieben: Zurzeit habe ich mein Inventar in einer Tabellenkalkulation, dort habe ich ein Feld mit dem Text Datanblatt, auf diesem Text liegt der Hyperlink file:///D:/DATA/xyz.PDF
Naja jetzt bräuchte ich nur die nötigen Basic Befehle um die Felder auszulesen und dann den hyperlink zusammenzusetzen und zu starten.
Der Ansatz über die Shell funktioniert.
Der Aufruf von

Code: Alles auswählen

Sub ExampleShellForWin
  Shell("c:\windows\explorer.exe",2)
end sub
startet aber nur die Anwendung. Und die kann auf verschiedenen Rechnern an anderen Orten liegen.
Vergiss das also wieder.

Versuchs mal mit den folgenden Zeilen

Code: Alles auswählen

Sub ExtPDF_Starten
  set extShell = CreateObject("Shell.Application")
  extShell.Open "d:\test\Zeichnung.pdf" 
  'extShell.Open "d:\test\archiv.dwg"
end sub
Diese Codezeilen starten die Datei "Zeichnungen.pdf" automatisch im AdobeReader.
Das geht natürlich auch mit anderen Anwendungen z.B. CAD-Programme

:-) Damit bekomme ich endlich mein Projektverwaltung fertig und kann direkt von dort alle Dateien öffen (ging bisher nur mit OOO-Files)

viel Spaß beim probieren

Gruss Mobbi
sirpete83
*
Beiträge: 10
Registriert: Mo, 13.02.2006 22:33

Re: PDF Datei aus Datenbank öffnen

Beitrag von sirpete83 »

Hallo Mobbi,

vielen dank für deine Antworten und Ideen, werde das heute mal testen.

Was mir jetzt nur noch fehlt ist wie ich den Dateinamen als Variable bekomme. Also entweder aus dem Textfeld im formblatt oder aber direkt aus der Datenbank, um damit dann den Datei-Pfad zusammen zu bauen.

Gruß Peter
Mobbi
**
Beiträge: 23
Registriert: Do, 11.12.2008 21:52

Re: PDF Datei aus Datenbank öffnen

Beitrag von Mobbi »

sirpete83 hat geschrieben: Was mir jetzt nur noch fehlt ist wie ich den Dateinamen als Variable bekomme. Also entweder aus dem Textfeld im formblatt oder aber direkt aus der Datenbank, um damit dann den Datei-Pfad zusammen zu bauen.
Ich verstehe die Frage nicht so ganz.
Willst du den Dateinamen
1. aus der Zelle des Tabellenblattes auslesen oder
2. aus einen Textfeld in deinem Dialog/Formular?
Beides ist relativ einfach:

zu 1.

Code: Alles auswählen

oDoc = thisComponent
  VorSheet=oDoc.Sheets.getByName("Tabelle1")
  sZelle = VorSheet.getCellRangeByName("A3").getString
zu 2.

Code: Alles auswählen

 Inhalt =oDialog.getControl("TextField1").Text   'Falls die Werte z.B. in einer Textfeld stehen.
Ich bin mir aber nicht sicher ob Du das wirklich suchst.

Gruss Mobbi
Mobbi
**
Beiträge: 23
Registriert: Do, 11.12.2008 21:52

Re: PDF Datei aus Datenbank öffnen

Beitrag von Mobbi »

Schroebi hat geschrieben: Eine Frage noch, gibt es da auch einen Trick das die Leerstellen im Dateinamen "übersehen" werden.
Bei mir reicht es aus wenn ich den Dateinamen in anführungszeichen"" setze. Auch dann wenn du Eine Variable übergibst.
Sollte dann in etwa so aussehen:

Code: Alles auswählen

Sub Test
  set extShell = CreateObject("Shell.Application")
  sfile = "Neu Textdatei.txt"
  extShell.Open "d:\Test\" &sFile
End Sub
BJay
Beiträge: 1
Registriert: Fr, 19.06.2009 15:55

Re: PDF Datei aus Datenbank öffnen

Beitrag von BJay »

Hallo,

ich war schon seit längerem auf der Suche nach einer Lösung für das Problem, das ihr in diesem Thread beschreibt.
Leider kriege ich es nicht hin Mobbis Lösungsvorschläge zu kombinieren.
Mobbi hat geschrieben: Sub ExtPDF_Starten
set extShell = CreateObject("Shell.Application")
extShell.Open "d:\test\Zeichnung.pdf"
'extShell.Open "d:\test\archiv.dwg"
end sub
Soweit kein Problem.
"d:\test\Zeichnung.pdf" habe ich versucht, durch den Inhalt eines Textfeldes im Formular mit dem Namen "TextBox" zu ersetzen.
Ich komme aber mit dem Befehl
Mobbi hat geschrieben:Inhalt =oDialog.getControl("TextField1").Text
nicht zurecht.

Kann mir jemand weiterhelfen?

Gruß BJay
Mobbi
**
Beiträge: 23
Registriert: Do, 11.12.2008 21:52

Re: PDF Datei aus Datenbank öffnen

Beitrag von Mobbi »

BJay hat geschrieben:
Soweit kein Problem.
"d:\test\Zeichnung.pdf" habe ich versucht, durch den Inhalt eines Textfeldes im Formular mit dem Namen "TextBox" zu ersetzen.
Ich komme aber mit dem Befehl
Mobbi hat geschrieben:Inhalt =oDialog.getControl("TextField1").Text
nicht zurecht.
Diese Zeile ist eine Makroanweisung bei der Auswertung eines Dialoges (siehe Beispiel)

Code: Alles auswählen

Dim oDialog as Object			' Variable für Dialog1
Sub OKTaste
 'Daten aus Dialog auslesen ------------------------
  BV = odialog.getControl("TextField1").text			
  Verl = odialog.getControl("TextField2").text
  Bear = odialog.getControl("ComboBox2").text
  Inhalt = odialog.getControl("TextField3").text
  ...
In diesem Beispiel wird bei Betätigung der OKTaste der Inhalt der versch. Felder des Dialoges (Textfield1, Textfield2 ...) in Variablen übernommen.
odialog ist das Objekt welches den Dialog enthält. (Der Dialog selbst wir bei mir in einem anderen Makro erzeugt und gestartet)
mit getControl("Textfield1").text bekommst Du den Textinhalt des Dialogfeldes "Textfield1")

Ich hoffe das hilft Dir erstmal weiter

Gruß
Mobbi
Mobbi
**
Beiträge: 23
Registriert: Do, 11.12.2008 21:52

Re: PDF Datei aus Datenbank öffnen

Beitrag von Mobbi »

Wenn ich dich richtig verstanden habe soll der Curser irgendwo in der Tabelle stehen und die dabei "aktuelle Zeile" soll dann auch die Zeile sein aus der dein Marko die Referenzadresse für das PDF nimmt!
z.B. PDF-Referenzen stehen in Spalte D; Curser steht auf "B5"; Dann soll aus Zelle D5 der Pfad für die Datei kommen sobald du auf PDF öffnen klickst?

Das gehört zwar in nen anderen Bereich aber versuch es mal mit .getCurrentSelection() ...
etwa so:

Code: Alles auswählen

Sub Curserpos_Zeile
  Dim oDoc as Object  	' das Dokument
  DIM oZelle as Object  'Das Zell-Objekt
  Dim Ze as Integer
  oDoc = ThisComponent
  oZelle = oDoc.getCurrentSelection()		
  'Abfrage Multiselektion	
  If Not oZelle.supportsService("com.sun.star.sheet.SheetCell") then	'Mehrere Zellen markiert			
	  msgbox("Bitte max. 1 Zelle auswählen!")
      exit Sub 	
  End if
   Ze = lTrim(Str(oZelle.CellAddress.row +1))				'Zeilenpos  bestimmen
  Msgbox( "Zeile : " &Ze)
End Sub
und dann nur noch die Zelle Dx (x= ermittlete Zeile) auslesen und an an die Shell übergeben.
Gruß
Mobbi
Antworten