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

Fazer Busca Dentro Da Tabela


vms

Pergunta

seguinte pessoal:

estou tentando fazer um gerenciador de arquivos salvos em cds

tenho uma tabela(paradox)

nome |A | |*| (nome do Cd)

conteudo |M |10| | (nome dos arquivos)

queria fazer uma busca de um arquivo especifico dentro do campo

conteúdo usando um edit e um button

obs:a busca seria em toda a tabela e não so apenas no memo que estara

sendo mostrado no momento.

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Cara, Tenta isso:

Cria um string dentro da procedure, e depois usa o código abaixo

proced...bitbtn1click..
var
x: string;
begin
x:='';
if inputquery('Procurar','NomeCampo',x) then
if not tabela1.Locate('NomeCampo',x,[])then
Showmessage('Campo pesquisado não Encotrada');
end;

ve se é isso pode ajudar?

Link para o comentário
Compartilhar em outros sites

  • 0

Apenas complementado a sugestão do Pirambú!. Quando utilizar Locate, é possível que seja conveniente utilizar as opções de localização:

- loCaseInsensitive; (não diferenciação de maiúscula/minúscula)

- loPartialKey. (procura por palavra parcial - tipo substring)

Tabela1.Locate('NomeCampo', x, [loCaseInsensitive])

Mas, dependendo de como você queira fazer esta pesquisa, pode não lhe atender:

1) se você não utilizar loPartialKey, terá que digitar o texto exato ao cadastrado para que localize o mesmo;

2) se você utilizar loPartialKey, a pesquisa encontrará apenas o campo em que seu conteúdo inicia com o texto digitado, ou seja, não acha o texto quando ele aparece no meio.

Para estas situações, acredito que você teria que utilizar um componente TQuery com um SQL contendo LIKE.

Mas, ainda pode haver outro problema. Eu não tenho certeza, mas localizar um substring dentro de um campo Memo no Paradox, pode ser um pouco incerto. Se não me engano, não dá para utilizar a função UPPER ou LOWER com o campo memo no SELECT de modo a tornar a consulta Case-Insensitive. Tem que dar uma verificada.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Fiz dessa forma

procedure TForm1.BitBtn2Click(Sender: TObject);

var

x: string;

begin

x:='';

if inputquery('Procurar','comentario',x) then

datamodule1.table1.Locate('comentario',x,[loPartialKey]);

Showmessage('arquivo não Encontrado');

end;

e apresenta os seguintes erros

[Error]UGerenciador_Arquivos.pas(94): Undeclared identifier: 'loPartialKey'

[Error] UGerenciador_Arquivos.pas(94): Incompatible types: 'TLocateOption' and 'Integer'

Para estas situações, acredito que você teria que utilizar um componente TQuery com um SQL contendo LIKE.

Mas, ainda pode haver outro problema. Eu não tenho certeza, mas localizar um substring dentro de um campo Memo no Paradox, pode ser um pouco incerto. Se não me engano, não dá para utilizar a função UPPER ou LOWER com o campo memo no SELECT de modo a tornar a consulta Case-Insensitive. Tem que dar uma verificada.

a intençao é encontrar uma palavra dentro do memo(no inicio, meio, fim)

Michels, existe uma forma que você tem certeza que dar certo?

outro tipo de banco? (sem ser o paradox, porque esse é o unico que tenho noçao, se for o caso vou tentar aprender outro)

valeu!!!

Link para o comentário
Compartilhar em outros sites

  • 0
procedure TForm1.BitBtn2Click(Sender: TObject);
var
  x: string;
begin
  x:='';
  if inputquery('Procurar','comentario',x) then
    datamodule1.table1.Locate('comentario',x,[loPartialKey])
  else
    Showmessage('arquivo não Encontrado');
end;

e apresenta os seguintes erros

[Error]UGerenciador_Arquivos.pas(94): Undeclared identifier: 'loPartialKey'

[Error] UGerenciador_Arquivos.pas(94): Incompatible types: 'TLocateOption' and 'Integer'

É que como você utiliza o datamodule para colocar seu table, no form não existe a declaração, na cláusula uses, da unit DB. Faça isso - acrescente DB na cláusula uses do seu form.

Para estas situações, acredito que você teria que utilizar um componente TQuery com um SQL contendo LIKE.

Mas, ainda pode haver outro problema. Eu não tenho certeza, mas localizar um substring dentro de um campo Memo no Paradox, pode ser um pouco incerto. Se não me engano, não dá para utilizar a função UPPER ou LOWER com o campo memo no SELECT de modo a tornar a consulta Case-Insensitive. Tem que dar uma verificada.

a intençao é encontrar uma palavra dentro do memo(no inicio, meio, fim)

Micheus, existe uma forma que você tem certeza que dar certo?

outro tipo de banco? (sem ser o paradox, porque esse é o unico que tenho noçao, se for o caso vou tentar aprender outro)

essa resposta vai me tomar mais tempo. Faça os testes para confirmar ou não o que mencionei.

Quem sabe, alguém tenha uma alternativa. (logo mais eu volto a esta questão)

Mas para adiantar: este memo você guarda a lista dos nomes dos arquivos certo? Não poderiam ser itens? você teria um arquivo de CD's e outro de nome de arquivos, relacionados por um campo código do CD.

Link para o comentário
Compartilhar em outros sites

  • 0

copila normalmente, mas apresenta este erro quando digito o

nome do arquivo para procurar

o nome do arquivo que digitei foi corel draw

Project Gerenciador_Arquivo.exe raised exception class EDatabaseError with message 'Constant is not

correct type Corel Draw'. Process stopped. Use Step or Run to continue

Link para o comentário
Compartilhar em outros sites

  • 0
copila normalmente, mas apresenta este erro quando digito o

nome do arquivo para procurar o nome do arquivo que digitei foi corel draw

Project Gerenciador_Arquivo.exe raised exception class EDatabaseError with message 'Constant is not

correct type Corel Draw'. Process stopped. Use Step or Run to continue

mensagem estranha. Como está o código onde este erro ocorre?

Link para o comentário
Compartilhar em outros sites

  • 0

o codigo é esse mesmo, apenas acrescentei DB na USES

procedure TForm1.BitBtn2Click(Sender: TObject);

var

x: string;

begin

x:='';

if inputquery('Procurar','comentario',x) then

datamodule1.table1.Locate('comentario',x,[loPartialKey]);

Showmessage('arquivo não Encontrado');

end;

Link para o comentário
Compartilhar em outros sites

  • 0

vms, estive verificando e o problema é que o Locate não é aplicado a campos Memo.

Via query, você poderia utilizar o LIKE, mas a consulta é case-sensitive (difere maiúscula de minúscula) e não dá para utilizar a função UPPER sobre o memo:

select *

from tabela

where comentario like '%corel draw%'

Acho que você teria que utilizar outra abordagem.

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
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...