PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum datasnap retornando array json #489364

19/08/2014

0

pessoal preciso de ajuda, renho o seguinte metodo no meu servidor datasnap

function TServerMethods1.GetClientesServer(var msgRet:string; nomeVend:string; datHoraUltAtualizacao:string;
cod_vend:Integer = 0): TJSONArray;
var
myCli: TClientes;
con:TConexao;
dbCon:TFDConnection;
qrCli:TFDQuery;
begin
SaveLog('Vendedror '+nomeVend+' solicitou atualizacao de Clientes');
Result := TJSONArray.Create;
con:=TConexao.Create();
myCli:=TClientes.Create();
qrCli:=TFDQuery.Create(nil);
try
try
dbCon:=con.Conectar(dbCon);
qrCli.Connection:=dbCon;
qrCli:=myCli.GetCli(qrCli, StrToDateTime(datHoraUltAtualizacao), cod_vend);
while not qrCli.Eof do
begin
myCli.codigo :=qrCli.Fields.Fields[0].AsInteger;
myCli.nome :=qrCli.Fields.Fields[1].AsString;
myCli.endereco:=qrCli.Fields.Fields[2].AsString;
myCli.cidade :=qrCli.Fields.Fields[3].AsString;
myCli.bairro :=qrCli.Fields.Fields[4].AsString;
myCli.cep :=qrCli.Fields.Fields[5].AsString;
myCli.uf :=qrCli.Fields.Fields[6].AsString;
myCli.cpf :=qrCli.Fields.Fields[7].AsString;
myCli.fone :=qrCli.Fields.Fields[8].AsString;
myCli.celular :=qrCli.Fields.Fields[9].AsString;
myCli.cod_repr:=qrCli.Fields.Fields[10].AsInteger;
myCli.dt_nasc :=qrCli.Fields.Fields[11].AsDateTime;
myCli.lim_credto:=qrCli.Fields.Fields[12].AsFloat;
myCli.insc_est:=qrCli.Fields.Fields[13].AsString;
myCli.dt_cad :=qrCli.Fields.Fields[14].AsDateTime;
myCli.nome_fant:=qrCli.Fields.Fields[15].AsString;
myCli.compr :=qrCli.Fields.Fields[16].AsString;
myCli.fone_compr:=qrCli.Fields.Fields[17].AsString;
myCli.obs :=qrCli.Fields.Fields[18].AsString;
myCli.e_mail :=qrCli.Fields.Fields[19].AsString;
myCli.hp :=qrCli.Fields.Fields[20].AsString;
myCli.cond_pgto:=qrCli.Fields.Fields[21].AsString;
myCli.anotacoes:=qrCli.Fields.Fields[22].AsString;
myCli.tipo:=qrCli.Fields.Fields[23].AsString;
myCli.icms:=qrCli.Fields.Fields[24].AsString;
myCli.cr:=qrCli.Fields.Fields[25].AsString;
myCli.cod_regiao:=qrCli.Fields.Fields[26].AsInteger;
myCli.regiao:=qrCli.Fields.Fields[27].AsString;
myCli.obs2:=qrCli.Fields.Fields[28].AsString;
myCli.obs3:=qrCli.Fields.Fields[29].AsString;
myCli.obs4:=qrCli.Fields.Fields[30].AsString;
myCli.codigo_reg:=qrCli.Fields.Fields[31].AsInteger;
myCli.simples:=qrCli.Fields.Fields[32].AsString;
myCli.email_nfe:=qrCli.Fields.Fields[33].AsString;
myCli.suframa:=qrCli.Fields.Fields[34].AsString;
myCli.rota:=qrCli.Fields.Fields[35].AsInteger;
myCli.variacao:=qrCli.Fields.Fields[36].AsFloat;
myCli.revenda:=qrCli.Fields.Fields[37].AsBoolean;
//adiciona ao array / converte o objeto pra json
Result.AddElement(myCli.ObjectToJSON<TClientes>(myCli));
qrCli.Next;
end;
msgRet:='';
con.Desconectar(dbCon);
except
on E:Exception do
begin
msgRet:='Erro ao carregar clientes '+e.Message;
SaveLog('Erro ao carregar clientes '+e.Message);
con.Desconectar(dbCon);
end;
end;
finally
dbCon.Free;
con.Free;
myCli.Free;
end;
end;

porem nao sei se estou fazendo da forma correta pois meu servidor (que por sinal é uma maquina muito boa)
esta travando ao chamar este metodo
pois nao vi uma outra forma sem ser com um while pra popular o objeto cliente e ir adicionando ao array
qundo pego poucos clientes bls funciona
mas acontece que as vezes precisarei atualizar todos os clientes e hoje a tabela contem quase 20.000 registros e aia esta travando
preciso urgente de alguma sugestao
quem puder colaborar agradeco
Volmir Santos

Volmir Santos

Responder

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

Aceitar