GARANTIR DESCONTO

Fórum Locate selecionando registro no dbgrid #49152

02/02/2005

0

Seguinte...

tenho um dbGrid, ligado a um datasource, que esta ligado num DataSet de uma tabela....

Esse DBGrid, me mostra todos os registros cadastrados e talz...

Quero fazer o seguinte, quando eu for digitando no edit ele vai buscando nos campos ... pelo registro... ae eu fiz o seguinte...

if not (suiEdit1.Text = ´´") then 
begin 
 BD.AgendaDataSet.Open; 
 BD.AgendaDataSet.Locate(´nome´,suiEdit1.Text,[LoPartialKey,LoCaseInsensitive]); 
end;


soh q ele da erro... alguem sabe como faço o tipo de busca como quero fazer? brigadao :P


Salsa

Salsa

Responder

Posts

02/02/2005

Vinicius2k

Colega,

Qual o erro e aonde (evento) este código que vc apresentou foi colocado?

T+


Responder

Gostei + 0

02/02/2005

Rodolpho123

No evento ONChange do seu edit, faça assim:
BD.AgendaDataSet.Locate(´nome´,suiEdit1.Text, LoPartialKey,LoCaseInsensitive]); 

LoPartialKey = Faz a consulta com o resultado mais aproximado do seu parâmetro

LoCaseSensitive = Faz a consulta diferenciando caracteres em caixa alta e caixa baixa, ex: NomE nome

E mantenha o seu DataSet sempre aberto para fazer isto que vc quer. O erro que está acontecendo (apesar de vc não ter notificado) é que provavelmente vc está tentando abrir o seu DataSet que já está aberto...


Responder

Gostei + 0

02/02/2005

Salsa

no onChange da edit ele faz akilo

e ele rola um access violation
:(

Access violation at address 00402D85 in module ´MinasBox.exe´. Read of address 00000758.


Responder

Gostei + 0

02/02/2005

Vinicius2k

Colega,
no onChange da edit ele faz akilo

Retire o método DataSet.Open de dentro onChange. Ele deve ser aberto antes.

e ele rola um access violation

1. O campo ´nome´ existe no DataSet?
2. No seu código vc tem : [b:da6bf2dcd5]if not (suiEdit1.Text = ´´´)[/b:da6bf2dcd5]... duas aspas simples representando nulo e uma aspa dupla.. foi erro de digitação da questão ?
3. Seu ´TEdit´ não me parece um Edit convencional.. ele é o TEdit do Delphi? Se não for certifique-se de que vc pode fazer leitura da sua proprieade Text desta forma. O problema pode estar no componente e não na rotina. Faça o teste com o TEdit da VCL do Delphi.

T+


Responder

Gostei + 0

02/02/2005

Salsa

procedure TAgendaTel.suiEdit1Change(Sender: TObject);
begin
 if not (suiEdit1.Text = ´´) then
  BD.AgendaDataSet.Locate(´nome´,suiEdit1.Text,[LoPartialKey,LoCaseInsensitive]);
end;


tirei o open ... e continua o access violation

o ´´ = vazio ....

e o campo nome existe sim na tabela q eu quero :)


Responder

Gostei + 0

02/02/2005

Afarias

´Access Violation´ ocorre geralmente quando se está tendando utilizar um objeto não instanciado.

Verifique se o form/datamodule [b:dc1a7dd086]BD[/b:dc1a7dd086] está criado no momento q vc está tentando utilizá-lo


T+


Responder

Gostei + 0

02/02/2005

Salsa

ele tah criado sim... tanto eh q os campos da dbgrid aparecem la com os registros e tal :)


Responder

Gostei + 0

02/02/2005

Vinicius2k

E o ´Edit´? É o TEdit da VCL ou não?

Embora o Anderson esteja certo e o AV que o ele comentou seja o mais comum, este erro pode ocorrer também na leitura de uma propriedade de um componente ´problemático´, dependendo de como foi implementada a propriedade ou mesmo, no caso de um Edit, o evento onChange do componente


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar