Fórum Filtro ou Locate - Localizar palavra no meio da frase #251669

23/09/2004

0

Estou com o seguinte problema, preciso localizar uma palavra no meio de uma frase como posso fazer isto, será que vcs tem alguma idéia?

Por exemplo

Dentro da tabela Itenserro tem um campo chamado ERRO então este erro pode ser deste tipo.

ERRO na leitura FAC

Se eu um dia pensar bah ja deu um erro deste tipo mas a unica palavra que lembro é a FAC então ele vai localizar a palavra FAC no final da frase, sendo assim ele vai [b:f0745db714]efetuar um filtro com todas as frases que possuem a palavra FAC[/b:f0745db714] não sei se foi esclarecedor.

Desde já agradeço!!! :?:


Fábio Feltrin

Fábio Feltrin

Responder

Posts

23/09/2004

Vinicius2k

Colega,

Utilize SQL:
select {nomes dos campos} 
from ITENSERRO
where ERRO like :erro

Se estiver definindo a instrução em tempo de design, defina o tipo de dado do parametro para ftString (propriedade [b:4c4eb7b3f4]Params[/b:4c4eb7b3f4] da Query)
Para passar o parametro para a Query faça algo parecido com este código :
SuaQuery.Close;
SuaQuery.ParamByName(´erro´).AsString:= ´¬´ + Edit1.Text + ´¬´;
SuaQuery.Open;

* [b:4c4eb7b3f4]Edit1[/b:4c4eb7b3f4] seria um TEdit aonde o usuário entrou com o valor que ele gostaria de filtrar, no seu caso seria o termo ´[i:4c4eb7b3f4]FAC[/i:4c4eb7b3f4]´...
* o caracter coringa ´[b:4c4eb7b3f4]¬[/b:4c4eb7b3f4]´, pode variar dependendo do banco de dados, mas sua função é informar ao banco que o conteúdo antes, ou depois, ou antes e depois (que é o caso), deve ser ignorado...

Espero ter ajudado...
T+


Responder

Gostei + 0

23/09/2004

Fábio Feltrin

Tipo é que me inventei de fazer um programinha aqui com banco feito em access ai deu essa bronca ae será que feito em access daria pra fazer neste estilo? acho q num né? Se der por favor me de mais um auxilio se não for encomodo!!!

Desde ja agradeço!!!


Responder

Gostei + 0

23/09/2004

Vinicius2k

Dá para fazer sim... e no caso no Access, se eu me lembro bem, o coringa é [b:0ab5dd603b]´*´[/b:0ab5dd603b] (asterisco)

Qual camada de acesso vc está usando (BDE, ADO, etc) ?

Seja qual for a camada, use o objeto correspondente à Query (BDE -> TQuery ou ADO -> TADOQuery)...
Não tem mistério... é só colocar a instrução SQL na Query e escrever o código que eu te passei no OnClick de um botão ´Localizar´, por exemplo...

Qualquer dúvida poste novamente, já estou meio ´enferrujado´ com Access, mas se eu puder ajudar...

T+


Responder

Gostei + 0

23/09/2004

Fábio Feltrin

Tipo eu preciso que a tabela itens de erro seja mastersource da tabela cliente, mas a query não possui esta opção possui? pelo que eu procurei aqui ela num possui.

Puxa que bronca neh cara teria uma outra maneira ?

poxa vlw pela atenção num sei nem u q lhe dizer espero que tenha uma outra resposta para me ajudar pois são nestas horas que respostas são muito bem vindas obrigado!!


Responder

Gostei + 0

23/09/2004

Vinicius2k

Colega,

Mestre/Detalhe com BDE e TQuery devem ser feitas manualmente e utilizando duas Queries.
1. Matenha a instrução que lhe passei para a Query Mestre e defina o tipo de dado do parametro corretamente.

2. Coleque uma instrução como esta na Query detalhe, e também defina o tipo de dado do parametro:
select {lista de campos} 
from CLIENTES
where CAMPO_DETALHE = :valor


3. No evento OnChangeData do TDataSource da Query mestre implemente :
with Query_Detalhe do
begin
  Close;
  ParamByName(´valor´).AsInteger:= Query_Mestre.FieldByName(´CAMPO_MESTRE´).AsInteger;
  Open;
end;


Blz?

T+


Responder

Gostei + 0

27/05/2005

Pro-luck

Caro Vini,


Se numa tabela não existe nenhum tipo de índice, chave primária ou coisa parecida, apenas os campos preenchidos e eu preciso localizar uma determinada ficha, pelo código exato do cliente ou pelo nome parcial, qual a maneira mais eficaz de fazer...

Estou usando query e uma rede com 6 máquinas e está muito lenta... Com tabela seria melhor??? O que você sugere...

Já recebi dicas tua e deram resultados, ou seja, sua dica é de grande valia para mim.


Antecipadamente agradeço,


Responder

Gostei + 0

27/05/2005

Vinicius2k

Olá Aloísio !

Qual o BD?
Se for um banco desktop, tipo Access ou Paradox, é preferível utilizar Tables, desde que as tabelas possuam índices.

Na sua situação, ou seja, sem índices, não faz diferença (teoricamente). Em bancos desktop é vantagem usar Tables pois elas irão utilizar os índices definidos para a tabela no BD. Para estes bancos as Queries não usam índices o que as tornam mais lentas do que Tables.

Vc tem duas opções:
1. Se for um SGBD, crie os índices para as colunas utilizadas na pesquisa e utilize uma Query.
2. Se for um BD desktop, crie os índices para as colunas utilizadas na pesquisa e utilize uma Table. Aqui vc perde funcionalidade por não poder utilizar SQL.

Espero ter ajudado.
T+


Responder

Gostei + 0

27/05/2005

Pro-luck

Caro Vinícius,

Se eu passar a utilizar o Table, como ficaria o código que deverei incluir no OnClick do botão localizar?

No caso do localizador de códigos, o retorno deverá ser exatamente o que eu digitar no edit1 e, no caso do nome do cliente, o resultado será qualquer registro que tenha em seu conteúdo (no início, no meio ou no fim), o qlue eu digitar dentro do edit2.

Obs: O BD é Paradox e o Delphi é o 3.

Antecipadamente agradeço,


Responder

Gostei + 0

28/05/2005

Pro-luck

Posso criar índices em campos que se repetem?

Porque a questão é a seguinte: Existem vários registros com os mesmos códigos onde mudam apenas as datas de vencimento. Temo em colocar índices no campo código ou no campo nome, (que também se repete) e conseguir um belo ´Key Violation´.

Caro amigo, dê-me uma luz de como resolver esse problema...

Obrigado.


Responder

Gostei + 0

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

Aceitar