Ir para conteúdo
Fórum Script Brasil
  • 0

filtros usando clientDataset de outro form


nilegor

Pergunta

Quando clico no botão OK do form filtro, da erro de acess violation.

Código que esta no botão OK do form filtro:

frmEstoque.ClientDataSet_estoque.Filtered := false;
frmEstoque.ClientDataSet_estoque.Filter := 'data_cad>='''+DateToStr(DateTimePicker1.Date)+''''+
'and data_cad<='''+DateToStr(DateTimePicker2.Date)+'''';
frmEstoque.ClientDataSet_estoque.Filtered := true;

neste caso, o erro acontece por que o ClientDataSet_estoque esta no form estoque, e não no form do filtro, então como eu teria de fazer nesse caso, pois não consigo trabalhar com nenhum componente do banco de dados que esta em outro form, no caso no form estoque. Poderia me ajudar ?

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

não consigo trabalhar com nenhum componente do banco de dados que esta em outro form, no caso no form estoque.

voce tem que fazer referencia ao form onde esta os componentes ( colocando a Unit de um Form em outro Form )

veja esse exemplo:

https://www.scriptbrasil.com.br/forum/topic/177238-delphiajuda-como-acessar-uma-procedure-localizada-em-um-form-criado-dinamicamente/?p=674306

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

ok... mas não é só isso

digamos que tenho um ClientDataSet que esta no Form1 e quero usá-lo no Form2

teria que fazer assim no Fom2

uses Unit1; // ( Form1 )

Form1.Arq_IB.Active := false;
Form1.CDS_Arq.Active := false;

Form1.Arq_IB.SQL.Clear;
Form1.Arq_IB.SQL.Append('SELECT * FROM ESTOQUE');

Form1.CDS_Arq.Active := true;

observe que estou usando os componentes do outro form

se no Form2 eu quiser mostrar um DBGrid com o CDS do Form1, tenho que direcionar o DataSource do DBgrid para o ClientDataSet do form1

DataSource = Form1.CDS_Arq

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

o exemplo que passei é usando o MYSQL ( TZQuery, TDataSetProvider, TClientDataSet, TDataSource )

o CDS_Arq se refere ao ClientDataSet do form 1, mas e o Arq_IB ?

Form1.Arq_IB.Active := false; // TZQuery que está com esse nome .. poderia ser qualquer outro nome

Teria como usar um exemplo com os componentes que estou utilizando com Firebird ?

o que muda é apenas o componente de conexão com o banco ... a lógica é a mesma

OBS: na minha opnião voce deveria usar um form para pesquisa e transportar a seleção desse form para o outro form com outros componentes de banco de dados

usar uma select é mais rapído do que usar um filter e vai fazer a mesma coisa que esta querendo

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

ok... vou te dar uma idéia de como fazer

os componentes de conexão com o banco de dados ( IBQuery, DataSetProvider, ClientDataSet, DataSource )

supondo que voce já sabe como utilizar esses componentes, vamos ao objetivo

use um form para realizar a pesquisa na tabela que voce quer

pode ser uma pesquisa mais eleborada

veja esse exemplo

http://www.devmedia.com.br/criando-uma-tela-de-consulta-generica-no-delphi/25525

ou mais simples

http://www.devmedia.com.br/criando-tela-de-pesquisa-padrão-delphi-e-datasource-parte-1/18800

agora vamos supor que voce no seu form de pesquisa usou esses 4 componentes

IBQuery, DataSetProvider, ClientDataSet, DataSource

ao fazer a seleção do registro, voce vai transportar algum campo dessa tabela como parametro para a select que vai estar no componente IBQuery do outro form... ou seja voce vai ter no outro form os mesmos componentes que estavam no form de pesquisa .... só que agora, no outro form principal, vai aparecer todos os campos do registro que voce selecionou no form de pesquisa

a imagem abaixo exemplifica isso

DelphiCS_XVI.png

caso ainda tenha dúvidas, tem muitos exemplos na net

https://www.google.com.br/search?q=forum+delphi&biw=1024&bih=642&source=lnms&também=isch&sa=X&ei=LsfsVO3PH8SpgwTv6IDoCw&sqi=2&ved=0CAcQ_AUoAg#também=isch&q=form+de+pesquisa+delphi&imgdii=vch4j73cAh17hM%3A%3BW2Mc2rQ5vhdMlM%3Bvch4j73cAh17hM%3A

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...