Access-o-Mania

Access-Forum (Deutsch/German) => Access-Hilfe => Thema gestartet von: datekk am Juli 17, 2015, 10:51:04

Titel: Speicherplatz / Dateianhänge
Beitrag von: datekk am Juli 17, 2015, 10:51:04
Hallo. Ich würde gern in meine Datenbank Dateien aufnehmen (Grafiken / PDFs). Nun habe ich aber gelesen, dass der Speicherplatz auf 2 GB pro Datenbank begrenzt ist. Die werde ich dann relativ zügig erreicht haben. Gibt es irgend eine alternative?

Eine Alternative könnte ich mir so gut vorstellen: Ich ziehe via Drag&Drop eine Datei auf ein Feld der Access Datenbank. Die Datenbank ändert den Dateinamen z.B. in eine Kombination aus KundenID und Kundennamen ab und legt die Datei in einen Ordner und verlinkt den Datensatz nur mit dem Dateipfad.

Ist sowas möglich?
Titel: Re: Speicherplatz / Dateianhänge
Beitrag von: MzKlMu am Juli 17, 2015, 10:58:21
Hallo,
die Alternative solltest Du angehen.
Ob man Drag&Drop realisieren kann weiß ich allerdings nicht.
Die Erzeugung des Dateinamens aus der KundenID ist einfach. Den Kundennamen benötigst Du im Dateinamen nicht, die ID ist ja bereits eindeutig. Und der Aufruf der Datei erfolgt ja ohnehin über die ID.

Wenn ein Kunde mehrere Dateien hat, ist noch eine Tabelle für die Links zu den Dateien notwendig. Ist Dir das klar, bzw. hast Du das schon so ?
Titel: Re: Speicherplatz / Dateianhänge
Beitrag von: MaggieMay am Juli 17, 2015, 11:18:58
Hi,

anstelle von Drag&Drop könntest du einen Dateiauswahldialog anbieten.
Titel: Re: Speicherplatz / Dateianhänge
Beitrag von: datekk am Juli 17, 2015, 12:30:41
Also ich habe schon mit einer Art "Datei-Verwaltungs-Tabelle" gerechnet. So bekommen die Dateien einzelne IDs, welche dann der KundenID zugeordnet werden können, weil es vorkommt, dass mehrere Dateien pro Kunde anfallen.

Die Frage ist, wie kann so ein Auswahldialog erstellt werden (also optimaler Weise öffnet sich da ein Explorerfenster halt so wie man das kennt) und wie ändere ich Dateinamen um und speichere die ausgewählte Datei dann ab?

Drag und Drop wäre insoweit sinnvoll, da ich die Dateien per Email geliefert bekomme. Das zwischenspeichern würde dann entfallen. Ich könnte es dann via Outlook einfach rüber ziehen. Das wäre schon toll. Ich habe mal gelesen das es wohl eine Bibliothek mit erweiterten Steuerelementen gibt, welche das dann können. Aber auch hier die Frage nach dem WIE? :)
Titel: Re: Speicherplatz / Dateianhänge
Beitrag von: MaggieMay am Juli 17, 2015, 15:39:26
Zitatwie kann so ein Auswahldialog erstellt werden
Die Suche nach "Dateiauswahldialog" sollte hierzu brauchbare Treffer liefern. Speichern musst du die Datei dann doch nicht mehr, oder willst du sie an eine andere Stelle kopieren und dabei umbenennen?
Ich denke, die in Frage kommenden Dateien sollten sich bereits in einem geordneten File-System befinden.
Titel: Re: Speicherplatz / Dateianhänge
Beitrag von: daolix am Juli 17, 2015, 18:09:00
Hallo
DragDrop im einfachsten Fall ginge über ein Listview.  Dieses in ein Formular einfügen, OLEDropMode: auf ccOleDropManual und das event OLEDragDrop auswerten.
Private Sub ListView0_OLEDragDrop(Data As Object, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single)
    Dim v
    For Each v In Data.Files
        '<mach hier was du mit den einzelnen Dateien machen willst z.B.>
        '<VBA.FileSystem.FileCopy v, "Path+Name der neuen Datei">
    Next
