vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB & Datenbanken
Access 2007 Datenbank - Anhangsfeld füllen mit Bildern 
Autor: Cyberblade
Datum: 05.10.11 19:43

Hallo zusammen,

ich bin grad dabei eine kleine Datenbankanwendung zu schreiben.

Software und DB:
- Access Datenbank 2007 (accdb)
- VB Version 6

Das Verbinden mit der DB funktioniert bestens via:

Verweise:
- MS Scripting Runtime
- MS Access 12.0 Object Library
- MS Office 12.0 Access Database enginge Object

Code:
- DBEngine.Workspaces(0)
- ws.OpenDatabase(dbfile)
und auch das lesen / schreiben in die datenbank funktioniert bestens mit:
abfrage1 = "Update Tabelle set DB-Anhangsfeld = '" & bildpfad & "' where" & _
  "Film_id = " & Tabelle.einLabel.Caption
 
rs = db.OpenRecordset(abfrage1)
So und nun zu zu meinem Problem:
Wenn ich nun einen Datensatz erstellen will und dort eine Bilddatei (.jpg)
in ein Tabellenfeld vom Datentyp "Anhang" speichern möchte geht dies nicht.

Es kommt dann immer die FM:
"Eine Update- oder Delete Abfrage kann kein mehrwertiges Feld erhalten"

Was genau und wie kann ich dieses Anhangsfeld beschreiben? Habt ihr da eine Idee?
Muss der Bildpfad in die Variable oder die Bilddaten selbst?

Ich verzweifel grad daran, und alles googlen hat mich nicht weitergebracht und selbst eure Suchfunktion hat noch kein solches Thema. Naja jetzt schon

mfg blade
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Access 2007 Datenbank - Anhangsfeld füllen mit Bildern 
Autor: wb-soft
Datum: 05.10.11 21:00

Hi!

Konkret zu deiner Frage: Ich würde dir raten, nur den Pfad und den Dateinamen in der DB zu speichern.

Insgesamt scheint mir dein Ansatz verbesserungswürdig.
Schau dir ADO als Methode für den DB-Zugriff an. Und Statements mit "Update..." werden nicht zum Öffnen eines Recordsets verwendet.


mfg

WB
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Access 2007 Datenbank - Anhangsfeld füllen mit Bildern 
Autor: Cyberblade
Datum: 05.10.11 21:36

Hi

Nur den Pfad zu speichern will ich nicht. Und ob ich nun die Bilder auf der Festplatte in einem Ordner Speicher, wovon dann welche wegkommen können wenn man nicht aufpasst, oder mit in die DB schreibe kommt eigentlich fast aufs selbe raus.

Da das Frontend komplett aus VB besteht kann man hier auch die maximale Dateigröße angeben und diese dann zur Not auch noch auslesen, um unnützes aufblähen zu verhindern.

Das Statements mit Update keine ds erzeugen ist mir schon klar.
Das erste sql Statement legt einen ds an und das auch mit "INSERT INTO" und db.execute.

Wenn ich das Bild aber mit in die INSERT INTO Anweisung schreibe, bekomm ich nur eine FM die da sagt, dass mehrwertige Felder nicht mit anderen zusammen in eine INSERT INTO Anweisung hineindürfen.
Daher wollte ich dann hier den Umweg gehen und im Anschluss an den Insert ein Update drüberlaufen lassen in dem das Bild eingefügt wird.

Was wäre ein Vorteil von ADO? Im großen und ganzen funktioniert das auf die bisherige Weise ganz gut, bis auf das Bilder einfügen in ein Tabellenfeld mit Datentyp "Anhang"

Gruß

Blade
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Access 2007 Datenbank - Anhangsfeld füllen mit Bildern 
Autor: wb-soft
Datum: 05.10.11 22:29

Hi!

ADO hat ein flacheres Objektmodell, und ist mit einer Vielzahl von DBs einsetzbar.

Mit Datentyp "Anhang" meinst du vermutlich ein Feld vom Typ "Anlage". Dann hast du schlechte Karten.
Wenn du unbedingt die Bilder in der DB haben willst, nimm ein OLE-Feld oder scheib ein Byte-Array.


mfg

WB
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Access 2007 Datenbank - Anhangsfeld füllen mit Bildern 
Autor: Cyberblade
Datum: 05.10.11 23:17

Hi

ja ich mein "Anlage" als Datentyp. Schade wenn das so nicht geht. Dachte das hätte MS vielleicht schon mit implementiert.

Dann werd ich daraus wohl OLE Feld machen. Noch ist es ja früh genug da ich damit grad anfange und die DB dann noch ändern kann Oder ist ein Byte-Array sinnvoller? Hab leider noch nie Bilder in eine DB reingespeichert, von daher hab ich da kein Plan was sinnvoller oder besser ist...

Wie würde das denn aussehen wenn ich sowas in eine Tabelle schreiben will?

Gruß

Blade
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Access 2007 Datenbank - Anhangsfeld füllen mit Bildern 
Autor: wb-soft
Datum: 05.10.11 23:37

Hi!

Über das Speichern von Byte-Arrays ist hier im Forum schon einiges geschrieben worden.

Hier habe ich ein Beispiel, wie mit dem Typ "Anlage" gearbeitet wird.
Ich persönlich würde aber auf derart "exotische" Lösungen verzichten.

http://www.access-entwicklerbuch.de/2007/index.php?page=buch&bookpage=Kap_11/05.html


mfg

WB
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Access 2007 Datenbank - Anhangsfeld füllen mit Bildern 
Autor: Cyberblade
Datum: 06.10.11 00:02

Hi,

na dann werd ich mal schauen was ich zu ADO alles finden kann und auch was ich zu den Byte-Arrays finde. Das Codebeispiel für die Anlagen funktioniert aber auch.

Vielen Dank für deine späten Antworten (also zu so später Zeit noch)!

Gruß

Blade
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Access 2007 Datenbank - Anhangsfeld füllen mit Bildern 
Autor: Franki
Datum: 06.10.11 02:55

Hallo,

Zitat:


Was wäre ein Vorteil von ADO?


Einer der Vorteile wäre, dass du dir die Verweise auf Access sparen könntest. Du schreibst ja deine Anwendung in VB6, durch die Verweise setzt du aber bei deinen Kundenrechnern ein vorhandenes Access voraus.

Das ist nicht notwendig, du kannst aus VB Anwendungen auch Access DBs verwenden ohne dass deine Kunden Access haben müssen.

Und je nachdem was du machst, funktioniert deine Anwendung auch mit jeder Version des Dateiformats welche es bei Access DBs ja so gibt. Alleine deswegn ist das mit dem OLE und den Bildern schon die bessere Wahl weil das auch ältere Versionen schon können.

Gruß,
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel