Ir al contenido


Foto

mostrar en 2 campos resultado de una cosulta


  • Por favor identifícate para responder
13 respuestas en este tema

#1 edgar_prospero

edgar_prospero

    Advanced Member

  • Miembros
  • PipPipPip
  • 136 mensajes

Escrito 25 septiembre 2012 - 08:42

que hay amigos aqui estoy con un problema del cual no se bien como explicarlo tratare de dar un ejemplo de lo que necesito aver si me doy a entender, tengo una base de datos en mysql con los siguientes datos:
nombre de la tabla: entradas
con los campos codigo, nombre, cantidad, documento fecha, folio un ejemlplo de mi base de datos con informacion



delphi
  1. CODIGO  NOMBRE      FECHA        FOLIO    DOCUMENTO    CANTIDAD
  2. A01        buro      24/09/2012      1            E          8
  3. A01        buro      03/12/2011      2            S          2



ahora lo que quiero lograr es que me muestre los que corresponden a documento E como entradas la cantidad 8 y salidas la cantidad 2 algo asi




delphi
  1. CODIGO        NOMBRE        FECHA          FOLIO      ENTRADAS    SALIDAS
  2. A01            buro          24/09/2012        1          8
  3. A01            buro          03/12/2012        2                      2





  • 0

#2 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.092 mensajes
  • LocationRepública Dominicana

Escrito 25 septiembre 2012 - 08:59

Saludos.

Puedes hacer uso de la sentencia CASE conjuntamente con la sentencia SUM, con esto creo que perfectamente obtienes lo que deseas.
  • 0

#3 edgar_prospero

edgar_prospero

    Advanced Member

  • Miembros
  • PipPipPip
  • 136 mensajes

Escrito 25 septiembre 2012 - 09:02

no tengo mucho conocimiento en mysql pero lo intente de esta manera:



delphi
  1. SELECT codigo, nombre,documento, fecha, folio, cantidad AS entradas FROM entradas WHERE documento='E'
  2. UNION
  3. SELECT codigo, nombre, documento, fecha, folio, cantidad AS salidas FROM entradas  WHERE documento='S'



pero el resultado me lo ponia en un solo campo de la siguiente manera



delphi
  1. CODIGO        NOMBRE        FECHA          FOLIO      ENTRADAS 
  2. A01            buro        24/09/2012        1              8
  3. A01            buro        03/12/2012        2              2



buscare algo de la manera que dices
  • 0

#4 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.092 mensajes
  • LocationRepública Dominicana

Escrito 25 septiembre 2012 - 09:04

Saludos.

Lo que te indique son sentencias genéricas del Ansi Sql, te exhorto a que busques información sobre el tema.
  • 0

#5 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 25 septiembre 2012 - 09:36

Estuvo muy bien tu acercamiento, pero el union debe ser de la siguiente manera




      SELECT codigo, nombre,documento, fecha, folio, cantidad AS entradas, 0 Salidas
        FROM entradas
      WHERE documento='E'
  UNION
  SELECT codigo, nombre, documento, fecha, folio, 0 Entradas, Cantidad AS salidas
    FROM entradas  WHERE documento='S'


  • 0

#6 edgar_prospero

edgar_prospero

    Advanced Member

  • Miembros
  • PipPipPip
  • 136 mensajes

Escrito 25 septiembre 2012 - 09:57

gracias por la respuesta poliburro, de esa forma ahora si me funciona en mysql pero ahora tengo problemas para ajustarlo en delphi lo intento de la siguiente manera pero no se deja a ver si tu me puedes detectar mi falla:



delphi
  1. procedure TForm16.imprimirClick(Sender: TObject);
  2. begin
  3. tabla.close ;
  4. tabla.SQL.Clear;
  5.  
  6.  
  7. tabla.sql.add(' SELECT codigo, nombre, folio, cantidad AS cantidad, 0 cantsal'+
  8.         'FROM entradas '+
  9.       'WHERE documento="E" and codigo>=:inicial and codigo<=:final '+
  10.   'UNION '+
  11.   ' SELECT codigo, nombre, documento, fecha, folio, 0 cantidad, Cantidad AS cantsal'+
  12.     'FROM entradas  WHERE documento="S"  and codigo>=:inicial and codigo<=:final ');
  13.  
  14. tabla.ParamByName('inicial').Asstring:=inicial.Text;
  15. tabla.ParamByName('final').Asstring:=final.Text;
  16.  
  17. tabla.PREPARE;
  18. tabla.Active:=TRUE;
  19. form17.reporte.Preview;
  20.  
  21. inicial.SetFocus;
  22. fecha2.date:=date;
  23. fecha1.Date:=StrToDate( '01/01/2012');
  24.  
  25. end;


  • 0

