![]() |
Orden by con items de un Listbox!!
Saludo a todos, espero que se sientan todos bien, observen este caso...
tengo en mi form de reporte de clientes, dos listbox, uno en el cual guardo los items por el cual voy a reportar, el otro listbox, el cual me resibe los items del listbox1, bueno eso de los botones para hacer ese traspaso lo he logrado hacer. Pero mi duda es como pasar los items del listbox2 al sql para poder ordenar el reporte como lo indique el listbox2. Este pequeño codigo es solo una muestra de como lo he intentado. Pero me ha sido en vano. Fuera de lo que es lo del listbox, osea si utilizar los listbox, al qryCliente.Sql.Add, cuando les digo que me ordenes por codcli, me lo ordena muy bien, pero si coloco nomcli para el orden no hace nada de orde. Espero me entiendan, de lo contrario si lo desean un poco mas detallado solo me escriben. Gracias de Antemano. |
Hola magnu9,
Cita:
Espero que te sea de ayuda. Oscar Noe. |
Hola magnu9
Creo que es asi::rolleyes: Por otro lado no entiendo muy bien lo que quieres hacer con los listbox.:confused: Saludos |
Caral dejame explicarte un poquito
Es algo que quiere mi tutor de Proyecto III, es que los reportes lleve consigo dos listbox en medio de ellos estos botones" >, <, >>, <<" los cuales me serviran para mudar los campos de un listbox a otro. Y que el contenido del Listbox2 sea por lo que se guie el reporte para ordenarse. Ahora experimentare lo que me dijeron.
|
Hola magnu9
La verdad no trabajo con listbox, ni nada parecido pero tengo entendido que los listbox tienen una propiedad que es copy, asi que puedes copiar de uno a otro, hay varias formas: 1- Puedes crear variables para los items que vas copiando de uno a otro, esto los mantiene en memoria hasta que se impriman. 2- Puedes crear una tabla temporal, pasar los items del listbox1 al 2 grabarlos en la tabla nueva y luego hacer lo que quieras con los datos, imprimirlos para luego borrarlos o mantenerlos con un numero o no se algo asi. Saludos |
Observa esto caral
Este codigo es lo que estoy utilizando para copiar de un listbox a otro...
|
Perdon se copio dos veces el codigo..
Ahora si... observa.
Código Delphi [-]procedure TrpCliente.btnEnviarClick(Sender: TObject); begin if listbox1.ItemIndex>=0 then begin listbox2.Items.Add(listbox1.Items[listbox1.ItemIndex]); listbox1.Items.Delete(listbox1.ItemIndex); end; END; procedure TrpCliente.btnTraerClick(Sender: TObject); begin if listbox2.ItemIndex>=0 then begin listbox1.Items.Add(listbox2.Items[listbox2.ItemIndex]); listbox2.Items.Delete(listbox2.ItemIndex); end; end; procedure TrpCliente.btnEnvTodClick(Sender: TObject); var m:integer; begin m:=listbox1.Items.Count; while m>=1 do begin listbox1.ItemIndex:=0; listbox2.Items.Add(listbox1.Items[listbox1.ItemIndex]); listbox1.Items.Delete(listbox1.ItemIndex); m:=m-1; end; end; procedure TrpCliente.btnTraerTodoClick(Sender: TObject); var n:integer; begin n:=listbox2.Items.Count; while n>=1 do begin listbox2.ItemIndex:=0; listbox1.Items.Add(listbox2.Items[listbox2.ItemIndex]); listbox2.Items.Delete(listbox2.ItemIndex); n:=n-1; end; end; |
No se me parece bien, cual es el problema.?
Saludos |
No tengo problema en lo anterior...
Solo que me gustaria conocer esto,
1- Puedes crear variables para los items que vas copiando de uno a otro, esto los mantiene en memoria hasta que se impriman. 2- Puedes crear una tabla temporal, pasar los items del listbox1 al 2 grabarlos en la tabla nueva y luego hacer lo que quieras con los datos, imprimirlos para luego borrarlos o mantenerlos con un numero o no se algo asi. bueno eso lo averiguare.. Y gracias pues ya pude conseguir que en de un campo ya estoy pasandoles un texto. Bueno ahora a intentar conseguir lo que quiero... Asi lo consegui.
|
a ver si entendi bien, quieres ordenar la consulta por los campos que vas a seleccionar o a tener en el listbox2, yo usaria algo asi como:
|
Observen esto... a ver si me ayuda
Observen esto..
Osea si cambio a este codigo..... codcli es el codigo del cliente, nombre_cli nombre del cliente..
con codcli todo bien, en cambio con nomcli nada..... Nota: Con igual nombre si me hace el reporte. |
Luego de afanar mucho... Pero con exito..
Solo me falta lo que son las fechas... ahhh y trato de buscarlos por sus balance pero me devuelve el error de "imposible conversion de tipo varchar a numerico"
|
Sugerencia: añadir los "else" en las comparaciones if m=0 then ... else if m=1 then ..
Si m es igual a cero, después debe comprobar que m es distinto de 1,2,3 y 4 ya que no están anidados los "if". Si añades los "else", solo realizará una comprobación (m igual a cero) y después se salta los demás "else". Saludos |
Sugerencia
Magnu9 yo te recomendaría que hiciese lo siquiente que creo es mas claro y limpio en cuanto al código:
If listBox2.Items.Count>0 Then Begin Consulta.SQL.Add('Order by '+ListBox2.Items.CommaText) End |
hola magnu9, con que DB estas trabajando?
|
Saludo...
Bueno agregare los Else, me parece averlo intentado pero se me erreda un poquito, Guti lo tuyo tambien no cuesta nada inetentarlo, disculpa que en otras ocasiones tambien me lo recomendaron, lo q no intente porque estaba ensima de la entrega de una parte del sistema.gracias por sus sugerencias..
Ahora tengo un poquito de tiempo. La base de datos por el momento es Sql Server 2000, pero me gustaria mas que nada Postgres. No es que no lo he intentado, solo que al principiono entendia bien ese tipo de base, pero a medida que estoy trabajando con sql server me doy cuenta que no es nada complicado. A una pregunta porque Sql server no tiene tipo Boolean... Gracias por sus ayuda. |
La franja horaria es GMT +2. Ahora son las 10:44:01. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi