PDA

Ver la Versión Completa : como utilizo like


armando
22-12-2003, 19:52:33
Hola a todos estoy trabajando con delphi 5 y paradox
Mi pregunta es la siguiente
Como puedo hacer una consulta utilizando el parámetro like y una variable
Es decir hago lo siguiente

Sin variable
DMR.mitabla.CLOSE;
DMR. mitabla .SQL.CLEAR;
DMR. mitabla .SQL.Add('SELECT*');
DMR. mitabla .SQL.Add('FROM ent1.db');
DMR. mitabla .SQL.Add('WHERE ENTRADA');
DMR. mitabla .SQL.Add('LIKE'+QUOTEDSTR(''+EDIT1.TEXT+'%'));
DMR. mitabla .OPEN;

Y todo sale bien
Pero
Con variable

DMR.mitabla.CLOSE;
DMR. mitabla .SQL.CLEAR;
DMR. mitabla .SQL.Add('SELECT*');
DMR. mitabla .SQL.Add('FROM ent1.db');
DMR. mitabla .SQL.Add('WHERE STATUS='INVENTARIO' AND ');
DMR. mitabla .SQL.Add('WHERE ENTRADA ');
DMR. mitabla .SQL.Add('LIKE'+QUOTEDSTR(''+EDIT1.TEXT+'%'));
DMR. mitabla .OPEN;

ME DA ERROR

ES DECIR NO SE COMO DECLARAR UNA VARIABLE EN SQL
PORQUE SI LO HAGO DIRECTAMENTE SIN UTILIZAR LIKE SI ME DA EL RESULTADO
HAAAAAAAAAAAAA¡¡
Y TAMBIEN YA LO HICE DE LA SIGUIENTE MANERA

VAR
A:STRING;
Begin

DMR.QENTXL.CLOSE;
DMR.QENTXL.SQL.CLEAR;
DMR.QENTXL.SQL.Add('SELECT*');
DMR.QENTXL.SQL.Add('FROM ent1.db');
DMR.QENTXL.SQL.Add('WHERE STATUS=A AND');
DMR.QENTXL.SQL.Add('WHERE ENTRADA');
DMR.QENTXL.SQL.Add('LIKE'+QUOTEDSTR(''+EDIT1.TEXT+'%'));
DMR.QENTXL.OPEN;

PERO TAMBIEN ME MARCA ERROR
PERO QUIERO UTILIZAR ELCODIGO????

MIL GRACIAS ESPERO SU AYUDA

delphi.com.ar
22-12-2003, 19:58:57
Primero quiero recomendarte que leas la Guía de Estilo (http://www.clubdelphi.com/users/llsoft/Docs/GuiaEstilo.php). Despues quiero recomendarte, que cuando te de error una consulta SQL, veas como esta a quedado finalmente, si observas como va a quedar este SQL, podemos marcar que va a dar error, porque tiene dos cláusulas WHERE:

SELECT*
FROM ent1.db
WHERE STATUS='INVENTARIO' AND
WHERE ENTRADA LIKE '%'

Además esto va a darte un error de compilación en la línea:DMR.mitabla.SQL.Add('WHERE STATUS='INVENTARIO' AND '); que supongo que querías poner algo como:DMR.mitabla.SQL.Add('WHERE STATUS=' + INVENTARIO + ' AND '); siendo INVENTARIO una variable del tipo String. Si esta variable contiene una cadena, lo recomendable va a ser que escribas:DMR.mitabla.SQL.Add('WHERE STATUS=' + QuotedStr(INVENTARIO) + ' AND ');

Saludos!

armando
22-12-2003, 20:58:04
PERDON, PERO ES MI PRIMERA PREGUNTA:(
PERO SI, :D LE ECHO UN VISTAZO A Guía de Estilo.
PERO SOBRE TODO
GRACIAS
DELPHI.COM.AR
ASI QUEDO MI CODIGO
DMR.MITABLA.CLOSE;
DMR.MITABLA.SQL.CLEAR;
DMR.MITABLA.SQL.Add('SELECT*');
DMR.MITABLA.SQL.Add('FROM ent1.db');
DMR.MITABLA.SQL.Add('WHERE STATUS=' +QuotedStr('CADENA' );
DMR.MITABLA.SQL.Add('ENTRADA');
DMR.MITABLA.SQL.Add('LIKE'+QUOTEDSTR(''+EDIT1.TEXT+'%'));
DMR.MITABLA.OPEN;

delphi.com.ar
22-12-2003, 21:02:14
Incisto con la Guía de Estilo (http://www.clubdelphi.com/users/llsoft/Docs/GuiaEstilo.php)!!!

PD: A simple vista tu código tiene un par de errores:

Te falta un paréntesis en la línea: DMR.MITABLA.SQL.Add('WHERE STATUS=' +QuotedStr('CADENA' );

Debes agregar un operador, por ejemplo AND, antes de la seguna condición, por ejemplo:
DMR.MITABLA.SQL.Add('AND ENTRADA');

Saludos!