Gravar XML de NFE em Banco de Dado
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
Curtidas 0
Respostas
Geversom Sousa
17/08/2011
tente usar o código abaixo:
Eu uso e funciona.
Abraço
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
GOSTEI 0
Emerson Nascimento
17/08/2011
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
TBlobField(Dataset.FieldByName('NOME_DO_CAMPO')).LoadFromFile(cArqXML); // grava no campo
TBlobField(Dataset.FieldByName('NOME_DO_CAMPO')).SaveToFile(cArqXML); // grava no disco
GOSTEI 0
Marcelo
17/08/2011
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.
GOSTEI 0
Geversom Sousa
17/08/2011
Você pode tentar algo semelhante a isso aqui:
Abraço
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
GOSTEI 0
Fernando Ferreira
17/08/2011
Uma pergunta ..!
O campo que vai receber esta informação qual é o tipo dele .?
foto, texto longo ?
O campo que vai receber esta informação qual é o tipo dele .?
foto, texto longo ?
GOSTEI 0
Marcelo
17/08/2011
Estou usando o tipo de campo "Text" do banco sql 2000
GOSTEI 0