XML FIREBIRD

GUIGOR 06/06/2016 15:54:38
#463115
Boa tarde amigos
E o seguinte tenho um banco de dados no FIREBIRD e um campo onde é guardado o xml da nfce com a seguinte estrutura: BLOB SUB_TYPE 0 SEGMENT SIZE 80 sendo que carrego ele em um listview sendo que ele esta me trazadno um monde de ???????????????????????????????? gostaria de saber como eu posso fazer para converter isso ????? seria possivel
KERPLUNK 06/06/2016 17:13:15
#463117
Resposta escolhida
O tipo de dados BLOB, é uma abreviatura de Binary Large OBject. A palavra chave aqui é BINARY. Binário não pode ser representado como texto diretamente. Se você quer exibir os dados em formato de texto, você precisa de um campo do tipo texto, ou converter o conteúdo binário em texto, que pela minha experiência no VBMania é o que você vai querer fazer, certo?
GUIGOR 06/06/2016 23:20:11
#463130
Isso msm tenho q pegar esses dados e converter pois esse banco e de outro sistema não o meu por isso esse problema. Eles guardam o conteúdo do xml das nfce assim é eu preciso gerar os xml a partir desse campo
KERPLUNK 07/06/2016 00:06:31
#463134
Imaginei. Primeiro você deve ser certificar que o conteúdo do BLOB é realmente string gravado como binário. Se sim, você pode usar uma rotina relativamente simples para converter o conteúdo binário em um arquivo:

Private Function Decode(ByRef rc As ADODB.Recordset) As String
Dim myStream As New ADODB.Stream
myStream.TYPE = adTypeBinary
myStream.Open
Call myStream.Write(rc.Fields(“NOME DO CAMPO BLOB AQUI”))
myStream.Position = 0

Dim sResults As String
sResults = “”

Do While Not myStream.EOS
sResults = sResults & Chr(AscB(myStream.Read(1)))
Loop

Decode= sResults & vbNewLine
End Function


Basicamente para cada linha, você vai usar esse método onde você passa o recordset(posicionado em uma linha qualquer) que retorna um string do conteúdo do campo BLOB dessa linha em formato string. À partir daí, você faz com ele o que quiser, salvar num arquivo ou exibir em um grid, tanto faz é um simples string.
Tópico encerrado , respostas não são mais permitidas