onshow abrir query mudar ?

Delphi

28/02/2016

boa tarde, quando vou abrir uma form no onshow fica assim

qrestoque.close;
qrestoque.SQL.clear;
qrestoque.SQL.add('select * from estoque where codproduto = ''' +
eproduto_industria.Text + '''');
qrestoque.open;

tudo certo, mas o problema e o seguinte tenho que abrir muitas query e o form esta pesado tem outra maneira de deixar rapida quando for abrir ?
Leandro Peralta

Leandro Peralta

Curtidas 0

Respostas

Bin Laden

Bin Laden

28/02/2016

Você vai utilizar todas as query no form principal da aplicação?
GOSTEI 0
Leandro Peralta

Leandro Peralta

28/02/2016

opa blz, não e no principal, seria industrialização, esta funcionado certo, mas tem muitas query para abrir junto com a form
GOSTEI 0
Marco Antônio

Marco Antônio

28/02/2016

Confirmando a dúvida. Realmente é necessário abrir todas as Querys?
Utilizar '*' nas seus requisitos do SQL é 'tenso'. Não tem como informar somente os campos necessários?

Costumo utilizar: 'Query.DisableControls' antes de abrir a Query e 'Query.EnableControls' para reativar caso seja necessário. Isso costuma ter um
grande desempenho na abertura da Query.


Abc
GOSTEI 0
Leandro Peralta

Leandro Peralta

28/02/2016

Marco, quase todas, vou usar Query.DisableControls, nunca usei ele vou ver como fica ai volto para falar o resultado
GOSTEI 0
Leandro Peralta

Leandro Peralta

28/02/2016

Marco ficaria assim ?

qrestoque.DisableControls;
qrestoque.close;
qrestoque.SQL.clear;
qrestoque.SQL.add('select * from estoque where codproduto = ''' +
eproduto_industria.Text + '''');
qrestoque.open;
qrestoque.EnableControls;
GOSTEI 0
Huidemar Costa

Huidemar Costa

28/02/2016

Você realmente precisa mostrar todos os registros quando abre a tela?

As vezes o gargalo está em outra query e não nesta do produto....
GOSTEI 0
Rafael Bosco

Rafael Bosco

28/02/2016

Primeiro, a campo CODPRODUTO é uma Primary Key da tabela ESTOQUE? Se não é, sugiro que coloque, por que as PK das tabelas, são indices que diretamente auxiliam na SQL a achar o determinado campo...

Segundo, você deu um SELECT * , ou seja, está puxando TODOS os campos da tabela ESTOQUE, está correto isso? você usa eles no seu form?

Terceiro, por que no ONSHOW? toda vez que você clicar pra abrir esse formulário, ele vai executar a Query... Não seria melhor um ShowModal? ou já pensou em realizar a consulta no momento que Cria o Form?

Quarto, o campo CODPRODUTO é um campo INTEGER? ou VARCHAR na tabela? por que se ele for INTEGER, sugiro alterar o seu código:
    QrEstoque.Close;
    QrEstoque.SQL.Clear;
    QrEstoque.Add('SELECT * FROM ESTOQUE WHERE CODPRODUTO = :CODPRODUTO');
    QrEstoque.ParamByName('CODPRODUTO').AsInteger := CodProduto // essa pode ser uma variavél controlavél através de Propertys do Form;
    QrEstoque.Open;
GOSTEI 0
Marco Antônio

Marco Antônio

28/02/2016

Marco ficaria assim ?

qrestoque.DisableControls;
qrestoque.close;
qrestoque.SQL.clear;
qrestoque.SQL.add('select * from estoque where codproduto = ''' +
eproduto_industria.Text + '''');
qrestoque.open;
qrestoque.EnableControls;


Isto.

Mas conforme tb mencionado. Explore mais a questão de primary Key e indexação.
Considere tb as demais informações tipo, carregar é mesmo necessário no OnCreate? Pq não no OnShow ou através e melhor ainda de um botão?

Abc
GOSTEI 0
POSTAR