FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Ayuda en If Then Else
Hola estimados Compañeros bien les planteo el Siguiente Problema tengo una Consulta lanzada a la Bd de la Tabla de Pagos Bien lo siguiente es cuando hago la comparacion de Resultados:
Bien el problema es que que el Resultado idTipPag viene siendo cualquiera de los 5 a la misma vez y eso me manda por default al Ultimo resultado en dado caso que exista mas de un tipo de pago del Cliente. Mi pregunta es Puedo hacer un And de resultado (sdQuery.Value = 1 and sqQuery = 2 ad..........) Se puede o alguna recomendacion de como Hacerlo Gracias.. Última edición por marcoszorrilla fecha: 18-11-2009 a las 15:01:54. |
#2
|
|||
|
|||
Hola, una variable no puede tomar dos valores al mismo tiempo
ejemplo: Código:
... var indice: integer; begin if (indice = 1) and (indice = 2) then // ---- imposible de evaluar showmessage('indice vale 1 y tambièn vale 2'); end...
__________________
La conquista mas grande de un hombre es la conquista de el mismo.
Última edición por calogero fecha: 18-11-2009 a las 07:48:58. |
#3
|
|||
|
|||
hola,
pienso como Calogero, si te hemos entendido bien, por que si nom ¿ Te refieres a la evaluación de los IF o te refieres a la asignación de valores ? Ya que el tema de AND u OR es para comparaciones, es decir, en tu caso:
Un saludo |
#4
|
|||
|
|||
Seria más elegante y más claro:
Código:
var i: integer; begin i := qryPagosIdTipPag2.Value ; case i of 1: qrPro0.memReportePagos.Value := StrToFloat(lo_s); 2: qrPro0.memReportePagos2.Value := StrToFloat(lo_s) 3: qrPro0.memReportePagos3.Value := StrToFloat(lo_s) 4: qrPro0.memReportePagos4.Value := StrToFloat(lo_s) 5: qrPro0.memReporteServFac.Value := StrToFloat(lo_s); end; //case qrPro0.memReporte.Post;qrPro0.memReporte.Post; Código:
var i: integer; begin i := qryPagosIdTipPag2.Value ; case i of 1,2: qrPro0.memReportePagos.Value := StrToFloat(lo_s); 3: qrPro0.memReportePagos3.Value := StrToFloat(lo_s) 4: qrPro0.memReportePagos4.Value := StrToFloat(lo_s) 5: qrPro0.memReporteServFac.Value := StrToFloat(lo_s); end; //case qrPro0.memReporte.Post;qrPro0.memReporte.Post; Saludos, Gerard. Última edición por gerardus fecha: 18-11-2009 a las 10:20:38. |
#5
|
||||
|
||||
A ver si lo he entendido:
Lo que pretendes es que "qryPagosIdTipPag2.Value" sea capaz de contener más de un valor al mismo tiempo, ¿no? Pues si es sí, entonces entonces tienes que usar SET OF o bien campos de bit. Elegir una u otra opción depende de dónde obtienes el contenido de "qryPagosIdTipPag2.Value", aunque por el nombre supondré que es de una consulta SQL. Si es el caso te recomiendo el uso de campos de bit. Los campos de bit, como el nombre indica, son estructuras en los que cada campo ocupa un sólo bit, por lo que permite almacenar valores binarios. Por ejemplo:
Si no lo entiendes, busca información sobre matemáticas binarias. |
#6
|
|||
|
|||
If Then Else
Hola Primero que nada Agradezco de antemano las respuestas de todos y espero haber comprendido correctamente cada una de sus respuestas bn aqui voy a explicarme un poco mas tellado:
Codigo Bien de este codigo apartir de una sentencia Sql parto en Busqueda de un resultado en el reglon donde apunto <-------Primero verifico que la caden obtenida de mi query sea un solo resultado y en la segunda verifico si lo_s tiene mas de un resultado me lo envie, bn comprendido como Mencionan antes he sacado por medio de resultados Todos correctos siempre y cuando el resultado arroje que siempre tien 1 solo tipo de pago cliente 80 importe paga 200 forma pago 1 cliente 90 importe paga 80 forma pago 3 . . .Cosecutivamente habiendo 1 sola exibicion genial !! Bien el problema persiste cuando el cliente tiene mas de dos pagos es decir lo_s := lo_s+FloatToStr(qryPagosImporte.Value); En esta parte digamos que el Cliente 120 Importe 100 y 200 tipopago 1 y 3 En esta parte al hacer las validaciones de la forma de pago me tira el resultado en el Ultimo. qryTipoPago.Value = 3 Then resutaldo = lo_s; a lo que lo_s. arroja 100200, cuando deberian ir separados He ahi mi gran Problema.. Espero haberme dado a entender al 100% Última edición por marcoszorrilla fecha: 18-11-2009 a las 15:03:07. |
#7
|
|||
|
|||
Intentando interpretar tu codigo...Con algunas modificaciones...
Ojala sea la lectura correcta... |
#8
|
|||
|
|||
If Then Else
Hola: Cloyza, Muchas gracias por tus Contestaciones
Me sirvio de algo para agilizar y dejarlo mas Optimizado Respecto al comentario de la concatenacion estas en lo correcto por cuestiones anteriores se diseño de la siguiente manera Pagos si es de una sola expedicion NombrePago $Importe Si eran mas de una expedicion NombrePago $Importe , NombrePago $Importe He aqui donde realizaba la concatenacion Ahora se pide de la siguiente mane pago1 pago2 pago3 pago4 pago 100 80 150 50 Apartir de esto es el problema Principal cuando saco mis sentencias If o Case en tu caso me manda a la Ultima Opcion Haciendo la concatenacion tomando el pago4 mayoritario o ultimo por decirlo asi, quisiera saber como hacer para sustraer el valor1 y valor4 separados para asi poder asignarlo a su Lugar indicado. Gracias...Saludos...... |
#9
|
|||
|
|||
Hola en mi opinión no tienes porque concatenar el nombrepago con el importepago,
te seria mas fácil si lo manejaras de la siguiente manera en una tabla en la base de datos: tabla pagos idpago | nombrepago | importe ------------------------------ 1 | pago1 | $0.00 2 | pago2 | $0.00 3 | pago3 | $0.00 4 | pago4 | $0.00 de esa manera obtienes cada campo por separado y asi lo podrías manipular mejor en tu query ejemplo Código:
var nombrePago: string; importePago: string; ... nombrePago := qryGral.FieldByName('nombrepago').asString; importePago := qryGral.FieldByName('importe').asString; ...
__________________
La conquista mas grande de un hombre es la conquista de el mismo.
|
#10
|
|||
|
|||
Cita:
Hola Caloguero cierto lo que dices, desafortundamente mi Table no esta de esa manera la tengo asi: Id Folio idforpag importe 1 755 1 100 2 755 2 150 3 755 3 200 Todo esta en un EOF y quedo lanzo la query me manda los tres registros es por eso que en su momento los concatone.. Forma Pago,Nombre Pago y me salia 1 100, 2 150, 3 200 Ahora mi problema es separalos pago1 pago2 pago3 pago4 100 200 300 pero siempre me da el Ultimo resultado... Lei por ahi algo de separarlos uno por uno pero no entiendo bn la metodologia podrias Orientarme al respecto Saludos....... |
#11
|
|||
|
|||
donde te indico con texto rojo justo ahi no concatenes mejor almacena los resultados en un stringList que viene siendo como un arreglo dinamico, ejemplo;
te mando este link y aqui viene como usar el string list. http://delphiallimite.blogspot.com/2...inglist-i.html no se si me hayas captado la idea pero seria como una pila de datos y asi te evitas concatenar y luego desconcatenar 1 |valor1 2 |valor2 3 |valor3 ... n |valorn y asi vas recorriendo el stringList y tomando valores espero que te sirva, saludos.
__________________
La conquista mas grande de un hombre es la conquista de el mismo.
Última edición por calogero fecha: 19-11-2009 a las 06:24:55. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Instalar Ayuda (.HLP) en la Ayuda de Delphi? | MasterXP | Varios | 6 | 12-04-2006 06:57:49 |
Ayuda para crear ayuda... | Gabriel2 | Varios | 2 | 10-06-2005 00:15:18 |
Leer la ayuda... Ayuda! | MaJeSTiC | Varios | 0 | 04-08-2004 21:24:42 |
ayuda con strtofloat, ayuda punto flotante | TURING | Varios | 5 | 30-04-2004 08:03:59 |
Ayuda Con Instalacion De Archivos De Ayuda | Legolas | Varios | 1 | 01-12-2003 14:48:03 |
|