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

Busca No Bd?


schaukoski

Pergunta

Ola !

Estou com dúvidas.

Como faço para meu Edit, onchange, Fazer uma busca no meu banco de dados, e mostrar na tabela, por ordem?

my.php?image=imagemdk8.jpg

a>

esse é meu programa..

eu quero que quando o cara digitar a letra M pro exemplo, se estiver checked no Nome, que mostre todos os nomes com M em ordem....

ai se ele digitar MA..

aaparecer todos os nomes que comecarem com MA...

uma busca entende?

obrigado!!

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

na sua query você deve colocar o campo que você quer pesquisar

ex.

"

SELECT CLIENTES.NOME

, CLIENTES.ENDERECO

FROM CLIENTES

WHERE CLIENTES.NOME LIKE :PESQUISA

"

depois no onChange do Edit você faz

Tabela.Close;

Tabela.ParamByName('PESQUISA').AsString := Edit1.Text + '%';

Tabela.Open;

ou ao invés de fechar e abrir a tabela você pode usar o Locate

Tabela.Locate('NOME', Edit1.Text [loPartialKey, loCaseInsensitive]);

e por ai vai....

espero ter ajudado.

Link para o comentário
Compartilhar em outros sites

  • 0

não a Tabela ali seria o AdoQuery, AdoDataSet, AdoTable

esse é somente o nome que eu dei para a tabela em questão

mas já que você não usa SQL você pode passar LOCATE

vamos supor que eu esteja usando uma AdoTable

AdoTable.Locate('NOMEDOCAMPO', Edit1.Text, [loPartialKey, loCaseInsensitive]);

essa função "Locate" localiza os registros na tabela de acordo com o "Edit1.Text" .

já as opções de Locate, aquelas que estão dentro das chaves [], são para pesquisa incremental (loPartialKey) ou seja cada tecla que você pressionar ele vai filtrando, e para pesquisa em ambos CharCase (loCaseInsensitive), você pesquisa tanto letras minusculas quanto maíusculas ele trata de uma maneira só...

abraços

Link para o comentário
Compartilhar em outros sites

  • 0

não a Tabela ali seria o AdoQuery, AdoDataSet, AdoTable

esse é somente o nome que eu dei para a tabela em questão

mas já que você não usa SQL você pode passar LOCATE

vamos supor que eu esteja usando uma AdoTable

AdoTable.Locate('NOMEDOCAMPO', Edit1.Text, [loPartialKey, loCaseInsensitive]);

essa função "Locate" localiza os registros na tabela de acordo com o "Edit1.Text" .

já as opções de Locate, aquelas que estão dentro das chaves [], são para pesquisa incremental (loPartialKey) ou seja cada tecla que você pressionar ele vai filtrando, e para pesquisa em ambos CharCase (loCaseInsensitive), você pesquisa tanto letras minusculas quanto maíusculas ele trata de uma maneira só...

abraços

Olá tiagojacomini,

O Locate não filtra os registros, ele apenas leva o foco ao primeiro que ele encontra de acordo com a pesquisa. Ele poderia usar o ADOQuery mesmo.

então...

eu não uso SQl, to usando ADO com access....

e aquele Tabela, seria meu Grid?

não intendi muito bem ;...

eu tenho meu Grid conectado com o meu banco de dados.

nada mais alem disso..

tem como você explicar mais detalhadamente?! vlw !!!

schaukoski,

então coloque o nome de sua tabela, nome dos campos, ect...

pra fazer do jeito que tem que ser.

Abs. Progr'amador.

B)

Link para o comentário
Compartilhar em outros sites

  • 0

sim OK... esotu em outro pc agora..

schaukoski Aqui.

eu acesso o dbgrid por um datamodule chamado dmData

detro dele tem um TADOTable, e o DataSource...

apenas isso que tenho.. n tenho o Query... tenho que adicionálo?

temcomo vocês colocarem um exemplo?

preciso colokar mais um table, no meu form, ou da pra acessa pelo datamodule mesmo?

dmData.atclientes

atclientes é meu Table

e dsclientes é meu datasource...

to usando u edit normal como edit1

acho que só...

brigadao!!!!!!!!!!!!!!!

Link para o comentário
Compartilhar em outros sites

  • 0

Olá,

Adicione um ADOQuery

E no onChange coloque:

  with dmData.ADOQuery do begin
     SQL.Clear;
     SQL.Add('select * from NOME_DA_TABELA Where CAMPO_NOME Like '+''''+Trim(Edit1.Text)+'%'+''''+'');
     SQL.Add('Order By CAMPO_NOME');
     Open;
  end;

E levando em consideração a ideia do colega tiagojacomini, acredito que realmente você possa usar o LOCATE sim.

Abs. Progr'amador.

B)

Link para o comentário
Compartilhar em outros sites

  • 0

eu tentei o seguinte

procedure TFormPrincipal.LabeledEdit1Change(Sender: TObject);
begin
Tabela.Locate(Tabela.Fields[1].FieldbyName,  labelededit1.text, [lopartialkey, locaseinsensitive]);
end;
mas não da certo ele dá um erro no FieldBYname [Error] Unit3.pas(80): Undeclared identifier: 'FieldbyName' isso eu peguei num livro que ele fala tambem pra fazer um negocio nu public
  private
    FTabela: TCustomADODataset;
    procedure SetTabela(const Value: TCustomADODataset);
    { Private declarations }
  public
  property Tabela: TCustomADODataset read FTabela write SetTabela;
    { Public declarations }
  end;
procedure TFormPrincipal.SetTabela(const Value: TCustomADODataset);
begin
  FTabela := Value;
end;

tudo isso que fiz, eu fiz sem utilizar nenhum QUERY

está faltando ele.. sei la?

tipo

unica coisa que eu to usando ai é o table e o datasource que liga no grid ..

o meu grid mostra meu banco de dados... mas o problema e a procura =! to parado com meu programa ajuda eu please!

não intendi o que o livro ensina a fazer.. e se tem algo errado alguém pode me ajudar?!?! =)))!!!!! brigadaooo

Link para o comentário
Compartilhar em outros sites

  • 0

eu tentei o seguinte

procedure TFormPrincipal.LabeledEdit1Change(Sender: TObject);
begin
Tabela.Locate(Tabela.Fields[1].FieldbyName,  labelededit1.text, [lopartialkey, locaseinsensitive]);
end;

mas não da certo ele dá um erro no FieldBYname

[Error] Unit3.pas(80): Undeclared identifier: 'FieldbyName'

Esse erro é porque o primeiro parâmetro de Locate é uma String que contém os nomes dos campos da sua tabela separados por ";", então: Tabela.Fields[1] retorna um objeto TField que não possui FieldbyName, daí o erro.

Se fizer: Tabela.FieldbyName('Nome do Campo'), também retornará um TField.

Em outras palavras, ambos os casos retornam um objeto e não uma string.

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,3k
    • Posts
      652,3k
×
×
  • Criar Novo...