Datei- bzw. Dateipfad in Datenbank einlesen

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

AureusPhoenix
Beiträge: 2
Registriert: Sa, 26.12.2009 18:47

Datei- bzw. Dateipfad in Datenbank einlesen

Beitrag von AureusPhoenix »

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!
Scalaia990
***
Beiträge: 76
Registriert: Mi, 29.04.2009 23:50

Re: Datei- bzw. Dateipfad in Datenbank einlesen

Beitrag von Scalaia990 »

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
AureusPhoenix
Beiträge: 2
Registriert: Sa, 26.12.2009 18:47

Re: Datei- bzw. Dateipfad in Datenbank einlesen

Beitrag von AureusPhoenix »

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