Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Listar entre Letras (https://www.clubdelphi.com/foros/showthread.php?t=74208)

elturu15 05-06-2011 19:44:40

Listar entre Letras
 
Hola como andan? tengo un gran problema...necesito hacer un listado con Access..quiero listar entre dos letras. es decir que Quiero qie se me listen todos los Usuarios de la A a la J por ejemplo, controlando el nombre de usuario. Osea que quiero que me aparescan todos los Usuarios que en su nombre de ususrio empieze con la letra A, o la letra B o la letra C...hasta la letra J.
como lo hago?
con Like? o between? como es la sintaxis?

Delphius 05-06-2011 21:00:43

Bastaría un filtro simple, como:

Código SQL [-]
WHERE (NOMBRE > 'A') AND (NOMBRE < 'K')

Saludos,

elturu15 05-06-2011 21:17:58

lISTADO ENTRE LETRAS
 
eSTE ES EL CODIGO QUE USO, Donde ClaveD tiene asiganda la letras A pq la ingresa el Usuario u puede ser cualquier letra y no anda...Solo me lista el Primero que empiesa con la letra A cuando en la Tabla tengo un monton

Pq no anda?


Código SQL [-]
'Select * From Usuarios WHERE (Nick>'+QuotedStr(claveD)+')   order by nick';

ecfisa 06-06-2011 09:44:15

Hola elturu15.

Es exactamente como te lo ha sugerido Delphius, lo que sucede es que no has echo en absoluto lo que te indicó. ;)

El título "Listado entre letras", indica que se trata de un intervalo donde los elementos que queres mostrar son aquellos que estén comprendidos
entre dos límites.
Suponiendo la condición: X > elemento < Y, vas a necesitar un valor desde (X) y otro hasta (Y) para mostrar los datos que se hallen entre estos.


Código Delphi [-]
'Select * From Usuarios WHERE (Nick>'+QuotedStr(claveD)+')   order by nick';
En este código sólo enviás un valor: ClaveD.
Básicamente tu código dice: "Seleccioname todos los campos de la tabla Usuarios donde Nick sea mayor a ClaveD ordenados por Nick" y eso, no es
lo que buscas que haga la consulta...

Te pongo dos ejemplos de como creo que deberías hacerlo:
Código Delphi [-]
...
begin
  with IBQuery do
  begin
    SQL.Clear;
    SQL.Add('SELECT * FROM USUARIOS');
    SQL.Add('WHERE NICK > ' + QuotedStr(Desde) + ' AND NICK < ' + QuotedStr(Hasta));
    SQL.Add('ORDER BY NICK');
    Open;
  end;

O mejor para mi gusto:
Código Delphi [-]
...
begin
 with IBQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT * FROM USUARIOS');
    SQL.Add('WHERE NICK > :DESDE AND NICK < :HASTA');
    SQL.Add('ORDER BY NICK');
    ParamByName('DESDE').AsString:= Desde;
    ParamByName('HASTA').AsString:= Hasta;
    Open;
  end;
end;

Edito: Rectifiqué la selección de campos en select a '*' para que se ajuste exactamente al código de tu consulta.

Saludos.

abelg 06-06-2011 16:38:02

Creo lo que necesitas es:

Código SQL [-]
Select code_user,
         name_user
from user
where status_active = 1 and (
        SUBSTRING(name_user, 1,1) between 'A' and 'J'
)
order by name_user

Esto da para Sql Server, pero creo para acces cambias el substring por substr(...).


La franja horaria es GMT +2. Ahora son las 14:40:45.

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