ich habe eine SQL-Datenbank auf meinem Server, die ich über Base von einem PC bearbeite mit LO 7.3.7.2 unter Kubuntu 22.10.
Das dafür erstellte Formular funktioniert auch wunderbar, auch Bilder und PDF-Dokumente bekomme ich verlinkt mit Vorschau. Für die PDF-Dokumente habe ich zusätzlich einen Button gemacht bzw. aus der Beispieldatenbank übernommen, welcher via Makro das PDF-Dokument in einem auf dem PC installierten Programm anzeigen soll. Das Makro habe ich meinen Gegebenheiten angepasst (Formular- und Feldnamen).
Wenn ich jetzt bei einem Formular mit einem PDF-Dokument den Button anklicke (angelegt mit Aktion ausführen: Standard.Module1.DateiAuslesen_mitName (document, Basic)), kommt folgende Meldung:
Code: Alles auswählen
BASIC-Laufzeitfehler.
Eigenschaft oder Methode nicht gefunden: Text.
Code: Alles auswählen
REM ***** BASIC *****
SUB Betrachten
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oFeld AS OBJECT
DIM oShell AS OBJECT
DIM stUrl AS STRING
DIM stFeld AS STRING
DIM arUrl_Start()
oDoc = thisComponent
oDrawpage = oDoc.Drawpage
REM Lage des Feldes in dem entsprechenden Formular aufsuchen
oForm = oDrawpage.Forms.getByName("HausratMain")
oFeld = oForm.getByName("GraphischesFeld")
stUrl = oFeld.BoundField.getString
REM Start des Files mit der entsprechenden URL-Verbindung
arUrl_Start = split(oDoc.Parent.Url,oDoc.Parent.Title)
oShell = createUnoService("com.sun.star.system.SystemShellExecute")
stFeld = convertToUrl(arUrl_Start(0) + stUrl)
oShell.execute(stFeld,,0)
END SUB
SUB DateiAuslesen
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oFeld AS OBJECT
DIM oStream AS OBJECT
DIM oShell AS OBJECT
DIM oPath AS OBJECT
DIM oSimpleFileAccess AS OBJECT
DIM st AS STRING
DIM stPfad AS STRING
DIM stFeld AS STRING
oDoc = thisComponent
oDrawpage = oDoc.Drawpage
REM Lage des Feldes in dem entsprechenden Formular aufsuchen
oForm = oDrawpage.Forms.getByName("HausratMain")
oFeld = oForm.getByName("Betrachten")
oStream = oFeld.BoundField.getBinaryStream
oPath = createUnoService("com.sun.star.util.PathSettings")
st = "" 'Je nach System könnte eine Endung der Datei notwendig sein
stPfad = oPath.Temp & "/DbDatei" & st
oSimpleFileAccess = createUnoService("com.sun.star.ucb.SimpleFileAccess")
oSimpleFileAccess.writeFile(stPfad, oStream)
oShell = createUnoService("com.sun.star.system.SystemShellExecute")
stFeld = convertToUrl(stPfad)
oShell.execute(stFeld,,0)
END SUB
SUB DateiAuslesen_mitName
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oFeld AS OBJECT
DIM oFeld2 AS OBJECT
DIM oStream AS OBJECT
DIM oShell AS OBJECT
DIM oPath AS OBJECT
DIM oSimpleFileAccess AS OBJECT
DIM stName AS STRING
DIM stPfad AS STRING
DIM stFeld AS STRING
oDoc = thisComponent
oDrawpage = oDoc.Drawpage
REM Lage des Feldes in dem entsprechenden Formular aufsuchen
oForm = oDrawpage.Forms.getByName("HausratMain")
oFeld = oForm.getByName("Betrachten")
oFeld2 = oForm.getByName("rechnung")
stName = oFeld2.Text
IF stName = "" THEN
stName = "DbDatei"
END IF
oStream = oFeld.BoundField.getBinaryStream
oPath = createUnoService("com.sun.star.util.PathSettings")
stPfad = oPath.Temp & "/" & stName
oSimpleFileAccess = createUnoService("com.sun.star.ucb.SimpleFileAccess")
oSimpleFileAccess.writeFile(stPfad, oStream)
oShell = createUnoService("com.sun.star.system.SystemShellExecute")
stFeld = convertToUrl(stPfad)
oShell.execute(stFeld,,0)
END SUB
SUB DateiName
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oField AS OBJECT
DIM stImageUrl AS STRING
DIM stFile AS STRING
GlobalScope.BasicLibraries.LoadLibrary("Tools")
oDoc = thisComponent
oDrawpage = oDoc.Drawpage
oForm = oDrawpage.Forms.getByName("HausratMain")
oField = oForm.getByName("Betrachten")
stImageUrl = oField.ImageUrl
IF stImageUrl <> "" THEN
stFile = FileNameoutofPath(stImageUrl)
oForm.UpdateString(oForm.FindColumn("DateiName"), stFile)
END IF
END SUB
Danke für die Hilfe.
Gruß, CHristoph