Consulta com LIKE

Delphi

27/11/2008

Vejam a seguinte consulta SQL:

SQLQuery1.Close;
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add(´SELECT * FROM PRODUTOS WHERE REFERENCIA LIKE:VRefer´);
SQLQuery1.Params[0].AsString := ´¬´ + Edit1.Text + ´¬´
SQLQuery1.Open;

A tabela PRODUTOS, entre outros campos, há o campo REFERENCIA do tipo varchar(8).
Na consulta acima, enquanto o edit1.text tiver até 6 caracteres digitados, a consulta processa normal, mas, se o valor de edit1.text tiver 7 ou 8 caracteres vai dar erro, pois ao atribuir o valor a params[0] estou adicionando dois caracteres (um ¬ no início e outro no final). Com isso, estou atribuindo 9 ou 10 caracteres a um campo limtado a 8 caracteres.

A solução que encontrei foi testar o tamanho de edit1.text:
- if Length(edit1.text) = 6 then SQLQuery1.Params[0].AsString := ´¬´ + Edit1.Text + ´¬´
- if Length(edit1.text) = 7 then SQLQuery1.Params[0].AsString := ´Edit1.Text + ´¬´
- if Length(edit1.text) = 8 then SQLQuery1.Params[0].AsString := ´ Edit1.Text

Pergunto: existe outra maneira de fazer isso? Nesse exemplo a adaptação é até simples, mas em cadastros mais complexos...

Uso FB 2.0

Obrigado


Armindo

Armindo

Curtidas 0

Respostas

Joaoshi

Joaoshi

27/11/2008

Colega, não entendi o problema do tamanho do edit1.text, mas... tente substituir:

´SELECT * FROM PRODUTOS WHERE REFERENCIA LIKE:VRefer´

por
´SELECT * FROM PRODUTOS WHERE REFERENCIA CONTAINING :VRefer´


Espero ter ajudado.


GOSTEI 0
Armindo

Armindo

27/11/2008

Colega, não entendi o problema do tamanho do edit1.text, mas... tente substituir:
´SELECT * FROM PRODUTOS WHERE REFERENCIA LIKE:VRefer´
por
´SELECT * FROM PRODUTOS WHERE REFERENCIA CONTAINING :VRefer´
Espero ter ajudado.


Perfeito. Era isso mesmo. Obrigado


GOSTEI 0
POSTAR