Fórum Gravar XML de NFE em Banco de Dado #406727

17/08/2011

0

Olá amigos estou tentando gravar um xml de nfe no banco sql, e esta dando este erro: (invalid blob length) o tipo de campo que estou usando é text.   Será que alguem tem alguma dica ??   Muito obrigado.
Marcelo

Marcelo

Responder

Posts

18/08/2011

Geversom Sousa

tente usar o código abaixo: 
function TFom1.InserirXMLdaNFe: Boolean;var FileStream : TFileStream;    BlobStream : TStream; 	PathArquivoXML : String;begin   Result := True;   try	  PathArquivoXML := 'C:\nfe\NOTA123.XML'
	  // Insiro o conteudo do arquivo no Campo BLOB ...      FileStream := TFileStream.Create(PathArquivoXML, fmOpenRead or fmShareDenyWrite);      BlobStream := Dataset.CreateBlobStream(Dataset.FieldByName('NOME_DO_CAMPO'), bmWrite);
      try         BlobStream.CopyFrom(FileStream, FileStream.Size);         ShowMessage('XML importado com sucesso!');      finally         FileStream.Free;         BlobStream.Free;      end;
   except      Result := False;   end;
end;


Eu uso e funciona. 
Abraço


Responder

Gostei + 0

19/08/2011

Emerson Nascimento

não basta somente:

TBlobField(Dataset.FieldByName('NOME_DO_CAMPO')).LoadFromFile(cArqXML); // grava no campo

TBlobField(Dataset.FieldByName('NOME_DO_CAMPO')).SaveToFile(cArqXML); // grava no disco



Responder

Gostei + 0

19/08/2011

Marcelo

Muito obrigado pela resposta, mas em que momento vc grava no banco. Eu não uso o dataset para gravar eu uso uma query ( query.fieldbyname('campo').asstring := memo.text   Mas tentei usar do meu jeito e não deu certo será que vc alguma dica ? Muito obrigado.  
Responder

Gostei + 0

26/08/2011

Geversom Sousa

Você pode tentar algo semelhante a isso aqui: 


procedure TForm1.Button1Click(Sender: TObject);var FileStream : TFileStream;    BlobStream : TStream;    PathArquivoXML : String;begin
    query.append;
    if InserirXMLdaNFe('c:\caminho\NFE.XML') then    begin       query.post;    end    else    begin       query.cancel;    end;end;

function TForm1.InserirXMLdaNFe(PathArquivoXML: String): Boolean;var FileStream : TFileStream;    BlobStream : TStream;begin   Result := True;   try  	  // Insiro o conteudo do arquivo no Campo BLOB ...      FileStream := TFileStream.Create(PathArquivoXML, fmOpenRead or fmShareDenyWrite);      BlobStream := query.CreateBlobStream(query.FieldByName('NOME_DO_CAMPO'), bmWrite);
      try         BlobStream.CopyFrom(FileStream, FileStream.Size);         ShowMessage('XML importado com sucesso!');      finally         FileStream.Free;         BlobStream.Free;      end;
   except      Result := False;   end;
end;



Abraço 

 
Responder

Gostei + 0

28/08/2011

Fernando Ferreira

Uma pergunta ..!

O campo que vai receber esta informação qual é o tipo dele .?
foto, texto longo ?
Responder

Gostei + 0

29/08/2011

Marcelo

Estou usando o tipo de campo "Text" do banco sql 2000
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar