Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-09-2011
Tcmn Tcmn is offline
Miembro
 
Registrado: sep 2004
Posts: 152
Poder: 20
Tcmn Va por buen camino
Uso de clausula in con parametro de valores diferentes de cadenas

Hola, estoy trabajando con Delphi 6 y Paradox en windows XP, y deseo hacer una consulta SQL sobre una tabla que contiene un listado de Giros Comerciales. La consulta real conlleva el uso de otras tablas y estaba en funcionamiento, solo que ahora el patron pide hacer "filtros" sobre un campo string y deseo hacerlo directo en la consulta. La consulta originalmente esta asi:


Código SQL [-]
 
SELECT C.NCONTRATO, C.FECHA, Ct.RAZON_SOCIAL, Cm.MEDIDA, 
Cm.COLORES, Cm.PREC_VENTA, Cm.STATUS_DESIGNE,Cm.GIRO_A_COLOCAR, 
Ct.MUNICIPIO, C.Vendedor, C.Abonado, C.Tipo 
FROM Contratos C 
INNER JOIN Clientes Ct ON (Contratos.NUM_CLI = Clientes.NUM_CLI)
INNER JOIN Cont_mov CmON (Contratos.NCONTRATO = Cont_mov.NCONTRATO)
ORDER BY Cm.GIRO_A_COLOCAR,Ct.RAZON_SOCIAL


El asunto es que ahora desean establecer rango sobre el campo Cm.GIRO_A_COLOCAR que almacena el nombre del giro comercial (ABOGADO, LICORERIA, ETC), para que por ejemplo se muestren solo los registros que en el campo GIRO_A_COLOCAR tengan giros que vayan desde la "A" a "C", por lo que se incluiria


ABOGADOS, ABARROTES-MAYOREO.....CARPINTERIAS.

La seleccion de rango es en base a otra tabla donde estan guardados todos los giros comerciales existentes.

Trate de solucionarlo como se sugiere en el siguiente hilo:
http://www.clubdelphi.com/foros/show...hlight=CADENAS
pero no me da resultado por que las cadenas que se guardan en el StringList a veces vienen con comillas("") supongo yo, aunque la verdad no se porque salen con comillas pues los registros no estan almacenados con comillas.

El codigo como trato de hacerlo en Delphi es de la siguiente manera:

Código:
 
procedure TForm1.Button1Click(Sender: TObject);
var GirosAceptados:TstringList;
LetraFinal:String;
begin
QueryTodosGiros.Locate('Giro',Edit1.Text,[loCaseInsensitive]);
GirosAceptados:=TStringList.Create;
LetraFinal:=copy(QueryTodosGirosGiro.Value,0,1);
while LetraFinal<>Edit2.Text do
begin
GirosAceptados.Add(QueryTodosGirosGiro.Value);
QueryTodosGiros.Next;
LetraFinal:=copy(QueryTodosGirosGiro.Value,0,1);
end;//while
QueryGirosFiltrados.Close;
QueryGirosFiltrados.ParamByName('GirosAceptados').Value:=GirosAceptados.CommaText;
QueryGirosFiltrados.Open;
end;
Espero haberme explicado, y gracias de antemano si alguien tiene otra idea o tal vez me marca algo en lo que estoy fallando
__________________
Salu2
Responder Con Cita
  #2  
Antiguo 13-09-2011
Avatar de DarKraZY
DarKraZY DarKraZY is offline
Miembro
 
Registrado: ago 2003
Posts: 460
Poder: 21
DarKraZY Va por buen camino
No sé si el SQL de Paradox te permite la cláusula BETWEEN pero quizás es lo que necesitas.
Código SQL [-]
SELECT C.NCONTRATO, C.FECHA, Ct.RAZON_SOCIAL, Cm.MEDIDA, 
Cm.COLORES, Cm.PREC_VENTA, Cm.STATUS_DESIGNE,Cm.GIRO_A_COLOCAR, 
Ct.MUNICIPIO, C.Vendedor, C.Abonado, C.Tipo 
FROM Contratos C 
INNER JOIN Clientes Ct ON (Contratos.NUM_CLI = Clientes.NUM_CLI)
INNER JOIN Cont_mov CmON (Contratos.NCONTRATO = Cont_mov.NCONTRATO)
WHERE
  Cm.GIRO_A_COLOCAR BETWEEN :TEXTO_INICIAL AND :TEXTO_FINAL
ORDER BY Cm.GIRO_A_COLOCAR,Ct.RAZON_SOCIAL

y los parámetros TEXTO_INICIAL podría ser 'C%' por ejemplo.

¿Algo así te serviría?
Responder Con Cita
  #3  
Antiguo 13-09-2011
Tcmn Tcmn is offline
Miembro
 
Registrado: sep 2004
Posts: 152
Poder: 20
Tcmn Va por buen camino
Muchas gracias por respuesta primeramente. Y nunca se me habia ocurrido ese metodo. Casi logra lo que ocupo. Con tu recomendacion hice una prueba con la siguiente consulta:

Código SQL [-]
 
SELECT GIRO_A_COLOCAR, COLORES, MEDIDA
FROM  CONT_MOV
WHERE GIRO_A_COLOCAR BETWEEN 'A%' AND 'F%'
ORDER BY GIRO_A_COLOCAR

el detalle es que no me incluyo los de la letra final. En la consulta anterior por ejemplo no me incluyes los registros que inician con "F" no los incluye. Asi que por decirlo asi, debo de poner la letra siguiente a la que realmente deseo que sea el limite de la consulta. ¿Hay manera de que incluya tambien el "final" del rango?
__________________
Salu2
Responder Con Cita
  #4  
Antiguo 13-09-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
podrias cambiarlo mas o menos asi

Select campos from tabla where campo >= 'A' and camop <= 'F' order by campo
__________________
Dulce Regalo que Satanas manda para mi.....

Última edición por oscarac fecha: 13-09-2011 a las 15:25:46.
Responder Con Cita
  #5  
Antiguo 13-09-2011
Tcmn Tcmn is offline
Miembro
 
Registrado: sep 2004
Posts: 152
Poder: 20
Tcmn Va por buen camino
Si estoy seguro, de hecho probe desde la "D" hacia adelante y siempre saca los registros hasta la letra anterior a la que digo
__________________
Salu2
Responder Con Cita
  #6  
Antiguo 13-09-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
sorry edite la respuesta ahi te deje otra
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como pasar un parametro a una consulta que usa la clausula IN coco0001 Conexión con bases de datos 4 26-04-2012 17:45:02
2 ventanas diferentes, 2 monitores diferentes Milperrimo Varios 12 02-10-2008 04:12:32
Comparar 2 cadenas con diferentes formatos. NSL94 SQL 6 21-09-2007 20:16:36
valores diferentes en array anubis Varios 6 17-04-2007 09:47:39
Diferentes alineaciones para diferentes parrafos ciscu Servers 0 15-03-2004 10:36:12


La franja horaria es GMT +2. Ahora son las 10:12:50.


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
Copyright 1996-2007 Club Delphi