End Sub


Titel: Re: Speicherplatz / Dateianhänge
Beitrag von: datekk am Juli 20, 2015, 14:32:32
Danke daolix, das funktioniert. Besten Dank. Leider kann ich aber keine Datein aus Outlook-Mailanhängen dort reinlegen. Ich bekomme hier den Fehler: Laufzeitfehler 461: Specified format doesn´t match format oder data.

Gibts dafür einen Workaround?
Titel: Re: Speicherplatz / Dateianhänge
Beitrag von: DF6GL am Juli 20, 2015, 14:41:48
Hallo,

der Workaround wäre, den Anhang als Datei auf dem Desktop zwischen zu speichern und die(se) Datei in das Listview zu ziehen....
Titel: Re: Speicherplatz / Dateianhänge
Beitrag von: daolix am Juli 20, 2015, 14:46:17
Hallo
für Daten aus Outlook musst du das Web-Steuerelement einsetzen, das funzt nicht mit dem Listview. Aber ich glaube, bin mir aber nicht sicher, das das Web-Dingens keine Events auslöst, das heißt u.U. muss noch eine Verzeichnisüberwachung (Timer oder WMI) geproggt werden. N'Bsp hab ich im Moment leider nicht.
Titel: Re: Speicherplatz / Dateianhänge
Beitrag von: datekk am Juli 20, 2015, 15:11:08
Ok dann vielen Dank an Euch für die Lösung der Fragestellung. :)

Eine Fragen aber hätte ich noch:

Wie lassen sich die reingezogenen Dateien mit Ihrem Ursprungsnamen speichern bzw. wie bekomme ich ggf. folgenden Dateinamen hin: bisherigerName_anlagenID.Kürzeldateityp (Beisp: Text1_1234567.docx)
Titel: Re: Speicherplatz / Dateianhänge
Beitrag von: daolix am Juli 20, 2015, 16:59:21
Hallo
die Frage verstehe ich jetzt nicht?
Titel: Re: Speicherplatz / Dateianhänge
Beitrag von: datekk am Juli 20, 2015, 17:49:26
Also ich mein das eigentlich genau so wie es da steht.

Wenn ich auf das Steuerelement via Drag & Drop eine Datei ziehe, so muss ich ja via VBA coden was dann damit passieren soll. Da ich gar keine Ahnung habe, welche Befehle ich brauche habe ich Dein Beispiel benutz.
ZitatVBA.FileSystem.FileCopy v, "Path+Name der neuen Datei"

Das habe ich dann ein bissi abgeändert und jetzt speichert Access die Datei in ein Vorgegebenes Verzeichnes und gibt der Datei den Namen der ID... Leider geht dabei aber das Kürzel für die Dateiart verloren. Also z.B. das ".pdf". Und da die Datentypen auch anders sein können, kann ich dieses Kürzel in der Formel nicht vorgeben. Der VBA Code muss irgendwie erkennen was das für eine Datei ist und meinetwegen dann die richtige Dateiendung wieder anhängen. Die Dateierkennung läuft also sicher am Besten darüber, dass der VBA Code den "alten Dateinamen" ausliest und schaut was steht rechts vom ersten punkt von rechts...  :o

Also müsst ich wissen, wie ich an den aktuellen Dateinamen komme. Es gibt vielleicht andere Arten das Problem zu lösen, aber das ist nach meinem Kenntnissstand erstmal das logischste.

LG




Titel: Re: Speicherplatz / Dateianhänge
Beitrag von: daolix am Juli 20, 2015, 18:03:23
hallo
Zitat... den "alten Dateinamen" ausliest und schaut was steht rechts vom ersten punkt von rechts...  :o
na dann mach das doch
ZitatVBA.FileSystem.FileCopy v, "Path+Name der neuen Datei" & Mid(v, InStrRev(v, "."))
Titel: Re: Speicherplatz / Dateianhänge
Beitrag von: datekk am Juli 21, 2015, 11:17:18
Also es beeindruckt mich immer wieder, dass es für jeden ***** irgend einen VBA Befehl gibt.

Also besten Dank :)