resultado de 50 em 50
Galera tenho a seguinte situação:
Uma tabela pessoa que tem codigo, nome e digital com mais de 20.000 dados.
Faço um select tipo: Select Codigo, Nome, Digital From Pessoa
retorno a quantidade de dados com um cds.RecordCount.
preciso fazer um for ou outra coisa que me retorne registro de 1 a 50 insira em uma variável, faça uma comparação, estando correto o loop pare, não estando correto faça a comparação de 51 a 100 e ai por diante... alguém teria alguma sugestão para eu testar?
Uma tabela pessoa que tem codigo, nome e digital com mais de 20.000 dados.
Faço um select tipo: Select Codigo, Nome, Digital From Pessoa
retorno a quantidade de dados com um cds.RecordCount.
preciso fazer um for ou outra coisa que me retorne registro de 1 a 50 insira em uma variável, faça uma comparação, estando correto o loop pare, não estando correto faça a comparação de 51 a 100 e ai por diante... alguém teria alguma sugestão para eu testar?
Nilson Alvernaz
Curtidas 0
Respostas
Járabe Emanuel
02/12/2013
Vc que colocar os dados 1, 2, 3 ... 50 em uma variável?
Explica melhor amigo.
Explica melhor amigo.
GOSTEI 0
Nilson Alvernaz
02/12/2013
vou tentar passar mais dados:
tenho o seguinte código:
Select ...
cds.open;
cdsVerifica.First;
for i := 1 to (cdsVerifica.RecordCount) do ((supondo que tenha no mínimo uns 100 registros))
begin
cod := cds.FieldByName('Codigo').Value;
tptBuffer := cds.FieldByName('Digital').Value;
VeridisAddTemplateToDatabase(cod, tptBuffer); (( insere a digital e o codigo em uma variável de uma DLL ))
ret := VeridisMatch(cod, GET_LAST_RESULT); (( verifica se a comparação confere ))
if ret = RESULT_FOUND then (( casou a digital do banco com a da inserida no leitor ))
begin
edtNome.Text := cdsAcesso.fieldbyName('Nome').Value;
CodPessoa := StrToInt(cod);
end;
if ret = RESULT_SUCCESS then (( resultado não encontrado ))
begin
memoLog.Lines.Add('Usuário não encontrado');
end;
if ret = RESULT_NOP then ((Aguardando Biometria...))
begin
//
end;
.... (( continua o código ))
Acontece que se eu colocar mais de 50 registro na função VeridisAddTemplateToDatabase dá access violation se colocar menos o sistema roda direitinho, por isso quero ler de 50 em 50 registro no banco e fazer a comparação.
a função VeridisAddTemplateToDatabase:
function VeridisAddTemplateToDatabase(Const id: AnsiString; Const tptBuffer: AnsiString): Integer;
begin
Result := veridishighlevel_addTemplateToDatabase(PAnsiChar(id), PAnsiChar(tptBuffer), nil);
end;
function veridishighlevel_addTemplateToDatabase(Const id: PAnsiChar; Const tptBuffer: PAnsiChar; Const databaseName: PAnsiChar):
Integer; stdcall external 'veridishighlevel.dll'
tenho o seguinte código:
Select ...
cds.open;
cdsVerifica.First;
for i := 1 to (cdsVerifica.RecordCount) do ((supondo que tenha no mínimo uns 100 registros))
begin
cod := cds.FieldByName('Codigo').Value;
tptBuffer := cds.FieldByName('Digital').Value;
VeridisAddTemplateToDatabase(cod, tptBuffer); (( insere a digital e o codigo em uma variável de uma DLL ))
ret := VeridisMatch(cod, GET_LAST_RESULT); (( verifica se a comparação confere ))
if ret = RESULT_FOUND then (( casou a digital do banco com a da inserida no leitor ))
begin
edtNome.Text := cdsAcesso.fieldbyName('Nome').Value;
CodPessoa := StrToInt(cod);
end;
if ret = RESULT_SUCCESS then (( resultado não encontrado ))
begin
memoLog.Lines.Add('Usuário não encontrado');
end;
if ret = RESULT_NOP then ((Aguardando Biometria...))
begin
//
end;
.... (( continua o código ))
Acontece que se eu colocar mais de 50 registro na função VeridisAddTemplateToDatabase dá access violation se colocar menos o sistema roda direitinho, por isso quero ler de 50 em 50 registro no banco e fazer a comparação.
a função VeridisAddTemplateToDatabase:
function VeridisAddTemplateToDatabase(Const id: AnsiString; Const tptBuffer: AnsiString): Integer;
begin
Result := veridishighlevel_addTemplateToDatabase(PAnsiChar(id), PAnsiChar(tptBuffer), nil);
end;
function veridishighlevel_addTemplateToDatabase(Const id: PAnsiChar; Const tptBuffer: PAnsiChar; Const databaseName: PAnsiChar):
Integer; stdcall external 'veridishighlevel.dll'
GOSTEI 0