SELECT ERRO VARBINARY?

HOSTTOTA 08/03/2013 12:46:16
#420168
SELECT     CharacterIdx, CONVERT(varbinary(4800), AchievementData), TitleData FROM achievement_title WHERE     (CharacterIdx = [ô]449[ô])
Dim Reader As SqlDataReader

oSQLConn.Open()

Reader = Command.ExecuteReader
While Reader.Read()
MsgBox(Reader(1))


End While


msg = éOO = q isso?

alguem pode ajudar trazer valor correto
0x0000000000000000000
JABA 09/03/2013 00:28:23
#420213
seja mais claro por favor.
PROFESSOR 09/03/2013 02:04:54
#420218
Ok.

O campo AchievementData é um Image (ou varbinary ou ole etc), que provavelmente é utilizado para guardar documentos ou outros arquivos. Até aí, sem problemas, mas acredito que aceite nulos sem possuir um valor padrão. Há como definir um valor padrão para campos desse tipo, assim como para quaisquer outros tipos. [ô]0x0000000000000000000[ô], porém, é equivalente á NULL.

CONVERT(varbinary(4800), AchievementData) pode (talvês até deve) ser substituido por CAST(AchievementData, varbinary), para evitar que o retorno [Ô]exija[Ô] um varbinary (variante binário) de tamanho fixo (variante fixo !?!?).

Ainda assim, o problema efetivo me parece ser um NULL no registro, ainda mais quando você cita a expressão 0x0000000000000000000, que aponta para uma matriz binária (byte) sem conteúdo.

Outro [Ô]pequeno[Ô] detalhe é que um tipo VARBINARY, sendo uma matriz de bytes, precisaria ser convertida em texto antes de aparecer em um MessageBox, mas isso até é automatizado, desde que haja conteúdo. Assim, novamente o NULL parece ser o problema.

Para tirar a dúvida, ou seja, saber se o registro está com o campo nulo, teste o código abaixo:

[ô]...
Dim iParCode As Integer = 449
Dim parCode As String = [Ô]SELECT [Ô]
parCode &= [Ô]CharacterIdx, [Ô]
parCode &= [Ô]CONVERT(varbinary(4800), AchievementData) AS MATRIZ, [Ô]
parCode &= [Ô]TitleData [Ô]
parCode &= [Ô]FROM [Ô]
parCode &= [Ô]achievement_title [Ô]
parCode &= String.Format([Ô]WHERE (CharacterIdx = {0}) [Ô], iParCode)
Dim tb As New DataTable([Ô]Query1[Ô])
Using da As New SqlDataAdapter(parCode, oSQLConn.ConnectionString)
da.Fill(tb)
End Using
For Each dr As DataRow In tb.Rows
If IsDbNull(dr([Ô]MATRIZ[Ô])) = False Then
MsgBox(String.Format([Ô]{0} está nulo![Ô], iParCode))
Else
MsgBox(String.Format([Ô]{0} tem o título {1}[Ô], iParCode, CType(dr([Ô]TitleData[Ô]), String)))
End If
Next
[ô]...

HOSTTOTA 09/03/2013 08:12:49
#420223
bom ele não traz null so diz q não é possivel converter prompt

tentei exemplo disse erro no cast
HOSTTOTA 22/03/2013 09:59:36
#420908
ainda estou com problema de exibir varbinary
Tópico encerrado , respostas não são mais permitidas