Erro com Query - Dataset not open
Boa Noite pessoal.
Tudo começou depois que comecei a usar uma thread para fazer o processo..
Código da UNit Thread
qryconsulta.Close;
qryconsulta.SQL.clear;
qryconsulta.SQL.Add('select * from tb_sms where status = ''Enviado'' and dt_sms = :datain and dt_sms <= :datafin order by dt_previsao,hora,id_sms asc');
qryconsulta.ParamByName('datain').asdate := DateEdit1.date;
qryconsulta.ParamByName('datafin').asdate := dateedit2.date;
qryconsulta.open;
qryTotalizador.Close;
qryTotalizador.SQL.clear;
qryTotalizador.SQL.Add('select count(id_sms) from tb_sms where status = ''Enviado'' and dt_sms >= :datain and dt_sms <= :datafin');
qryTotalizador.ParamByName('datain').asdate := DateEdit1.date;
qryTotalizador.ParamByName('datafin').asdate := dateedit2.date;
qryTotalizador.open;
Quanto o processo era feito sem uso de Thread funcionava normalmente, porém como se trata de um timer, a aplicação ficava travada...Existe outras query que trabalham juntamente com essa, mas acredito que o erro esta na modo em que chamei a Thread...
Estou chamando-a somente assim:
th:= enviasms.create(false);
th.Resume;
Esta correto? Esse código esta em um timer, ou seja, de minuto em minuto o timer executa esse código acima que chama a thread, é correto fazer assim? Ou tem que ter algum código pra limpar da memória?
Obrigado desde já...
Tudo começou depois que comecei a usar uma thread para fazer o processo..
Código da UNit Thread
qryconsulta.Close;
qryconsulta.SQL.clear;
qryconsulta.SQL.Add('select * from tb_sms where status = ''Enviado'' and dt_sms = :datain and dt_sms <= :datafin order by dt_previsao,hora,id_sms asc');
qryconsulta.ParamByName('datain').asdate := DateEdit1.date;
qryconsulta.ParamByName('datafin').asdate := dateedit2.date;
qryconsulta.open;
qryTotalizador.Close;
qryTotalizador.SQL.clear;
qryTotalizador.SQL.Add('select count(id_sms) from tb_sms where status = ''Enviado'' and dt_sms >= :datain and dt_sms <= :datafin');
qryTotalizador.ParamByName('datain').asdate := DateEdit1.date;
qryTotalizador.ParamByName('datafin').asdate := dateedit2.date;
qryTotalizador.open;
Quanto o processo era feito sem uso de Thread funcionava normalmente, porém como se trata de um timer, a aplicação ficava travada...Existe outras query que trabalham juntamente com essa, mas acredito que o erro esta na modo em que chamei a Thread...
Estou chamando-a somente assim:
th:= enviasms.create(false);
th.Resume;
Esta correto? Esse código esta em um timer, ou seja, de minuto em minuto o timer executa esse código acima que chama a thread, é correto fazer assim? Ou tem que ter algum código pra limpar da memória?
Obrigado desde já...
Antonelly Silva
Curtidas 0
Respostas
Luiz Menin
09/10/2016
Já tentou trocar o th.Resume por th.Start?
GOSTEI 0
Antonelly Silva
09/10/2016
Boa noite, não tentei. Mas é correto dar um Th.create todas as vezes no tímer? Não precisa de finalizar a Thread em algum momento?
GOSTEI 0