vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

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

ADO.NET / Datenbanken
Re: OLE-Object-Feld aus Access-DB einer PictureBox zuweisen 
Autor: Doofi
Datum: 07.04.08 17:02

Hallo Forum, ich muss nochmal stören Ist zwar ein etwas längerer Beitrag, aber nur damit ich das auch möglichst umfassend erkläre, was ich möchte....

Ich habe versucht, den Tipp von Melkor umzusetzen, bin dabei aber glaub ich an meine Grenzen gestossen...

Hier mal der Ablauf, wie der code sich bei mir verhält:

Die Access-DB: Feld Cover, Datentyp OLE-Object

Starte ich mein Prog und klicke auf einen Button, wird als erstes ein eigener Datentyp erzeugt:
Public Structure MP3File
  Public _DateiID As Long
  ...
  Public _Cover As Byte
End Structure
Dann lese ich in einer Funktion die Werte für den Datentyp MP3File ein...
With tmpMP3
  ...
  ._Cover = SavePicTmp(m_UltraID3) ' Hier tritt der Fehler auf
  ...
End With
Die Funktion SavePicTmp() sieht bei mir so aus:
Public Function SavePicTmp(ByVal DateiName As UltraID3)
  m_PictureFrames = DateiName.ID3v23Tag.Frames.GetFrames( _
    MultipleInstanceFrameTypes.Picture)
  m_PictureTypes = _
  HundredMilesSoftware.UltraID3Lib.ID3PictureFrame.PictureTypeList
  m_PictureIndex = -1
  If m_PictureFrames.Count > 0 Then
    m_PictureIndex = 0
  End If
 
  Dim PictureFrameCount As Integer = m_PictureFrames.Count
  If PictureFrameCount > 0 Then
    m_CurrentPictureFrame = CType(m_PictureFrames.Item(m_PictureIndex), _
      ID3PictureFrame)
    With m_CurrentPictureFrame
      If m_CurrentPictureFrame.Picture IsNot Nothing Then
        m_CurrentPictureFrame.Picture.Save("c:\picTmp.jpg")
      End If
    End With
  End If
 
  Dim myfilelength As Int64
  Dim fs As FileStream = New FileStream( _
    My.Computer.FileSystem.SpecialDirectories.MyDocuments & _
    "\picTmp.jpg", FileMode.Open)
  Try
    myfilelength = fs.Length
    ReDim Puffer(myfilelength - 1)
    fs.Read(Puffer, 0, myfilelength)
    fs.Close()
  Catch ex As Exception
    fs.Close()
  Finally
    fs.Close()
  End Try
  Return Puffer
End Function
Das Bild wird auch korrekt an der angegebenen Stelle abgespeichert.

Jetzt kommt aber der Rückgabewert Puffer, der im Debugger diesen Inhalt hat (auszugsweise):
?puffer
{Length=22515}
    (0): 255
    (1): 216
    (2): 255
      ....
    (98): 6
    (99): 7
    < Erweitert... (Die ersten 100 von 22515 Elementen werden angezeigt.) >
Der Inhalt verträgt sich aber nicht mit dem Feldtyp Byte aus tmpMP3._Cover (oben Fett markiert)
Welchen Datentyp muss ich dort verwenden, damit ich den Wert anschliessend in einer DB speichern kann?

Die Funktion die das speichern übernehmen soll, sieht so aus: (übernimmt als Parameter den Structure-Datensatz tmpMP3, die SQL-Befehle sind verkürzt dargestellt)

Public Sub InsertNewRecord(ByVal tmpMP3 As MP3File)
  Dim strSQL As String = "Insert Into TDatei (KatID,Cover) Values(?,?)"
  MyConn = New OleDbConnection(connString)
  Try
    MyConn.Open()
    Dim Cmd As New OleDbCommand(strSQL, MyConn)
    With Cmd
      .Parameters.Add(New OleDbParameter("@KatID", OleDbType.Integer))
      ' Ist das so korrekt mit .Binary???
      .Parameters.Add(New OleDbParameter("@Cover", OleDbType.Binary))
    End With
    Cmd.Parameters(0).Value = Rec._KatID
    Cmd.Parameters(1).Value = Rec._Cover
    Cmd.ExecuteNonQuery()
  Catch ex As Exception
    MsgBox("Fehler" & vbCrLf & ex.Message)
  Finally
    MyConn.Close()
  End Try
End Sub
Ich bin ja wirklich nicht lernfaul, und gegoogelt hab ich auch schon jede Menge, aber irgendwie fehlt mir das Verständnis für die Binären Datentypen und deren Konvertierung

Wär wirklich superklasse, wenn mir jemand helfen könnte...

LG Micha
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
OLE-Object-Feld aus Access-DB einer PictureBox zuweisen4.741Doofi02.04.08 00:33
Re: OLE-Object-Feld aus Access-DB einer PictureBox zuweisen3.288ModeratorFZelle02.04.08 09:25
Re: OLE-Object-Feld aus Access-DB einer PictureBox zuweisen3.230Doofi02.04.08 12:11
Re: OLE-Object-Feld aus Access-DB einer PictureBox zuweisen3.307Melkor02.04.08 12:24
Re: OLE-Object-Feld aus Access-DB einer PictureBox zuweisen3.587Doofi07.04.08 17:02
Re: OLE-Object-Feld aus Access-DB einer PictureBox zuweisen3.175Melkor07.04.08 19:43
Re: OLE-Object-Feld aus Access-DB einer PictureBox zuweisen3.278Doofi07.04.08 23:26

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-2025 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