Consulta com LIKE
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
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
Curtidas 0
Respostas
Joaoshi
27/11/2008
Colega, não entendi o problema do tamanho do edit1.text, mas... tente substituir:
por
Espero ter ajudado.
´SELECT * FROM PRODUTOS WHERE REFERENCIA LIKE:VRefer´
por
´SELECT * FROM PRODUTOS WHERE REFERENCIA CONTAINING :VRefer´
Espero ter ajudado.
GOSTEI 0
Armindo
27/11/2008
Colega, não entendi o problema do tamanho do edit1.text, mas... tente substituir:
por
Espero ter ajudado.
´SELECT * FROM PRODUTOS WHERE REFERENCIA LIKE:VRefer´
´SELECT * FROM PRODUTOS WHERE REFERENCIA CONTAINING :VRefer´
Perfeito. Era isso mesmo. Obrigado
GOSTEI 0