Hi Leute,
ich bin neu im Forum und auch unter den Nutzern von Datenbanksystemen. Deshalb entschuldigt falls meine Fragen etwas ... naja schwammig formuliert und vielleicht Newbe-like sind.
Also, zu meinem Vorhaben:
Ich möchte eine Datenbank erstellen in der ich alle Papers die ich lese festhalten kann, mir stichpunkte hinterlasse und auch einen Link auf die Datei eintrage. Das mit dem link habe ich schon rausgefunden. Da muss ich mich wohl noch etwas mit Macro's auseinander setzen.
Was mich im moment noch interessiert sind folgende Dinge:
1. Wenn ich ein Feld mit dem Eintragsdatum mache, wie kann ich es automatisieren sodass dort immer gleich der aktuelle Tag und die Uhrzeit drin stehen?
2. Kann ich ein Textfeld (so ähnlich wie das Memo-feld) machen welches dann auch über grundlegendste Formatierungsfunktionen verfügt (also sowas wie aufzählungen, nummerierungen, dick schreiben usw.)
3. Meine wichtigste Frage: Ich habe das Feld "Dateiauswahl" gefunden was es mir erlaubt eine Datei zu suchen und zu öffnen. Dann wird auch der Pfad im entsprechenden Feld angezeigt. Leider habe ich noch 2 Probleme.
a) Irgendwie kann ich nicht wie bei anderen Feldtypen unter "Kontrollfeld", "Daten" auswählen das der entsprechende Eintrag in die Datenbank gespeichert werden soll. Weis jemand wieso das nicht geht und wie ich das ändern kann?
b) Das Dateiauswahl-Feld trägt mir automatisch den absoluten Dateipfad ein. Lässt sich da auch was drehen, das es den relativen Pfad in Bezug auf die Datenbank verwendet? Ich hoffe das ich in kombination mit dem Macro dann auch dafür sorgen kann das sich die Datei direkt aus einem Formular heraus öffnen lässt. Auf diese Weise ließe sich der Gesamte Datenbestand nämlich auch sehr einfach auf einen anderen Computer übertragen.
Schonmal VIELEN VIELEN DANK für eure Hilfe!
Grüße AureusPhoenix!
Datei- bzw. Dateipfad in Datenbank einlesen
Moderator: Moderatoren
-
- Beiträge: 2
- Registriert: Sa, 26.12.2009 18:47
-
- ***
- Beiträge: 76
- Registriert: Mi, 29.04.2009 23:50
Re: Datei- bzw. Dateipfad in Datenbank einlesen
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
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
-
- Beiträge: 2
- Registriert: Sa, 26.12.2009 18:47
Re: Datei- bzw. Dateipfad in Datenbank einlesen
Wow ...
Also wie gesagt, ich bin anfänger. Wenn keiner ne einfachere Lösung hat werde ich wohl ne weile da dran zu kauen haben ehe ich alles kapiert und hinbekommen habe.
Also wie gesagt, ich bin anfänger. Wenn keiner ne einfachere Lösung hat werde ich wohl ne weile da dran zu kauen haben ehe ich alles kapiert und hinbekommen habe.