Array
(
)

Count SQL nao ta funcionando...

Geisonc
   - 24 nov 2005

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

#Código

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
   - 24 nov 2005

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


Edilcimar
   - 24 nov 2005

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


Emerson
   - 24 nov 2005

tente assim:

#Código

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;



Geisonc
   - 24 nov 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) ...


Emerson
   - 24 nov 2005

#Código

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


Geisonc
   - 24 nov 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 ?


Emerson
   - 24 nov 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.


Geisonc
   - 24 nov 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...


Delphi32
   - 24 nov 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...


Geisonc
   - 24 nov 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....


Geisonc
   - 25 nov 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 ?


Geisonc
   - 25 nov 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.