Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   consulta entre dos strings (https://www.clubdelphi.com/foros/showthread.php?t=14937)

weke 05-10-2004 14:46:49

consulta entre dos strings
 
Muy buenas a todos/as!!
Tengo un problemilla con una consulta, no creo que sea muy difícil, pero me he atascao y no tiro palante.
Lo que quiero es realizar una consulta en mi tabla "usuarios", en el campo "apellidos" de tal forma que mediante un formulario solicito el apellido de inicio y el apellido de fin. El resultado deseado es que me muestre todos los usuarios que estan comprendidos entre los 2 que yo le paso.
Aclaración: solo me importa la primera letra de cada apellido, es decir, si los apellidos son 'Garcia' y 'Martinez', me tiene que mostrar todos los usuarios desde la 'G' hasta la 'M' ambas incluidas.

Muchas gracias de antemano.

Pablo Carlos 05-10-2004 15:17:54

Tienes que crear dos parametros en tu consulta por ejemplo ->

Código SQL [-]
size="1">Select DatosPersonales_id,DAT_Apellido + ', ' + DAT_Nombres,

From DatosPersonales.db

Where DAT_Apellido >= :pApellidoDesde

and DAT_Apellido <= :pApellidoHasta


luego en el evento ->

Código Delphi [-]
procedure TdmQuerys.qBuscarDatosBeforeOpen(DataSet: TDataSet);
begin
 qBuscarDatos.ParamByName('pApellidoDesde').AsString :=
  frmBuscarDatosPersonales.eApellido.Text + ' ';
 qBuscarDatos.ParamByName('pApellidoHasta').AsString :=
  frmBuscarDatosPersonales.eApellido.Text + '';
end;
donde eApellidoDesde y Hasta son dos edit en los cuales ingresas la primer letra y la última
Saludos

weke 06-10-2004 09:31:04

El límite inferior funciona correctamente, pero el límite superior no. Me explico.
Al introducir el apellido, por ejemplo 'Castro', como solo utilizo la primera letra, todos los apellidos que empiecen por esa letra van a ser mayores que 'C' y no me los muestra en la consulta.

Muchas gracias y saludos.

basti 06-10-2004 10:15:13

Una modificación para la respuesta de Pablo Carlos:

Código Delphi [-]
procedure TdmQuerys.qBuscarDatosBeforeOpen(DataSet: TDataSet);
begin
 qBuscarDatos.ParamByName('pApellidoDesde').AsString :=
  frmBuscarDatosPersonales.eApellido.Text + ' ';
 qBuscarDatos.ParamByName('pApellidoHasta').AsString :=
  frmBuscarDatosPersonales.eApellido.Text + 'zzzzzzzzzzzzzzzzzzzzzzzz';
end;

un saludo

weke 06-10-2004 10:43:01

Al final lo conseguí haciendo lo siguiente:
Código:

query.SQL.Add('Where (u1.apellidos >= :pApellidoDesde and u1.apellidos <= :pApellidoHasta) OR (u1.apellidos like "'+fin+'%")');
Muchas gracias por dedicar vuestro tiempo.

Saludos.


La franja horaria es GMT +2. Ahora son las 19:09:44.

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