Access Form File Upload

Hi,

ich hab mal wieder ein Problem, bei dem ich nicht so recht weiss, wie am besten anpacken. Vorab:
Access 2007, SQL Server 2005 Express

So jetzt das Problem:
Ich möchte gerne mittels Formular Dateien, wie z.B. jpg, xls, pdf, etc. in der Datenbank ablegen.
Meine Fragen wären:

  • wie kann man das am besten machen?
  • hat jemand Erfahrungen, wie sich so etwas auf den DB-Umfang auswirkt?(SQL Server 2005 Express (4GB Limit))

Besten dank schon mal
QL

Ablegen in die Datenbank würde ich nur, wenn genug Platz da ist. Versuche doch mal, das ganze als Hyperlinkverweis auf die Dateien zu speichern - setzt aber voraus, dass die Hyperlinkadressen für alle Benutzer deiner Datenbank erreichbar sind.

Ablegen in die Datenbank würde ich nur, wenn genug Platz da
ist. Versuche doch mal, das ganze als Hyperlinkverweis auf die
Dateien zu speichern - setzt aber voraus, dass die
Hyperlinkadressen für alle Benutzer deiner Datenbank
erreichbar sind.

Platz ist genug verfügbar. Das Problem könnte nur sein, dass der SQL-Server bei 4GB streikt, da es nur ein Express ist. Aktuell wird die Datei via Link „eingebunden“. Das grosse Problem ist aktuell nur, dass sich die Dateistruktur geändert hat und jetzt natürlich kein einziger Link mehr funktioniert hat. Ich hab das zwar jetzt so hingebogen, dass es wieder funktioniert, aber ich hätte gerne eine Lösung die vom Filer unabhängig ist.

Hast du mal überlegt, die Dateien in einer parallelen SQL-Datenbank abzulegen - so dass die eigentlich Arbeit mit den Daten nicht behindert wird. Du kannst z. B. in Prozeduren jede Datenbank des gleichen SQL-Servers ansprechen und dort die Informationen auslesen.

==> Datenbankname.Benutzername.Tabellenname.Feldname

Meines Erachtens kann die MSDE Datenbanken bis 4 GB bearbeiten - aber eben mehrere, ergo würde ich die Datenbank auf mehrere verteilen.

So in etwa müsste die Prozedure in der aktuellen Datenbank aussehen. In der externen Datenbank (im Beispiel externeDatenbank) gibt es die Tabelle Dateiarchiv mit den Felder Dateinummer (int) und Datei (image).

create procedure externeDatei
@Dateinummer
as

Select a.Datei from externeDatenbank.dbo.Dateiarchiv.Datei where Dateinummer = @Dateinummer

return

Gruß EPa

Hast du mal überlegt, die Dateien in einer parallelen
SQL-Datenbank abzulegen - so dass die eigentlich Arbeit mit
den Daten nicht behindert wird. Du kannst z. B. in Prozeduren
jede Datenbank des gleichen SQL-Servers ansprechen und dort
die Informationen auslesen.

==> Datenbankname.Benutzername.Tabellenname.Feldname

Meines Erachtens kann die MSDE Datenbanken bis 4 GB bearbeiten

  • aber eben mehrere, ergo würde ich die Datenbank auf mehrere
    verteilen.

Ich verwende SQL-Server, warum MSDE?

So in etwa müsste die Prozedure in der aktuellen Datenbank
aussehen. In der externen Datenbank (im Beispiel
externeDatenbank) gibt es die Tabelle Dateiarchiv mit den
Felder Dateinummer (int) und Datei (image).

create procedure externeDatei
@Dateinummer
as

Select a.Datei from externeDatenbank.dbo.Dateiarchiv.Datei
where Dateinummer = @Dateinummer

return

Gruß EPa

Über ein Verteilen der DBen hab ich schon nachgedacht, aber vor das notwendig wird mach ich glaub ich lieber das Upgrade auf SQL-Server-Standard.
Aber wie bekomme ich via Access die Dateien da rein?

Die MSDE ist der abgespeckte Microsoft-SQL-Server.

In Access arbeitest du mit Projekten (Endung adp). Hier wird über Datei - Verbindung die Verbindung zum SQL-Server und zur Datenbank hergestellt. Automatisch werden in dein Projekt alle Tabellen + Abfragen (Sichten, Prozeduren, Funktionen) angezeigt. Diese Dinge werden aber auf dem SQL-Server gespeichert.

Formulare, Berichte, Makros, Module verbleiben in der Access-Datenbank.

Gruß EPa

Die MSDE ist der abgespeckte Microsoft-SQL-Server.

MSDE ist die alte abgespeckte Version vom SQL-Server. Seit geraumer Zeit gibt es den SQL-Server Express, daher meine Frage.

In Access arbeitest du mit Projekten (Endung adp). Hier wird
über Datei - Verbindung die Verbindung zum SQL-Server und zur
Datenbank hergestellt. Automatisch werden in dein Projekt alle
Tabellen + Abfragen (Sichten, Prozeduren, Funktionen)
angezeigt. Diese Dinge werden aber auf dem SQL-Server
gespeichert.

Formulare, Berichte, Makros, Module verbleiben in der
Access-Datenbank.

Gruß EPa

Das ist mir alles soweit klar. Wie kann ich mittels eines Access Formulars Dateien in der Datenbank ablegen?

Gruss
Alexander Graf

Ich habe ein Formularfeld VollständigerDateiname, Varchar und ein Feld Datei, Image.

Im Formular gibt es einen Befehlsschaltfläche mit folgendem Code (verkürzte Form, OpenFile ist eine Funktion die über API den Windowsdialog zur Dateiauswahl aufruft und den Dateinamen zurückgibt.:

me.VollständigerDateiname = OpenFile("*.*|*.*", „c:“)
If me.VollständigerDateiname „“ Then
Me.Datei = me.VollständigerDateiname
Me.Datei.SourceDoc = me.VollständigerDateiname
Me.me.VollständigerDateiname .Action = acOLECreateEmbed
End If