Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

hend.maia

Abrir formulario com os dados carregados

Recommended Posts

Bom dia pessoal, sou novo no fórum e novo na programação também hehe,

 

Estou fazendo um cadastro de fornecedor e usei a seguinte condição:

 

procedure TF_CadBase1.Edit1Change(Sender: TObject);
begin
inherited;
if RB_codigo.Checked then
begin
DM.ds_fornecedor.DataSet.Locate('fornec_codigo',Edit1.Text,[loCaseInsensitive,loPartialKey]);
end;
if RB_nome.Checked then
begin
DM.IBDSFornecedor.Close;
DM.IBDSFornecedor.ParamByName('nome').AsString:=('%'+Edit1.Text+'%');
DM.IBDSFornecedor.Open;
end;

end;

 

O problema é que quando abro esse formulário ele não abre com todos os dados do DBgrid carregados, o DBgrid abre sem nada, ai quando faço a primeira pesquisa ai sim aparece todos os fornecedores cadastrados.

Quero abrir esse form com a DBgrid com todos os fornecedores.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você deve programar o evento de carga no evento OnShow do seu Form para isso... o evento em que codificou sua regra de consulta só é ativado quando há alterações no seu TEdit, por isso não funciona quando entra na tela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu tentei abrir meu dataset pelo onshow mas num deu certo não...

continua a mesma coisa, abre o dbgrid sem os dados, ai faço a consulta aparece tudo.... :upset:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como está o código do seu onShow? É o mesmo que está no edit? Se é o mesmo, provavelmente não trará nenhum retorno mesmo, visto que no evento do TEdit está uma regra que usa o valor do mesmo como parâmetro no filtro do sql.... pra funcionar no onShow, o select não pode fazer filtros where baseados em componentes da tela não preenchidos....

 

Outra coisa: já debugou o código do onshow e verificou se o sql que está sendo executado está correto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu sou novo em programação.. :unsure:

 

Meu código ta assim:

 

procedure TF_CadBase1.Edit1Change(Sender: TObject);
begin
inherited;
if RB_codigo.Checked then
begin
DM.ds_fornecedor.DataSet.Locate('fornec_codigo',Edit1.Text,[loCaseInsensitive,loPartialKey]);
end;
if RB_nome.Checked then
begin
DM.IBDSFornecedor.Close;
DM.IBDSFornecedor.ParamByName('nome').AsString:=('%'+Edit1.Text+'%');
DM.IBDSFornecedor.Open;
end;
end;
procedure TF_CadBase1.FormCreate(Sender: TObject);
begin
inherited;
DS_Principal2.DataSet.Open;
DM.IBDSFornecedor.Open;
end;
procedure TF_CadBase1.FormShow(Sender: TObject);
begin
inherited;
DS_Principal2.DataSet.Open;
DM.IBDSFornecedor.Open;
end;
procedure TF_CadBase1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
inherited;
DS_Principal2.DataSet.Close;
DM.IBDSFornecedor.Open;
end;
O que q eu tenho q muda ?????

Compartilhar este post


Link para o post
Compartilhar em outros sites

O IBDSFornecedor é um TIBDataSet? Se for, como está o SQL no SelectSQL? Está usando filtros? O Sql que está codificado no componente funciona se executado no BD (trás algum retorno)?

 

Outra coisa: não é preciso abrir no create e no show do form o mesmo componente, deixe apenas no OnShow estes comandos. O seu DBGrid está associado a qual dataset? Verificou se ao abrir o mesmo no form o mesmo tem associado a ele alguma informação para ser exibida no DBGrid?

Compartilhar este post


Link para o post
Compartilhar em outros sites
IBDSFornecedor é um dataset sim, a select dele é:
select * from FORNECEDOR
where fornec_nome like :nome
e ela está funcionando corretamente sim;
Meu DBgrid ta associado a um datasource/dataset/IBDSFornecedor
Como verifico se ao abrir o mesmo no form o mesmo tem associado a ele alguma informação para ser exibida no DBGrid?


Conseguiiii :natalbiggrin:

 

Um cara de outro forum falou pra mim o seguinte:

 

Cole o seguinte código no onshow:

 

DM.IBDSFornecedor.Close;

DM.IBDSFornecedor.ParamByName('nome').AsString := '%';
DM.IBDSFornecedor.Open;

 

e foi batataaa hehe... só nao entendi muito bem a lógica.. mas ta funcionando certinho agora.

 

Obrigado por ter se colocado desposto a me ajudar :natalhappy:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.