Benutzer mit den meisten Antworten
Programmgesteuertes Einfügen von Dateien in ein Anlagenfeld in Access 2007 mit VB-NET

Frage
-
Hallo,
ich habe eine Anwendung geschrieben, die Zugriff auf eine ACCESS 2007 Datenbank hat:
con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=C:\test.accdb" cmd.Connection = con
Jetzt möchte ich eine Datei (z.B. ein Bild) in ein Anlage-Feld hinzufügen, wobei der Pfad in einer Variablen gespeichert ist.
Habe es mit diversen SQL_Strings versucht.... Ich komme nicht drauf.Bin über Hilfe sehr dankbar !!!
Gruß Mike
- Bearbeitet Robert BreitenhoferModerator Donnerstag, 10. Juni 2010 11:06 Formatierung
Antworten
-
Hallo Mike,
Hier noch ein Code der ein Bild in einem OLE Object Feld einer Access 2007 Datenbank speichert. Du kannst sehen auch die SQL Abfrage.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim oConn As OleDb.OleDbConnection Dim oComm As OleDb.OleDbCommand Dim Err As String Dim sInsertQuery As String Dim FSO As New System.IO.FileStream("Pfad des Bildes", IO.FileMode.Open, IO.FileAccess.Read) Try sInsertQuery = "insert into images([image]) VALUES(?)" oConn = New OleDb.OleDbConnection("ConnectionString") oConn.Open() oComm = New OleDb.OleDbCommand(sInsertQuery, oConn) Dim imgArrayByte(CType(FSO.Length() - 1, Integer)) As Byte FSO.Read(imgArrayByte, 0, imgArrayByte.Length) FSO.Close() Dim QueryParameter As New OleDb.OleDbParameter("@Picture", _ OleDb.OleDbType.LongVarBinary, _ imgArrayByte.Length, ParameterDirection.Input, _ False, 0, 0, Nothing, DataRowVersion.Current, _ imgArrayByte) oComm.Parameters.Add(QueryParameter) oComm.ExecuteNonQuery() MsgBox("Bild wurde in der Datenbank erfolgreich gespeichert", MsgBoxStyle.OkOnly, "Erfolgreich gespeichert") Catch Ex As Exception Err = Ex.Message MsgBox("Fehler : " & Err, MsgBoxStyle.OkOnly, "Fehler aufgetreten") Finally oConn = Nothing oComm = Nothing End Try End Sub
Du musst noch folgendes einfügen:
Imports System.Data.OleDb
Grüße,
- Bearbeitet Robert BreitenhoferModerator Sonntag, 28. Juni 2009 19:16 Ergänzung
- Als Antwort markiert Mathias Schiffer Dienstag, 30. Juni 2009 10:04
-
Hallo Mike,
hier gibt es ein ausführliches Beispiel, auf Basis von VB.NET und "Access" (Jet): Reading and writing BLOB in ADO.NET
Viel Erfolg!- Als Antwort markiert Mathias Schiffer Dienstag, 30. Juni 2009 10:04
Alle Antworten
-
Hallo Mike,
hier gibt es ein ausführliches Beispiel, auf Basis von VB.NET und "Access" (Jet): Reading and writing BLOB in ADO.NET
Viel Erfolg!- Als Antwort markiert Mathias Schiffer Dienstag, 30. Juni 2009 10:04
-
Hallo Mike,
Hier noch ein Code der ein Bild in einem OLE Object Feld einer Access 2007 Datenbank speichert. Du kannst sehen auch die SQL Abfrage.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim oConn As OleDb.OleDbConnection Dim oComm As OleDb.OleDbCommand Dim Err As String Dim sInsertQuery As String Dim FSO As New System.IO.FileStream("Pfad des Bildes", IO.FileMode.Open, IO.FileAccess.Read) Try sInsertQuery = "insert into images([image]) VALUES(?)" oConn = New OleDb.OleDbConnection("ConnectionString") oConn.Open() oComm = New OleDb.OleDbCommand(sInsertQuery, oConn) Dim imgArrayByte(CType(FSO.Length() - 1, Integer)) As Byte FSO.Read(imgArrayByte, 0, imgArrayByte.Length) FSO.Close() Dim QueryParameter As New OleDb.OleDbParameter("@Picture", _ OleDb.OleDbType.LongVarBinary, _ imgArrayByte.Length, ParameterDirection.Input, _ False, 0, 0, Nothing, DataRowVersion.Current, _ imgArrayByte) oComm.Parameters.Add(QueryParameter) oComm.ExecuteNonQuery() MsgBox("Bild wurde in der Datenbank erfolgreich gespeichert", MsgBoxStyle.OkOnly, "Erfolgreich gespeichert") Catch Ex As Exception Err = Ex.Message MsgBox("Fehler : " & Err, MsgBoxStyle.OkOnly, "Fehler aufgetreten") Finally oConn = Nothing oComm = Nothing End Try End Sub
Du musst noch folgendes einfügen:
Imports System.Data.OleDb
Grüße,
- Bearbeitet Robert BreitenhoferModerator Sonntag, 28. Juni 2009 19:16 Ergänzung
- Als Antwort markiert Mathias Schiffer Dienstag, 30. Juni 2009 10:04