Diese beiden Linien zusammen sind falsche Datei:
Dim binary() As Byte = TryCast(structDb.dstResult.Tables(0).Rows(i).Item("document"), Byte())
Dim ms As MemoryStream = New MemoryStream(binary)
Der Grund für die Verwendung TryCast ist, dass das Objekt, das Sie versuchen zu cast ist möglicherweise nicht der Typ, mit dem Sie es zu transformieren versuchen. In diesem Fall gibt TryCast
Nothing
zurück. Auf die Verwendung von TryCast
sollte IMMER ein Test für Nothing
folgen, den Sie nicht durchgeführt haben. Sie verwenden das Ergebnis, als ob Sie sicher sind, dass ein Objekt dieses Typs vorhanden sein wird. Wenn Sie das wissen, dann sollten Sie DirectCast
statt TryCast
verwenden.
Auch wenn Sie wissen, dass der Verweis nicht auf ein Objekt eines anderen Typs sein und Sie verwenden DirectCast
aber, wenn Sie eine Nullreferenz werfen, das heißt Nothing
, dann bist du noch Nothing
wieder in Gang zu bringen. Sie müssen also zuerst feststellen, ob sich structDb.dstResult.Tables(0).Rows(i).Item("document")
auf ein Objekt eines anderen Typs als Byte()
beziehen kann. Wenn es nicht möglich ist, dann verwenden Sie DirectCast
statt TryCast
. In jedem Fall scheint es, dass dieser Ausdruck Nothing
erzeugen kann, so dass Sie auf jeden Fall nach Nothing
suchen müssen, z.
Dim binary() As Byte = TryCast(structDb.dstResult.Tables(0).Rows(i).Item("document"), Byte())
If binary IsNot Nothing Then
Dim ms As MemoryStream = New MemoryStream(binary)
'...
End If
EDIT: Wenn die Spalte NULL-Werte zulässt, dann müssen Sie zunächst prüfen, ob die Zeile enthält null und dann nur die Daten verwenden, wenn es etwas ist:
Dim row = structDb.dstResult.Tables(0).Rows(i)
If Not row.IsNull("document") Then
'There is data so go ahead and use it.
Dim binary = DirectCast(row("document"), Byte())
'...
Bitte starten Sie keine Hilfe Momente fordern nachdem du deine Frage gepostet hast. Wir werden es schaffen, wenn und wann wir können. Wir sind alle Freiwillige, die in verschiedenen Zeitzonen verstreut sind. Niemand wird wegen dieses sinnlosen Kommentars helfen, der nicht schon helfen wollte. – jmcilhinney
Sehen Sie sich den Titel dieser Frage an. Wird dieses Problem angesprochen? Wenn ja, akzeptiere entweder die Antwort, die es adressiert hat, oder füge eine eigene Antwort hinzu. Wenn Sie eine andere Frage haben, dann veröffentlichen Sie sie in einem neuen Thread. – jmcilhinney
okkkkkkkkkkkkkkkkkk –