Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-11-2009
ekbadel ekbadel is offline
Registrado
 
Registrado: may 2007
Posts: 7
Poder: 0
ekbadel Va por buen camino
Post 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:
Código Delphi [-]
 
If (qryPagosIdTipPag2.Value = 1)  Then
                qrPro0.memReportePagos.Value   := StrToFloat(lo_s)
            else If (qryPagosIdTipPag2.Value = 2)  Then
                     qrPro0.memReportePagos2.Value   := StrToFloat(lo_s)
            else If (qryPagosIdTipPag2.Value = 3)  Then
                     qrPro0.memReportePagos3.Value   := StrToFloat(lo_s)
            else If (qryPagosIdTipPag2.Value = 4)  Then
                     qrPro0.memReportePagos4.Value   := StrToFloat(lo_s)
            else If (qryPagosIdTipPag2.Value = 5)  Then
                     qrPro0.memReporteServFac.Value  := StrToFloat(lo_s);
            end;
            qrPro0.memReporte.Post;
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.
Responder Con Cita
  #2  
Antiguo 18-11-2009
calogero calogero is offline
Miembro
 
Registrado: oct 2006
Ubicación: Los Mochis, Sinaloa, México
Posts: 76
Poder: 18
calogero Va por buen camino
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...
creo que la forma en la que tienes tu codigo es correcta, y si te funciona no veo cual sea el problema.
__________________
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.
Responder Con Cita
  #3  
Antiguo 18-11-2009
JosepGA JosepGA is offline
Miembro
 
Registrado: jun 2007
Ubicación: Tarragona
Posts: 166
Poder: 17
JosepGA Va por buen camino
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:

Código Delphi [-]
If ( (qryPagosIdTipPag2.Value = 1) Or (qryPagosIdTipPag2.Value = 2) ) Then
                   qrPro0.memReportePagos.Value   := StrToFloat(lo_s)
else If (qryPagosIdTipPag2.Value = 3)  Then
  qrPro0.memReportePagos3.Value   := StrToFloat(lo_s)
            else If (qryPagosIdTipPag2.Value = 4)  Then
  qrPro0.memReportePagos4.Value   := StrToFloat(lo_s)
            else If (qryPagosIdTipPag2.Value = 5)  Then
  qrPro0.memReporteServFac.Value  := StrToFloat(lo_s);

end;  ¿ ESTE END SOBRA ?
            
qrPro0.memReporte.Post;

Un saludo
Responder Con Cita
  #4  
Antiguo 18-11-2009
gerardus gerardus is offline
Miembro
 
Registrado: dic 2007
Posts: 43
Poder: 0
gerardus Va por buen camino
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;
Si el valor 1 y2 dan el mismo resultado, sería:

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;
Y como bien dice JosepGA te sobra un end

Saludos,

Gerard.

Última edición por gerardus fecha: 18-11-2009 a las 10:20:38.
Responder Con Cita
  #5  
Antiguo 18-11-2009
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
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:

Código Delphi [-]
TYPE
    TCampoDeBit: BYTE; (* Permite hasta ocho campos. *)
CONST
    cdbUNO    = $01; { 00000001 }
    cdbDOS    = $02; { 00000010 }
    cdbTRES   = $04; { 00000100 }
    cdbCUATRO = $08; { 00001000 }
    cdbCINCO  = $10; { 00010000 }
    cdbSEIS   = $20; { 00100000 }
    cdbSIETE  = $40; { 01000000 }
    cdbOCHO   = $80; { 10000000 }
VAR
   Valor: TCampoDeBit;
BEGIN
{ Asignar 1 a un campo: }
    Valor := Valor OR cdbTRES;
{ Asignar 0 a un campo: }
   Valor := Valor AND (NOT cdbSIETE);
{ Comprobar si un campo es 1: }
   IF (Valor AND cdbCINCO) <> 0 THEN
      ...
{ Comprobar si más de un campo es uno: }
   IF (Valor AND (cdbUNO OR cdbDOS)) <> 0 THEN
      ...
END:

Si no lo entiendes, busca información sobre matemáticas binarias.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #6  
Antiguo 18-11-2009
ekbadel ekbadel is offline
Registrado
 
Registrado: may 2007
Posts: 7
Poder: 0
ekbadel Va por buen camino
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
Código Delphi [-]
 
   if loFirst then begin
               qryPagos.Filter := 'Folio = '+IntToStr(qryReporteFolio.Value)+' AND Cancelado = '+chr(39)+'False'+chr(39);
               qryPagos.First;
               lo_s := '';
               While not qryPagos.Eof do begin
                  if lo_s = '  ' then
                     lo_s := FloatToStr(qryPagosImporte.Value) <---- Primero
                  
 
             else
                     lo_s := lo_s+FloatToStr(qryPagosImporte.Value);
                  qryPagos.Next;
              end;
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.
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
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


La franja horaria es GMT +2. Ahora son las 21:07:32.


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