Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Speicherplatz / Dateianhänge

Begonnen von datekk, Juli 17, 2015, 10:51:04

⏪ vorheriges - nächstes ⏩

datekk

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?
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

MzKlMu

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 ?
Gruß Klaus

MaggieMay

Hi,

anstelle von Drag&Drop könntest du einen Dateiauswahldialog anbieten.
Freundliche Grüße
MaggieMay

datekk

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? :)
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

MaggieMay

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.
Freundliche Grüße
MaggieMay

daolix

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



datekk

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?
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

DF6GL

Hallo,

der Workaround wäre, den Anhang als Datei auf dem Desktop zwischen zu speichern und die(se) Datei in das Listview zu ziehen....
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

daolix

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.

datekk

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)
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

daolix

Hallo
die Frage verstehe ich jetzt nicht?

datekk

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




Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

daolix

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, "."))

datekk

Also es beeindruckt mich immer wieder, dass es für jeden ***** irgend einen VBA Befehl gibt.

Also besten Dank :)
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps