Fórum Erro Mismatch in datapacket #417402
24/05/2012
0
Boa Noite galera. Hoje surgiu uma muito legal. estou tentando gravar um templete no campo blob tipo binary no firebird utilizando o delph7 e dbexpress.
acontece que se eu não fizer nenhum filtro, a gravação acontece blz, mais se eu ficar qualquer filtro ja era da o erro mismatch in datapacket. segue o código:
{Form_busca_cliente:=TForm_busca_cliente.Create(self);
dados._cadastra_digital:=0;
Form_busca_cliente.ShowModal;
}
dados._cadastra_digital:=1;
dados._codigo_cliente:=4;
if dados._cadastra_digital<0>= 0 then
WriteLog(Fingerprint enrolled with id = + IntToStr(id))
else
WriteLog(Error: Fingerprint not enrolled);
end;
Se eu passar os dados assim ele funciona, se eu for localizar o cliente ja não funciona mais.
segue o restante do codigo
function Enroll(): Integer;
Var
id: Integer;
Begin
if (TemplateIsValid()) then begin
// Adds template to database and gets the ID.
id := DB.addTemplate(template);
Enroll := id;
end
else
Enroll := -1;
end;
function TDBClass.addTemplate(template: TTemplate): Integer;
var
tptStream: TMemoryStream;
id: Integer;
p: PChar;
begin
dados.CDS_clientes.Active:=false; // ja retirei esse linha quando faço o filtro
dados.CDS_clientes.Active:=True; // ja retirei esse linha quando faço o filtro
dados.CDS_clientes.Locate(cod_clientes, dados._codigo_cliente,[]); // ja retirei esse linha quando faço o filtro
dados.CDS_clientes.Edit;
tptStream := TMemoryStream.Create();
SafeArrayAccessData(template.tpt, Pointer(p));
tptStream.write(p^, template.size);
SafeArrayUnaccessData(template.tpt);
(dados.CDS_clientesDIGITAL as TBlobField).LoadFromStream(tptStream);
dados.CDS_clientes.Post;
id := dados._codigo_cliente;
addTemplate := id;
end;
eu quando eu abro o form_busca_cliente e faço o filtro para ficar apenas o registro que eu desejo:
dados.CDS_clientes.Active:=False;
dados.SQLDS_clientes.Close;
dados.SQLDS_clientes.CommandText:=;
dados.SQLDS_clientes.CommandText:=select * from clientes where cod_clientes=:id;
dados.SQLDS_clientes.ParamByName(id).AsInteger:=codigo;
dados.SQLDS_clientes.Open;
dados.CDS_clientes.Active:=true;
dados.CDS_clientes.Refresh;
da o bendito erro.
Eu sinseramente não entedi o porque.
Fabio Machado
Curtir tópico
+ 0Posts
24/05/2012
Fabio Machado
Gostei + 0
04/06/2012
Deivison Melo
Gostei + 0
04/06/2012
Deivison Melo
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)