SoloCodigo

Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: marisol_ylonen en Viernes 29 de Junio de 2007, 01:41

Título: Suma
Publicado por: marisol_ylonen en Viernes 29 de Junio de 2007, 01:41
Hola!
Estoy intentando hacer una suma, pero se me ha complicado proque implica varios campos de la misma columna.
Es esto, resulta que tengo una clave autonumérica, los campos: conjunto, componente, no_almacen y cantidad, entre otros. Varios registros pueden tener el mismo contenido en "conjunto" y en "componentes" pero mi consulta distinct los muestra porque, aunque yo sé que es lo mismo, los otros campos pueden variar. Lo que quiero hacer es sumar la "cantidad" de los que tengan lo mismo en "conjunto" y en "componente". Intenté esto:
strSQL="select sum(PLANEACION.COMPONENTE) from PLANEACION GROUP BY conjunto"
Y quiero tener el resultado en un textbox, pero no me manda nada ni error siquiera.
Pensé en hacerlo por programación, hacer que recorra los registros y los que encuentre con la misma combinacion "conjunto-componente" sume la cantidad. Pero no sé cómo hacerlo.
Hice una consulta en Access, sale bien, pero no sé cómo juntarlo en la consulta que genera al formulario.
Cualquiera de los métodos que se pueda usar y un ejemplo para adaptar, envíenlo y traten de explicarlo porque aún soy bastante nueva en esto, mi correo es:
marisol_ylonen@yahoo.com.mx
Cualquier respuesta es bienvenida, gracias
Título: Re: Suma
Publicado por: LeGatoRojo en Viernes 29 de Junio de 2007, 03:31
strSQL = "SELECT Sum(PLANEACION.LSLGBE) AS SumaDeLSLGBE FROM PLANEACION GROUP BY PLANEACION.STBGNR" = Texto31

tal vez si le quitas la ultima parte de = texto31 funcionaria, y si no usa el debug para ver que valor tiene strSQL y postealo porfas.
Título: Re: Suma
Publicado por: marisol_ylonen en Viernes 29 de Junio de 2007, 15:17
hola!
Pues tiene esto: srtSQL=""
Y si asigno el alias, o sea el nombre que toma la suma, al texto31, texto31 tiene valor nulo.
Todo lo que necesito es hacer que el resultado del strSQL se vea en el textbox al momento de ejecutar.
Gracias de nuevo, son unos amores :hola:
Título: Re: Suma
Publicado por: UserCode en Viernes 29 de Junio de 2007, 22:05
Citar
Todo lo que necesito es hacer que el resultado del strSQL se vea en el textbox al momento de ejecutar.

hola  :hola:

Yo tuve esa misma cuestion y pude resolverlo gracias a las consultas dadas aqui en solocodigo, el post era algo largo y inicialmente trataba sobre una cuestion y luego paseo a esto mismo que necesitas, yo pongo un codigo, la suma ya la tienes en el Alias del campo, y si solo necesitas mostrar eso en un Text pues te serviria asi, por ejemplo:

Este es tu alias del campo: SumaDeLSLGBE entonces...

Código: Text
  1.  
  2.     Dim SumaResult As Double
  3.     With Rs
  4.         While Not .EOF
  5.             SumaResult = SumaResult + Val(![SumaDeLSLGBE])
  6.             .MoveNext
  7.         Wend
  8.     End With
  9.     Text31.Text = SumaResult
  10.  
  11.  

Por ahí va la cosa, para mostrar en un Text un campo o Alias de un Query SQL pues recoges el dato entre (![dato_sql]) sea Val(![ ]) o CDbl(![ ]), es decir, sea el caso de dato Intenger, Double, etc.

Si el Query no se trae nada y el Alias está vacio pues tal vez tengas que frenar el codigo antes de pasar por ahi o validar algo asi o sino dara error de null.

Luego del While:
Código: Text
  1.  
  2. While Not .EOF
  3.     If IsNumeric(![SumaDeLSLGBE])=Flase Then
  4.         Exit Sub
  5.     Else
  6.         SumaResult = SumaResult + Val(![SumaDeLSLGBE])
  7.     End If
  8.     .MoveNext
  9. Wend
  10.  
  11.  

