Laden...

Anlagen aus einer Access DB lesen

Erstellt von carpet vor 11 Jahren Letzter Beitrag vor 11 Jahren 7.209 Views
C
carpet Themenstarter:in
4 Beiträge seit 2012
vor 11 Jahren
Anlagen aus einer Access DB lesen

verwendetes Datenbanksystem: Access 2007/2010

Hallo allerseits,

ich google schon eine Weile rum, in verschiedenen Foren, bei Microsoft, ... aber ich habe noch keine richtige Lösung für mein Problem gefunden:
Ich habe eine Datenbank in Access 2007/2010. In einer der Tabellen gibt es ein Feld vom Datentyp "Anlage". In einem solchen Feld können auch mehrere Anhänge gespeichert sein.
Ich muss jetzt einen Datensatz aus dieser Tabelle in eine andere Datenbank kopieren, via Ado.net, vb.net als Entwicklungsumgebung.
Leider stellt sich Ado quer (Multiwerte in einem Feld). Da ich zum ersten Mal auf einen solchen Datentyp stoße, stehe ich etwas im Wald.
Kann mir von euch jemand sagen, wie ich ein solches Feld kopiere oder auslese und in einer anderen Tabelle wieder speichere?

Und ehe ich es vergeß: Die Datenbank wurde nicht von mir erstellt und ich habe auch nicht die Möglichkeit, diese Tabelle zu ändern.

Vielen Dank schon mal im Voraus.
Carola

30 Beiträge seit 2010
vor 11 Jahren

Ich hab auch ma gegoogled (c# access column attachment) :

Programmatically managing Microsoft Access Attachment-typed field with .NET

bzw.

C# Attachment field update on existing Access DB

Ist dir damit geholfen?

:::

System: Win7 x64 | INTEL Core i7 2.8Ghz | 4 GB RAM

C
carpet Themenstarter:in
4 Beiträge seit 2012
vor 11 Jahren

Hallo alec,

vielen Dank für deine Antwort. Ich hatte gehofft, ich komme um die DAO-Bibliothek drum rum. Scheint aber nicht so oder? Ich probiere das trotzdem mal aus.
Eine Ado-Lösung gibt es da wohl nicht?

Viele Grüße
Carola

B
357 Beiträge seit 2010
vor 11 Jahren

Was ich bisher so gelesen habe, leider nein.

30 Beiträge seit 2010
vor 11 Jahren

Wenn man solch ein Feld per ADO abfragt, erhält man die wohl lediglich die semikolon separierten Dateinamen, also einen string. Leider find ich gerade die Quelle dieser Info nicht wieder.

:::

System: Win7 x64 | INTEL Core i7 2.8Ghz | 4 GB RAM

C
carpet Themenstarter:in
4 Beiträge seit 2012
vor 11 Jahren

Ich habe die Datenbank bereits per ADO im Zugriff. Dieses Feld enthält dabei wirklich nur die Dateinamen.
Alles, was ich bisher bzgl. auf ADO und dieses Feld bzw. Tabelle versucht habe, war eine Sackgasse. OleDB kennt zwar binary und wString, aber das Feld kommt damit nicht an...
Da der Zugriff via DAO funktioniert, werde ich wohl das implementieren müssen.

Ich danke euch beiden (auch wenn ich auf eine andere Lösung gehofft hatte)

Viele Grüße,
Carola

F
10.010 Beiträge seit 2004
vor 11 Jahren

Hast du schon einmal geschaut ob DAO auch noch die Daten liefert, wenn du die Datei umbenennst?
Nicht das DAO dir lediglich das lesen der Daten abnimmt und in dem Feld tatsächlich nur der Pfad steht.

30 Beiträge seit 2010
vor 11 Jahren

Ich vermute das die Datei einfach vom DOA nachgeladen wird.

Reichen die die Dateinamen denn nicht aus? Brauchst du die als binary? Dann kannst du die doch einfach nachladen und beides in deine Zeildatenbank schreiben? Wen deine Zieldatenbank auch Access ist kannst du doch für den Zugriff(bzw. insert) auch DOA einsetzen.

Auf dem Access-Team-Blog ist insert, update und delete auch nochmal genauer beschrieben: blogs.office.com/b/microsoft-access/archive/2007/08/24/adding-removing-and-saving-files-from-the-new-attachment-field-in-access-2007.aspx

Auf jeden Fall mal den Hinweis von FZelle prüfen.

:::

System: Win7 x64 | INTEL Core i7 2.8Ghz | 4 GB RAM

C
carpet Themenstarter:in
4 Beiträge seit 2012
vor 11 Jahren

Hallo allerseits,

ich bedanke mich erst mal für eure tollen Antworten.

Mit DAO hat das Anlagenfeld eine vollkommen andere Struktur. Ich kann ein neues Recordset aufmachen, das den Inhalt des Feldes, bestehend aus einem eigenen Datensatz, beinhaltet. Dieser Datensatz vom Typ Recordset2 enthält die Felder FileName, FileType und FileData. FileData enthält dann die Binärdaten oder was auch immer.

Meine Aktionen zielen auf einen Datenbankabgleich hin. Das Feld Anlagen wurde bewußt von dem Datenbank-Entwickler (ich bin das in diesem Falle nicht) verwendet. In diesem Anlagenfeld stehen Bild-Dateien, mal eine, mal 2 oder auch 4.
Die Zieldatenbank ist ebenfalls eine Access-DB. Ziel ist, dass nach dem Abgleich die lokale und auch die Serverdatenbank gleiche Daten haben. Eine Netzwerkverbindung ist beim Arbeitten am Client nicht immer vorhanden. Mehrere User können an einer DB arbeiten. Wenn eine Verbindung zum Server aufgebaut wird, kann dies auch nur über eine ISDN-Verbindung erfolgen. Auf dem Server ist kein Access installiert.
Meine Idee war mit einem separaten Programm über Ado.net auf beide Access-DB zuzugreifen und die Daten abzugleichen. Und dann tauchte das Anlagenfeld auf...

Viele Grüße, Carola