Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Principal > SQL
Register FAQ Members List Calendar Guía de estilo Today's Posts

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 14/11/2006
magnu9's Avatar
magnu9 magnu9 is offline
Miembro
 
Join Date: Nov 2006
Posts: 84
Poder: 20
magnu9 Va por buen camino
Reporte (Desde : Hasta)

Buen Días a todos.

Una pequeña duda, tengo un form desde el cual pido cierta manera de reporte. Al decirles que me busque dese un codigo hasta otro, me lo hace muy bien, pero cuando les digo desde el nombre tal hasta nombre x, no resulta nada.
Reply With Quote
  #2  
Old 14/11/2006
magnu9's Avatar
magnu9 magnu9 is offline
Miembro
 
Join Date: Nov 2006
Posts: 84
Poder: 20
magnu9 Va por buen camino
Observen esto..

Código Delphi [-] FreportCliente.qryCliente.SQL.Add(' Select codcli,nomcli,apelcli, dircli, telcli,cedcli, fecha, estado, codzon, facturacredito, balcli, direc_envio From cliente ');


FreportCliente.qryCliente.SQL.Add(' WHERE cliente.codcli >='''+(edCodigo1.Text)+''' AND cliente.codcli <= '''+(edCodigo2.Text)+'''');





Osea si cambio a este codigo codcli es el codigo del cliente, nombre_cli nombre del cliente..


Código Delphi [-] FreportCliente.qryCliente.SQL.Add(' Select codcli,nomcli,apelcli, dircli, telcli,cedcli, fecha, estado, codzon, facturacredito, balcli, direc_envio From cliente ');
FreportCliente.qryCliente.SQL.Add(' WHERE cliente.NOMCLI >='''+(edNombre1.Text)+''' AND cliente.nombre_CLI <= '''+(edNombre2.Text)+'''');





Osea "Desde codigo x hasta codigo y" muy bien", pero "Desde nombre x hasta nombre y" no me hace nada,

Nota: si colocó el mismo nombre si lo hace bien...
Reply With Quote
  #3  
Old 14/11/2006
Caral's Avatar
[Caral] Caral is offline
Miembro Premium
 
Join Date: Aug 2006
Posts: 7,659
Poder: 28
Caral Va por buen camino
Hola magnu9
Mira la diferencia:
Hecho por ti, fijate en el campo rojo:
Código Delphi [-]
FreportCliente.qryCliente.SQL.Add(' WHERE cliente.NOMCLI >='''+(edNombre1.Text)+''' AND cliente.nombre_CLI <= '''+(edNombre2.Text)+'''');
Creo que son dos campos diferentes, deberia ser asi:
Fijate en los campos verdes.
Código Delphi [-]
FreportCliente.qryCliente.SQL.Add(' WHERE cliente.nombre_CLI >='''+(edNombre1.Text)+''' AND cliente.nombre_CLI <= '''+(edNombre2.Text)+'''');
Supongo que esto es lo que pasa.
Saludos
Reply With Quote
  #4  
Old 14/11/2006
AzidRain's Avatar
[AzidRain] AzidRain is offline
Miembro Premium
 
Join Date: Sep 2005
Location: Córdoba, Veracruz, México
Posts: 2,914
Poder: 23
AzidRain Va camino a la fama
Podria quedar mejor y mas manejable tu consulta si usas parametros, por ejemplo:

Código Delphi [-]
FreportCliente.qryCliente.SQL.Add(' SELECT codcli,nomcli,apelcli, dircli, te lcli,cedcli, fecha, estado, codzon, facturacredito, balcli, direc_envio From cliente ');
 
FreportCliente.qryCliente.SQL.Add(' WHERE cliente.codcli >=:desde AND cliente.codcli <= :hasta');
 
FreportCliente.qryCliente.ParamByName('desde').AsString :=EdNombre1.Text;
FreportCliente.qryCliente.ParamByName('hasta').AsString :=EdNombre2.Text;

otra variante es usar BETWEEN en vez de >= <=:

Código Delphi [-]
FreportCliente.qryCliente.SQL.Add(' SELECT codcli,nomcli,apelcli, dircli, te lcli,cedcli, fecha, estado, codzon, facturacredito, balcli, direc_envio From cliente ');
 
FreportCliente.qryCliente.SQL.Add(' where codcli BETWEEN :desde AND :hasta');
 
FreportCliente.qryCliente.ParamByName('desde').AsString :=EdNombre1.Text;
FreportCliente.qryCliente.ParamByName('hasta').AsString :=EdNombre2.Text;

El error en tu query es que usas dos campos distintos en la comparacion cuando solo debe ser uno. Si traducimos a lenguaje "humano" tu query queda:

"Dame todos los registros en donde codcli es mayor al numero que te doy y el nombre sea menor o igual al otro numero que te doy"

Obviamente en esta condicion pueden caer muchos registros, por ejemplo si aplicas tu query a una tabla como esta y en Edtext1='1' EdText2='5':
Code:
codcli        nombre_cli
1              Alfa
2              Algaguara
3              Bravo 
4              Charlie
5              Delta
no te devuelve nada porque no hay ningun registro cuyo codigo sea mayor que uno y al mismo tiempo el nombre sea "menor" que 5...

En el query que te puse puedes cambiar el campo sobre el que quieres hacer la búsqueda sin ningun problema ya que los parametros te garantizan que se construya correctamente la instruccion SQL.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Reply With Quote
  #5  
Old 15/11/2006
magnu9's Avatar
magnu9 magnu9 is offline
Miembro
 
Join Date: Nov 2006
Posts: 84
Poder: 20
magnu9 Va por buen camino
Saludo...

He intentado la anterior respuesta, me es imposible utilizar los parametros.. seria bueno que me dieran una mano en este caso de como lo uso...

Estuve leyendo sobre parameters en el libro la Cara Oculta 4, pero entiendo que debo hacer una funcion ParaByName()...

En mis intentos, cuando coloco FreportCliente.qryCliente.ParamByName esta propiedad no
me sale al colocar el punto solo me da opción de Parameters,
si coloco FreportCliente.qryCliente.Parameters.ParamByName(),
en este caso si me da a escoger el ParamByName(),
luego el asString pero no me da esta opcion sale el asString..
Saludos a todos.
Reply With Quote
  #6  
Old 15/11/2006
Caral's Avatar
[Caral] Caral is offline
Miembro Premium
 
Join Date: Aug 2006
Posts: 7,659
Poder: 28
Caral Va por buen camino
Hola magnu9
Pon codigo, a ver que hago, no se de que se trata.
Saludos
Reply With Quote
  #7  
Old 15/11/2006
magnu9's Avatar
magnu9 magnu9 is offline
Miembro
 
Join Date: Nov 2006
Posts: 84
Poder: 20
magnu9 Va por buen camino
Saludo...

Es el que coloco AsiRaid, antes de mis dudas observaras el codigo.
Reply With Quote
  #8  
Old 15/11/2006
Caral's Avatar
[Caral] Caral is offline
Miembro Premium
 
Join Date: Aug 2006
Posts: 7,659
Poder: 28
Caral Va por buen camino
Hola magnu9
Esto de los parametros no tiene gran ciencia.
AzidRain te esta dando una opcion de hacerlo, creo, si no me equivoco depende de la base de datos que uses.
Por ejemplo:
AzidRain lo hace asi:
Código Delphi [-]
FreportCliente.qryCliente.SQL.Add(' SELECT codcli,nomcli,apelcli, dircli, te lcli,cedcli, fecha, estado, codzon, facturacredito, balcli, direc_envio From cliente ');
 
FreportCliente.qryCliente.SQL.Add(' WHERE cliente.codcli >=:desde AND cliente.codcli <= :hasta');
 
FreportCliente.qryCliente.ParamByName('desde').AsString :=EdNombre1.Text;
FreportCliente.qryCliente.ParamByName('hasta').AsString :=EdNombre2.Text;
Esta bastante claro.
Particularmente uso los parametros diferente, insisto creo que es por la base de datos que uso (access).
Lo hago asi:
Código Delphi [-]
FreportCliente.qryCliente.SQL.Add(' SELECT codcli,nomcli,apelcli, dircli, te lcli,cedcli, fecha, estado, codzon, facturacredito, balcli, direc_envio From cliente ');
 
FreportCliente.qryCliente.SQL.Add(' WHERE cliente.codcli >=[desde] AND cliente.codcli <=[hasta]');
 
FreportCliente.qryCliente.Parameters[0].Value :=EdNombre1.Text;
FreportCliente.qryCliente.Parameters[1].Value :=EdNombre2.Text;
Ademas coloco en el inspector de objetos en el query (qryCliente) en parameters los dos parametros.
Desde. parametro 0 y hasta parametro 1.
Creo que esto te saldra, revisalo y me cuentas.
Saludos
Reply With Quote
  #9  
Old 16/11/2006
magnu9's Avatar
magnu9 magnu9 is offline
Miembro
 
Join Date: Nov 2006
Posts: 84
Poder: 20
magnu9 Va por buen camino
Saludo Caral...

Me salio muy bien lo que me dijiste anteriormente... no envio la manera que me quedaron, por que he dejado todo en casa hoy... veremos si luego hay dudas... ya que no tuve mucho tiempo para revisarlo bien ayer.
Reply With Quote
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
como sumar valores desde el inicio de una tabla hasta el fin de esta. andre navarrete Conexión con bases de datos 2 13/08/2006 16:47
Crear reporte desde un formulario jose_c27 Impresión 2 01/11/2005 18:13
imprimir reporte desde codigo Mario1980 Impresión 0 20/01/2005 13:45


All times are GMT +2. The time now is 23:07.


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