Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Consulta con delphi (https://www.clubdelphi.com/foros/showthread.php?t=34055)

zvf 25-07-2006 21:59:51

Consulta con delphi
 
Tengo la siguiente duda; voy a hacer un programita que me va a mostrar los datos de una tabla de una base de datos, yo voy a escribir una cadena, y despues voy a presionar un boton que dice 'inicia con', 'contiene en' o 'todo'; y la funcion en seudocodigo esta asi:

funcion muestra_datos (nombre_tabla, nombre_campo, cadena, todo_parte_inicia) // donde todo_parte_inicia es un numero entero, es 0 si quiero buscar la cadena exacta, es 1 si quiero saber cuantos registros contienen esa cadena en cualquier lugar, y 2 si quiero que inicien con esa cadena.

inicia
si todo_parte_inicia = 0 entonces
consulta = select * from nombre_tabla where campo= cadena
else
si todo_parte_inicia = 1 entonces
consulta = no se :(
termina


Como puedo hacer esa consulta?

marcoszorrilla 25-07-2006 22:11:53

Código Delphi [-]
Query1.Close;
Query1.Sql.Clear;
Query1.Sql.Add('Select * From '+QuotedStr(MiTabla));

Case Todo_Parte_inicia of
0:Query1.Sql.Add('Where Campo = '+QuotedStr(Cadena));
2:Query1.Sql.Add('Where Campo Like % '+QuotedStr(Cadena+'%'));
end;

Query1.Open;

If Todo_Parte_inicia = 1 then
ShowMessage(IntToStr(Query1.RecordCount));


Solamente es una aproximación.

Un Saludo.

Ruben_Cu 26-07-2006 00:00:53

Aclaración
 
Hola a todos, la solución propuesta está buena pero creo que trabajaría mejor si en el nº 2 del Case en lugar de la sentencia propuesta usaramos:
Código Delphi [-]
Query1.Sql.Add('Where Campo Like '+QuotedStr('%'+Cadena+'%'));
La propuesta creo que da error.
Espero valga la aclaración.
Saludos

zvf 26-07-2006 00:41:42

Gracias
 
Gracias por sus respuestas y por su ayuda.

Voy a probar con lo que me estan dando y de nuevo por aqui les aviso como salieron las cosas.

MUCHAS GRACIAS POR TODO !!!! :) :)

zvf 26-07-2006 21:27:50

Error en la sintaxis
 
Aparece un error en la sintaxis,

Código Delphi [-]
Query1.Sql.Add('Where Campo Like % '+QuotedStr(Cadena+'%'));

y tambien en :
Código Delphi [-]
Query1.Sql.Add('Where Campo Like '+QuotedStr('%'+Cadena+'%'));


sabe alguien como debe ser?

quiero que la consulta me regrese los registros en donde el campo inicie con la cadena que yo le escribo, y tambien quiero otra consulta que me regrese los registros en donde la cadena que yo escriba se encuentre al principio, en medio o al final del campo.

GRACIAS POR SU ATENCION Y AYUDA

marcoszorrilla 26-07-2006 22:03:05

Pues todo me hace pensar que no estás utilizando Paradox, quizás Access, en este último caso substituye el comodín % por *

Un Saludo.

vtdeleon 26-07-2006 22:04:10

Que error te da en el segundo codigo?? No enteino por que te da error, si está bien el código.

Saludos

zvf 26-07-2006 23:08:32

Estoy usando componentes zeos, y mi base de datos esta hecha en mysql.
Me marca error en el siguiente codigo:

Código Delphi [-]
 
Query1.Sql.Add('Where `nombre` Like '+QuotedStr('*'+Cadena+'*'));

:confused: :confused: :confused: :confused:

zvf 26-07-2006 23:43:30

Ya Lo Solucione
 
Ya estuvo, tuve que ponerlo asi:

Código Delphi [-]
Query1.Sql.Add('Where `nombre` Like '+#39 + '%'+Cadena+'%'+ #39 +';');

No se porque no funcionaba como ustedes me decian.

Bueno, MUCHAS GRACIAS POR TODO

vtdeleon 26-07-2006 23:55:30

Habrá sido por el punto y coma ==>';'

Me intriga, pues no veo razón del fallo.

vtdeleon 26-07-2006 23:58:58

AAh
Cita:

Me marca error en el siguiente codigo:
Código Delphi [-]
Query1.Sql.Add('Where `nombre` Like '+QuotedStr('*'+Cadena+'*'));

Escribe aquí el error que te dá.

zvf 27-07-2006 00:57:49

Sabes que?

Si era el ;, ya lo probe y si funciona como ustedes me dijeron.

GRACIAS


La franja horaria es GMT +2. Ahora son las 20:34:57.

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