#7 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 25 septiembre 2012 - 10:04

hasta donde recuerdo solo puedes definir un parámetro de entrada en las consultas... si lo usarás más de una vez deberás ponerle otro nombre... considerando esto prueba lo siguiente:




delphi
  1. procedure TForm16.imprimirClick(Sender: TObject);
  2. begin
  3. tabla.close ;
  4. tabla.SQL.Clear;
  5.  
  6.  
  7. tabla.sql.add(' SELECT codigo, nombre, folio, cantidad AS cantidad, 0 cantsal'+
  8.         'FROM entradas '+
  9.       'WHERE documento="E" and codigo>=:inicial and codigo<=:final '+
  10.   'UNION '+
  11.   ' SELECT codigo, nombre, documento, fecha, folio, 0 cantidad, Cantidad AS cantsal'+
  12.     'FROM entradas  WHERE documento="S"  and codigo>=:inicialsalida and codigo<=:finalsalid ');
  13.  
  14. tabla.ParamByName('inicial').Asstring:=inicial.Text;
  15. tabla.ParamByName('final').Asstring:=final.Text;
  16. tabla.ParamByName('inicialsalida').Asstring:=inicial.Text;
  17. tabla.ParamByName('finalsalida').Asstring:=final.Text;
  18.  
  19.  
  20. tabla.PREPARE;
  21. tabla.Active:=TRUE;
  22. form17.reporte.Preview;
  23.  
  24. inicial.SetFocus;
  25. fecha2.date:=date;
  26. fecha1.Date:=StrToDate( '01/01/2012');
  27.  
  28. end;



  • 0

#8 edgar_prospero

edgar_prospero

    Advanced Member

  • Miembros
  • PipPipPip
  • 136 mensajes

Escrito 25 septiembre 2012 - 10:15

ya lo intente como me lo indicaste pero me marca lo siguiente:



delphi
  1. #42000 you have an error in your SQL syntax; check the manual that corresponds to your mysql server version for te right syntax to user near ' entradas WHERE documento="E" and codigo>=? and codigo<=? UNION SELECT codigo, n' at line 1


  • 0

#9 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 25 septiembre 2012 - 10:24

mmmm a ver, postea por favor la consulta como la tienes, identada por favor
  • 0

#10 edgar_prospero

edgar_prospero

    Advanced Member

  • Miembros
  • PipPipPip
  • 136 mensajes

Escrito 25 septiembre 2012 - 10:43

no creo que el error este en los parametros , porque trato de correrlo sin parametros y me marca el mismo error:


delphi
  1. tabla.sql.add(' SELECT codigo, nombre, folio, cantidad AS cantidad, 0 cantsal'+
  2.         'FROM entradas '+
  3.       'WHERE documento="E"  '+
  4.   'UNION '+
  5.   ' SELECT codigo, nombre, documento, fecha, folio, 0 cantidad, Cantidad AS cantsal'+
  6.     'FROM entradas  '+
  7.   ' WHERE documento="S"  ');


  • 0

#11 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 25 septiembre 2012 - 10:54

Ya vi el error.

El problema es que no estas indentando correctamente tus consultas... por eso tienes esos errores

esto :

tabla.sql.add(' SELECT codigo, nombre, folio, cantidad AS cantidad, 0 cantsal'+
        'FROM entradas '+

genera esta sentencia


SELECT codigo, nombre, folio, cantidad AS cantidad, 0 cantsalFROM entradas

notas el error?



  • 0

#12 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.092 mensajes
  • LocationRepública Dominicana

Escrito 25 septiembre 2012 - 11:15

Saludos.

Como indique en mi mensaje previo:

SELECT codigo, nombre,documento, fecha, folio,
SUM(CASE documento WHEN 'E'  THEN cantidad ELSE 0 END) ENTRADAS,
SUM(CASE documento WHEN 'S'  THEN cantidad ELSE 0 END) SALIDAS
FROM entradas
WHERE codigo BETWEEN :inicial and :final

  • 0

#13 edgar_prospero

edgar_prospero

    Advanced Member

  • Miembros
  • PipPipPip
  • 136 mensajes

Escrito 25 septiembre 2012 - 12:53

gracias por sus respuestas poliburro ahi estaba el asunto con eso funciono y Rolphy Reyes lo intente como tu lo indicaste y tambien funciono,

saludos!!!!
  • 0

#14 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 25 septiembre 2012 - 02:12

gracias por sus respuestas poliburro ahi estaba el asunto con eso funciono y Rolphy Reyes lo intente como tu lo indicaste y tambien funciono,

saludos!!!!


Así es Amigo... ambas consultas al final dan el mismo resultado...  saludox
  • 0




IP.Board spam blocked by CleanTalk.