Binär-Datei (PDF-Dokument) in DataGrid einfügen?

04/11/2009 - 14:08 von Steffen Meyer | Report spam
Hallo zusammen,

ich habe ein Problem, bei dem ich momentan nicht weiter komme:
Ich verwende Visual Basic 2005 und einen SQL-Server 2005. Auf dem Server
liegen meine Tabellen, die ich VB in ein DataGrid einlese, bearbeite und
anschließend wieder auf den Server Update.

Ich möchte nun in einer Tabelle PDF-Dokumente, also Binàre-Files
abspeichern - wird so gefordert.
Wenn ich das mit Bildern versuche, dann funktioniert das prima, wenn ich
jedoch ein PDF-Dokument einfüge, dann erhalte ich nur eine rießige
Fehlermeldung zur Laufzeit:

Standard-Fehlerdialogfeld für DataGridView
DataGridView-Ausnahme:

System.ArgumentException: Ungültiger Parameter.
bei System.Drawing.Image.FromStream(Stream stream, Boolean
useEmbeddedColorManagement, Boolean validateImageData)
bei System.Drawing.ImageConverter.ConvertFrom(ITypeDescriptorContext
context, CultureInfo culture, Object value)
bei System.Windows.Forms.Formatter.FormatObjectInternal(Object value,
Type targetType, TypeConverter sourceConverter, TypeConverter
targetConverter, String formatString, IFormatProvider formatInfo, Object
formattedNullValue)
bei System.Windows.Forms.Formatter.FormatObject(Object value, Type
targetType, TypeConverter sourceConverter, TypeConverter targetConverter,
String formatString, IFormatProvider formatInfo, Object formattedNullValue,
Object dataSourceNullValue)
bei System.Windows.Forms.DataGridViewCell.GetFormattedValue(Object value,
Int32 rowIndex, DataGridViewCellStyle& cellStyle, TypeConverter
valueTypeConverter, TypeConverter formattedValueTypeConverter,
DataGridViewDataErrorContexts context)

Behandeln Sie das DataError-Ereignis, um dieses Standarddialogfeld zu
ersetzen.


Mein Quellcode:
Private Sub cmdDatenblatt_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cmdDatenblatt.Click
Dim strFileName As String 'Dateiname inkl. Pfad
Dim bindata As Byte() 'Variable fr ein Byte-Array
Dim Stream As IO.Stream 'Instanz-Variable fr ein Stream-Objekt festlegen
Dim OpenFileDialog As New OpenFileDialog

'Filer fr die mglichen Dateien setzen
OpenFileDialog.Filter = "Alle Dateien (*.*)|*.*|PDF-Dokumente
(*.pdf)|*.pdf|Word-Dokumente " _
& "(*.doc; *.docx)|*.doc; *.docx|Excel-Dokumente
(*.xls; *.xlsx)|*.xls;*.xlsx"
'FileDialog zur Auswahl einer Datei öffnen
If OpenFileDialog.ShowDialog() = Windows.Forms.DialogResult.OK Then
strFileName = OpenFileDialog.FileName 'ausgewhlter Dateiname in
Variable ablegen

'Stream-Objekt erstellen und die Datei einlesen
Stream = New IO.FileStream(strFileName, IO.FileMode.Open,
IO.FileAccess.Read)

'Stream in Byte-Array umwandeln
ReDim bindata(Stream.Length - 1)
Stream.Read(bindata, 0, Stream.Length)
Stream.Close()

'Funktioniert leider nur mit Bildern
'Byte Array in DataGrid bertragen
Me.dtgDetails.CurrentRow.Cells("Datenblatt").Value = bindata
End If
End Sub

Gibt es eine Möglichkeit, das PDF-Dokument doch noch über das DataGrid
einzufüren und auf die Datenbank updaten zu lassen?
Besten Dank
Steffen
 

Lesen sie die antworten

#1 Peter Götz
04/11/2009 - 16:31 | Warnen spam
Hallo Steffen,

Gibt es eine Möglichkeit, das PDF-Dokument doch noch
über das DataGrid einzufüren und auf die Datenbank
updaten zu lassen?



Ich verstehe nicht so recht, was du bei einem PDF-Dokument
im DataGridView eigentlich anzeigen willst. Das könnte
bestenfalls der Dateiname sein.

Wie stellst Du Dir eine Bearbeitung einer PDF-Datei
im DataGridView vor?

Welchen Spaltentyp (DataGridViewTextBoxColumn,
DataGridViewImageColumn, usw.) würdest Du für die Anzeige
von PDF-Dateien verwenden wollen?
Das könnte evtl. eine ImageColumn sein, in welcher
Deine PDF-Dokumente nach Umwandlung in eine Graphik
angezeigt werden könnten. Aber wie würdest Du Dir dann
die Bearbeitung einer solchen Graphik und die Rückwandlung
zu *.PDF vorstellen?


Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

Ähnliche fragen