Fórum Locate selecionando registro no dbgrid #49152
02/02/2005
0
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
Curtir tópico
+ 0Posts
02/02/2005
Vinicius2k
Qual o erro e aonde (evento) este código que vc apresentou foi colocado?
T+
Gostei + 0
02/02/2005
Rodolpho123
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...
Gostei + 0
02/02/2005
Salsa
e ele rola um access violation
:(
Access violation at address 00402D85 in module ´MinasBox.exe´. Read of address 00000758.
Gostei + 0
02/02/2005
Vinicius2k
Retire o método DataSet.Open de dentro onChange. Ele deve ser aberto antes.
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+
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 :)
Gostei + 0
02/02/2005
Afarias
Verifique se o form/datamodule [b:dc1a7dd086]BD[/b:dc1a7dd086] está criado no momento q vc está tentando utilizá-lo
T+
Gostei + 0
02/02/2005
Salsa
Gostei + 0
02/02/2005
Vinicius2k
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
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)