Count SQL nao ta funcionando...

Delphi

24/11/2005

não estou conseguindo dar o Ar da Graça no meu Count...
Quando clico no botao, ele trava o programa...
está assim...

datamodule1.TbArqHist.SQL.Clear;
datamodule1.TbArqHist.SQL.add(´select count(*) as qtd from arq_hist where inscricao =1050´);

datamodule1.TbArqHist.ParamByName(´insc´).AsString:=edit1.text;
datamodule1.TbArqHist.open;
teste.Caption := datamodule1.TbArqHist.Fields[0].AsString;


Faz tempo q tenho esta duvida...
Obrigado.


Geisonc

Geisonc

Curtidas 0

Respostas

Geisonc

Geisonc

24/11/2005

esqueci de avisar.. estou usando firebird. com o isql, funciona perfeito, mas no codigo do programa ele ta travando..


GOSTEI 0
Edilcimar

Edilcimar

24/11/2005

select count(*) ? não seria select count(nomecampo) as qtd?


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

24/11/2005

tente assim:

with datamodule1.TbArqHist do
begin
  SQL.Clear; 
  SQL.add(´select count(*) as qtd from arq_hist where inscricao = :insc´); 
  ParamByName(´insc´).AsString := edit1.text;
  Open; 
  teste.Caption := Fields[0].AsString;
end;



GOSTEI 0
Geisonc

Geisonc

24/11/2005

não consegui nem colocando o campo no lugar de (*) e nem do jeito que o emerson.en explicou...

ele executa o comando porem o programa fica como (não respondendo) ...


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

24/11/2005

with datamodule1.TbArqHist do
begin
  Close;
  SQL.Clear;
  SQL.add(´select count(*) as qtd from arq_hist where inscricao = :insc´);
  ParamByName(´insc´).AsString := edit1.text;
  Open;
  teste.Caption := Fields[0].AsString;
end;


certifique-se de haver um índice nessa tabela pelo campo inscricao


GOSTEI 0
Geisonc

Geisonc

24/11/2005

Indice ? desculpe a ignorancia, como assim..

na parte da criacao do banco, depois criacao das tabelas, criacao do gerador, criacao do trigger, eu paro por ai.

O que esta errado entao ?


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

24/11/2005

isso mesmo: índices!

o aumento de performance é brutal depois da criação dos índices.

CREATE INDEX ARQ_HIST_IDX1 ON ARQ_HIST (INSCRICAO);

depois do índice criado execute a instrução novamente e veja se a performance melhora.


GOSTEI 0
Geisonc

Geisonc

24/11/2005

realmente ficou melhor a pesquisa, porem, para a consulta que eu quero no caso o select count, ainda ta travando... que saco, quando era em db eu conseguia fazer perfeitamente...

com o isql ele demora 1 segundo para fazer a pesquisa, entao creio eu que nao seje tao demorado a filtrar os campos....

uma pergunta... como eu estou criando o campo ´as qtd´, eu preciso coloca-lo do fields editor como campo calculado ? ou nao eh necessario... em todo caso, criei ele e tbem travou...

tá complicado o negocio...


GOSTEI 0
Delphi32

Delphi32

24/11/2005

me diga o seguinte:

1) Quais são os componentes que você está usando para acessar o banco de dados?

2) O componente TbArqHist é de que tipo? (IBTable, IBQuery, etc.)

Se funciona pelo isql deveria funcionar também pelo programa, então acredito que haja algum erro de configuração nos componentes...


GOSTEI 0
Geisonc

Geisonc

24/11/2005

Utilizo Firebird/Interbase,

componentes IBDatabase, IbQuery. As configuracoes do database estao voltatas para o banco criado, cada query conectada ao banco e com instrucoes se select * para cada tabela em cada query, que sao 7 no total. Uma query esta conectada na tabela arq_hist, na qual tenho que fazer varias pesquisas e tenho que fazer em varias tabelas, porem a base das pesquisas é atraves desta instrucao que nao da certo... ele trava o delphi de uma maneira que eu tenho que finalizar o delphi (ctl alt del), para poder voltar a usar o pc.

Funciona perfeitamente em ISQL, chega a lacrimejar os olhos....


GOSTEI 0
Geisonc

Geisonc

24/11/2005

********
Fiz um banco de dados de teste em firebird, com uns campinhos chucros, para ver se contava, e CONTOU......

mostrou certinho quantos registros tem na tabela.. etc...

e no projeto oficial nao conta nem por decreto, e ainda trava...

alguem tem alguma sugestao ?


GOSTEI 0
Geisonc

Geisonc

24/11/2005

Bom, tirei TODOS os componentes do modulo, e coloquei o basico + a tabela que eu to tentando fazer funcionar....

DEU CERTO !

agora vou colocando as outras e vou tentando...

por enquanto

Muito Obrigado.


GOSTEI 0
POSTAR