Mudar o DataSource do DBGrid na mão

Delphi

03/01/2008

Bom dia,
estou criando um DBGrid de consulta em que o usuario devera utilizar dois campos para pesquisa, ou ele usa o codigo ou ele usara o nome.

Para isso deve utilizar o mesmo DBGrid mas existe dois Edits em que um ele informa o Codigo e no outro o Nome. Mas ele deve usar um ou outro para efetuar tal pesquisa.

Estive pesando no evento onKeyDown qndo ele der enter no edit um ele utilizara uma query que faz a busca por codigo e no edit com o nome seria utilizado uma query que faria a busca por nome.

Estive pensando no seguinte codigo:

busca por codigo

1: ClientDataSet1.Close;
2: Query1.Params[0].Value := StrToInt(Edit1.Text)
3: ClienteDataSet1.Open;
4: DBGrid.DataSource := DataSet1;

Mas da erro na linha 4, creio q esteja faltando algo, procurei e nao encontrei nada que podesse me da uma luz,então se alguem poder me ajudar com um trecho de codigo ficaria grato,

desde ja obrigado pela ajuda


Ticopr

Ticopr

Curtidas 0

Respostas

Rjun

Rjun

03/01/2008

Que erro esta dando?


GOSTEI 0
Otto

Otto

03/01/2008

qual o nome do [u:7b518e2dda]datasource[/u:7b518e2dda]? voce esta tentando por um [b:7b518e2dda]DataSet [/b:7b518e2dda]em uma propriedade [b:7b518e2dda]DataSource[/b:7b518e2dda]?[/b]


GOSTEI 0
Ticopr

Ticopr

03/01/2008

desculpe faltou coisa na linha 4, na pressa de flr

4: DBgrid1.DataSource.dataSet.Name := ´DM.DataSet1´;

da estouro de memoria quando chega nessa linha.
deixei o DBgrid sem DataSet e mesmo asism ocorre esse erro

Não rpecisa ser essa minha logica, se tiverem outra que poderia resolver esse problema de poder usar em uma consulta dois tipo de consulta para um mesmo grid, podendo pesquisar por nome ou por codigo mas as informações a apresentar no grid sao as mesma apenas a forma de consulta deve ter essas duas opções


GOSTEI 0
Rjun

Rjun

03/01/2008

Tire os apostrofos.


GOSTEI 0
Ticopr

Ticopr

03/01/2008

Se eu retirar não compila, por isso colokei, dae qndo vai executar essa linha da estouro de memoria.

A outra solução encontrada foi substituir a query, mas estou tendo problema com os paramentros que tenho de passar, pois qndo chega na linhado paramatro da estou de que parametro nao existe, algo assim, não me recordo pois faz um certo tempo que estava mexendo com isso.


GOSTEI 0
Rjun

Rjun

03/01/2008

Não vi que você tinha usando o name.

Faça assim:

DBgrid1.DataSource.dataSet := DM.DataSet1; 


Lembre-se que você esta trabalhando com objetos.


GOSTEI 0
Devmedia

Devmedia

03/01/2008

Amigo ticopr
Tudo bom cara?

Você disse:
1: ClientDataSet1.Close; 2: Query1.Params[0].Value := StrToInt(Edit1.Text) 3: ClienteDataSet1.Open; 4: DBGrid.DataSource := DataSet1;


Já tentou isso:

4: DBGrid.DataSource := [color=blue:c5f595a4fb]ClientDataSet1[/color:c5f595a4fb];

Hehehe ... =]
Como creio que não deve ser isto, no seu DM ou no seu próprio Form aonde está o DBGrid que quer mostrar os dados. Insira um DataSource1 e nele Link seu DataSet para -> DM.ClientDataSet1

Depois no DBGrid -> DataSource -> DataSource1

*Um pequeno detalhe. Quando voce utiliza DBExpress e não ativa a conexão do ClientDataSet -> Connect := True ou Active := True
Oque estiver linkado a ele, no seu caso DBGrid, não irá exibir/retornar nenhum valor.

Um abraço.
Quaisquer dúvidas.
Att.


GOSTEI 0
Ticopr

Ticopr

03/01/2008

Opa galera,
desculpe a demora consegui fazer o que queria, acabei modificando a Query mesmo e deu certo.

Obrigado pela ajuda de todos


GOSTEI 0
POSTAR