ojala y te sirva :hola:
Título: Re: Suma
Publicado por: marisol_ylonen en Sábado 30 de Junio de 2007, 00:42
Hola! :hola:
Cómo decirte que estoy muy agradecida contigo. Ya me estba resignando y le estaba buscando por otro lado. Funciona de maravilla. Sólo una pregunta más, no sé si sea por mi query, hace la suma total de las cantidades de todos los registros?
Este es el sql que le metí:
strSQL = "SELECT Sum(PLANEACION.LSLGBE) AS SumaDeLSLGBE FROM PLANEACION GROUP BY PLANEACION.STBGNR"
Yo pensé que cambiaría la cantidad según el conjunto, porque eso es lo que hace el query si lo ejecuto como consulta, pero con el código parece mandarme la suma total, no solo de los que repitan la combinación STBGNR y STKOMP.
Bueno, contestasté mi primer pregunta.
Muchas gracias porque creo que a muchos nos servirá.
Hasta luego y que sigas tan iluminado y dispuesto a contestar a los que no nos rifamos tanto. :kicking:
Título: Re: Suma
Publicado por: UserCode en Sábado 30 de Junio de 2007, 01:37
Citar
strSQL = "SELECT Sum(PLANEACION.LSLGBE) AS SumaDeLSLGBE FROM PLANEACION
GROUP BY PLANEACION.STBGNR"

Si, esa SQL hace una Suma de ese campo de todos los registros de la tabla, para que la SQL solo agarre los registros que en particular se desean y no todos, pues habria que ponerle un WHERE por ejemplo, un Where con un campo o dato que solo tengan esos registros, ahorita no me viene a la mente alguna Clausula en especial o particular de SQLs, ya sabes que las SQLs son un lenguaje largo y al menos yo no he trabajado SQLs con todas las clausulas o funciones que la complementan (nota: acordarme de comprarme un libro de SQLs)
SELECT Sum(PLANEACION.LSLGBE) AS SumaDeLSLGBE FROM PLANEACION WHERE Campo='dato'

Ya encontre el post con el que yo tuve los mismos problemas, te pongo el link tal vez entre taaanta sintaxis de SQL esté algo que te pueda servir, veras que al final del largo post yo estaba con el dilema de como sacar un dato de una SQL y ponerla en un Text puesto que lo hacia siempre la SQL completa a un grid, MSFlexgrid por ejemplo

Esta bien ilustrado todo ahi   :)
Post sobre problemas en SQL, la novela con capitulo final y todo (http://foros.solocodigo.com/index.php?showtopic=24796&st=15)  :P

Cualquier cosa, de ser posible indica todos los campos de la tabla, tal vez pueda haber un campo clave para el WHERE de la SQL y pueda verse mejor la panoramica de la consulta planificada. Aqui hay gente que son expertos en SQLs y no me refiero a mi, cualquier cosa por aqui estamos  :hola:
Título: Re: Suma
Publicado por: F_Tanori en Sábado 30 de Junio de 2007, 07:51
Cita de: "marisol_ylonen"
Sólo una pregunta más, no sé si sea por mi query, hace la suma total de las cantidades de todos los registros?
Este es el sql que le metí:
strSQL = "SELECT Sum(PLANEACION.LSLGBE) AS SumaDeLSLGBE FROM PLANEACION GROUP BY PLANEACION.STBGNR"
Yo pensé que cambiaría la cantidad según el conjunto, porque eso es lo que hace el query si lo ejecuto como consulta, pero con el código parece mandarme la suma total, no solo de los que repitan la combinación STBGNR y STKOMP.
pues deberias agrupar por los dos campos

<!--sql--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>SQL </td></tr><tr><td id='CODE'><!--sql1-->[color=blue;font-weight]SELECT[/color] Sum(PLANEACION.LSLGBE) AS SumaDeLSLGBE FROM PLANEACION GROUP BY PLANEACION.STBGNR,PLANEACION.STKOMP <!--sql2--></td></tr></table><div class='postcolor'><!--sql3-->

Eso te daria la suma de cada grupo donde coincidan STBGNR y STKOMP (y puede contener mas de un registro, segun la cantidad de grupos),

eso es lo que quieres mostrar en el textbox? (si son mas de un registro tendrias que usar otro componente ¿no? como un DataGrid)

o quieres obtener la suma total por grupos? (el codigo que te a enviado UserCode)


si lo que quieres es obtener un grupo en especifico tienen que indicarle el WHERE como te lo menciona UserCode

Por ejemplo
<!--sql--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>SQL </td></tr><tr><td id='CODE'><!--sql1-->[color=blue;font-weight]SELECT[/color] Sum(PLANEACION.LSLGBE) AS SumaDeLSLGBE FROM PLANEACION WHERE PLANEACION.STBGNR='014' and PLANEACION.STKOMP='015'
GROUP BY PLANEACION.STBGNR,PLANEACION.STKOMP <!--sql2--></td></tr></table><div class='postcolor'><!--sql3-->


Saludos
Título: Re: Suma
Publicado por: marisol_ylonen en Lunes 2 de Julio de 2007, 03:31
muchas gracias, en cuanto llegue mañana a mi trabajo, voy a intentarlo porque todo lo tengo allá y les cuento qué pasó. :comp:
Y si sigo sin entender, creo que voy a seguir dándoles lata. Qué tengan un buen día!
Son verdaderamente unos amores, gracias! :hola: