von Scalaia990 » Sa, 26.12.2009 22:20
Hi,
Habe beim Registrieren von Datenquellen ein ähnliches Problem gehabt, habe das Problem mit dem Auslesen über den FilePicker gelöst.
Function GetAFileName
Dim oDlgOpenFile as Object
Dim iAccept as Integer
Dim sPath as String
Dim InitPath as String
Dim RefControlName as String
Dim oUcb as object
' GlobalScope.BasicLibraries.LoadLibrary("Tools")
oDlgOpenFile = CreateUnoService("com.sun.star.ui.dialogs.FilePicker")
if nSteuer = 1 then oDlgOpenFile.setTitle("Datenquelle Registrieren")
if nSteuer = 3 then oDlgOpenFile.setTitle("Datenquelle Austauschen")
oUcb = createUnoService("com.sun.star.ucb.SimpleFileAccess")
oDlgOpenFile.appendFilter( "Unterstützte Formate","*.ods; *.xls; *.txt; *.csv;*.mdb;*.odb" )
oDlgOpenFile.appendFilter( "Calc-Dateien (ods)","*.ods" )
oDlgOpenFile.appendFilter( "Excel-Dateien (xls)","*.xls" )
oDlgOpenFile.appendFilter( "Access-Dateien (mdb)","*.mdb" )
oDlgOpenFile.appendFilter( "base-Dateien (odb)","*.mdb" )
oDlgOpenFile.appendFilter( "CSV-Dateien (csv)","*.csv;*.txt" )
oDlgOpenFile.appendFilter( "Alle","*.*" )
' AddFiltersToDialog(FilterNames(), oDlgOpenFile)
' *** InitPath setzen von Vorägner
If InitPath = "" Then
InitPath = ConvertToUrl(environ("USERPROFILE")&"\Eigene Dateien")
End If
If oUcb.Exists(InitPath) Then
oDlgOpenFile.SetDisplayDirectory(InitPath)
End If
iAccept = oDlgOpenFile.Execute()
If iAccept = 1 Then
sPath = oDlgOpenFile.Files(0)
GetAFileName = sPath
End If
GetAFileName = ConvertFromUrl(sPath)
oDlgOpenFile.Dispose()
End Function
Beim Festlegen des Dateinamens gehe ich hin und suche einfach nach dem letzen "\" (Win)
Function SoZeichRep(ZKette)
Dim a(5) as String
Dim b(5) as String
b(1) = "_"
b(2) = "_"
b(3) = "_"
b(4) = "_"
b(5) = ""
a(1) = "\"
a(2) = "."
a(3) = " "
a(4) = "/"
a(5) = ":"
nGesLaenge = Len(ZKette)
for l = 1 to nGesLaenge
x = 0
for i = 1 to 5
Laenge = Len(ZKette)
c = Left(ZKette, 1)
' Das ist die Entscheidende Abfrage für Dich
if c = a(1) then
nDatLaenge = Laenge -1
Endif
if c = a(i) then
snZKette = snZKette & b(i)
x = 1
Endif
next i
if x = 0 then snZKette = snZKette & c
if Len(ZKette) > 1 then
ZKette = Right(ZKette, Len(ZKette)-1)
end if
Next l
SoZeichRep = snZKette
end Function
Im Aufrufenden Modul einfach dann
sDQName = right(sDBName, nDatLaenge)
Bitte Beachte ich ersetzte dabei noch mehr Zeichen durch "_" da ich den Dateinamen anschließend als Datenquellename verwenden möchte da sind gewisse Zeichen einfach störend. Aber Das Prinzip dürfte klar sein. Das Ganze ist aus einer Prodzedur entnommen mit der ich über einen eigenen Dialog Datenquellen registrieren kann und auch auf fremden PC's wo die Quelle nicht registriert ist diese ausfindig machen und registrieren kann.
Gruss
Scaleia990
Hi,
Habe beim Registrieren von Datenquellen ein ähnliches Problem gehabt, habe das Problem mit dem Auslesen über den FilePicker gelöst.
Function GetAFileName
Dim oDlgOpenFile as Object
Dim iAccept as Integer
Dim sPath as String
Dim InitPath as String
Dim RefControlName as String
Dim oUcb as object
' GlobalScope.BasicLibraries.LoadLibrary("Tools")
oDlgOpenFile = CreateUnoService("com.sun.star.ui.dialogs.FilePicker")
if nSteuer = 1 then oDlgOpenFile.setTitle("Datenquelle Registrieren")
if nSteuer = 3 then oDlgOpenFile.setTitle("Datenquelle Austauschen")
oUcb = createUnoService("com.sun.star.ucb.SimpleFileAccess")
oDlgOpenFile.appendFilter( "Unterstützte Formate","*.ods; *.xls; *.txt; *.csv;*.mdb;*.odb" )
oDlgOpenFile.appendFilter( "Calc-Dateien (ods)","*.ods" )
oDlgOpenFile.appendFilter( "Excel-Dateien (xls)","*.xls" )
oDlgOpenFile.appendFilter( "Access-Dateien (mdb)","*.mdb" )
oDlgOpenFile.appendFilter( "base-Dateien (odb)","*.mdb" )
oDlgOpenFile.appendFilter( "CSV-Dateien (csv)","*.csv;*.txt" )
oDlgOpenFile.appendFilter( "Alle","*.*" )
' AddFiltersToDialog(FilterNames(), oDlgOpenFile)
' *** InitPath setzen von Vorägner
If InitPath = "" Then
InitPath = ConvertToUrl(environ("USERPROFILE")&"\Eigene Dateien")
End If
If oUcb.Exists(InitPath) Then
oDlgOpenFile.SetDisplayDirectory(InitPath)
End If
iAccept = oDlgOpenFile.Execute()
If iAccept = 1 Then
sPath = oDlgOpenFile.Files(0)
GetAFileName = sPath
End If
GetAFileName = ConvertFromUrl(sPath)
oDlgOpenFile.Dispose()
End Function
Beim Festlegen des Dateinamens gehe ich hin und suche einfach nach dem letzen "\" (Win)
Function SoZeichRep(ZKette)
Dim a(5) as String
Dim b(5) as String
b(1) = "_"
b(2) = "_"
b(3) = "_"
b(4) = "_"
b(5) = ""
a(1) = "\"
a(2) = "."
a(3) = " "
a(4) = "/"
a(5) = ":"
nGesLaenge = Len(ZKette)
for l = 1 to nGesLaenge
x = 0
for i = 1 to 5
Laenge = Len(ZKette)
c = Left(ZKette, 1)
' Das ist die Entscheidende Abfrage für Dich
if c = a(1) then
nDatLaenge = Laenge -1
Endif
if c = a(i) then
snZKette = snZKette & b(i)
x = 1
Endif
next i
if x = 0 then snZKette = snZKette & c
if Len(ZKette) > 1 then
ZKette = Right(ZKette, Len(ZKette)-1)
end if
Next l
SoZeichRep = snZKette
end Function
Im Aufrufenden Modul einfach dann
sDQName = right(sDBName, nDatLaenge)
Bitte Beachte ich ersetzte dabei noch mehr Zeichen durch "_" da ich den Dateinamen anschließend als Datenquellename verwenden möchte da sind gewisse Zeichen einfach störend. Aber Das Prinzip dürfte klar sein. Das Ganze ist aus einer Prodzedur entnommen mit der ich über einen eigenen Dialog Datenquellen registrieren kann und auch auf fremden PC's wo die Quelle nicht registriert ist diese ausfindig machen und registrieren kann.
Gruss
Scaleia990