Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   como utilizo like (https://www.clubdelphi.com/foros/showthread.php?t=6184)

armando 22-12-2003 19:52:33

como utilizo like
 
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. 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:

Código:

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:
Código:

DMR.mitabla.SQL.Add('WHERE STATUS='INVENTARIO' AND ');
que supongo que querías poner algo como:
Código:

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:
Código:

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!!!

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

Te falta un paréntesis en la línea:
Código:

DMR.MITABLA.SQL.Add('WHERE STATUS=' +QuotedStr('CADENA' );
Debes agregar un operador, por ejemplo AND, antes de la seguna condición, por ejemplo:
Código:

DMR.MITABLA.SQL.Add('AND  ENTRADA');
Saludos!


La franja horaria es GMT +2. Ahora son las 14:42:17.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi