GARANTIR DESCONTO

Fórum Erro Mismatch in datapacket #417402

24/05/2012

0

Enviada: 24 Mai 2012 20:05 Assunto: Erro Mismatch in datapacket
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

Fabio Machado

Responder

Posts

24/05/2012

Fabio Machado

Não sei o pq mais passou a funcionar. ja fiz uns 1000 cadastros diferentes e ta funcionando.
Responder

Gostei + 0

04/06/2012

Deivison Melo

Os campos foram adicionados ao componente?
Responder

Gostei + 0

04/06/2012

Deivison Melo

Adiciona os campos ao clientdataset
Responder

Gostei + 0

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

Aceitar