Foros del Web » Programación para mayores de 30 ;) » .NET »

Una orden SQL SUM() que no suma

Estas en el tema de Una orden SQL SUM() que no suma en el foro de .NET en Foros del Web. Buenas tardes. A ver si sois tan amables de hacerme que esto rule. En mi BD tengo, entre otras, dos tablas: Tabla "Denominacion" donde están ...
  #1 (permalink)  
Antiguo 12/01/2012, 14:46
 
Fecha de Ingreso: febrero-2011
Mensajes: 29
Antigüedad: 13 años, 1 mes
Puntos: 0
Una orden SQL SUM() que no suma

Buenas tardes. A ver si sois tan amables de hacerme que esto rule.
En mi BD tengo, entre otras, dos tablas: Tabla "Denominacion" donde están los nombres de las acciones y otros valores (fondos, bono, etc). Primero he hecho un filtro porque sólo me interesa conocer las acciones que tiene cada titular. Y otra tabla, "Operaciones" donde figuran las acciones que de dichos valores van comprando los "titulares". Mi idea es hacer un ciclo for-next que recorra la tabla (subtabla, para ser riguroso) de las acciones y dentro de este ciclo ir a la tabla "Operaciones" y ver cuántas (el número de títulos) acciones de cada denominación tiene un titular que hemos escrito en un TextBox1, aunque aquí por hacerlo más sencillo lo he escrito "a brazo", "AMM".
El ciclo sí se hace y aparece el nombre de los valores (acciones) pero me da de suma para todas las acciones 0.
Es decir que tengo un listado tal que así:
Iberdrola 0
Telefónica 0 y así para todos; pero eso está mal porque para eso lo tengo a la vista en la BD.

'Ciclo de las Denominaciones de las acciones
sql1 = "SELECT * from Denominacion WHERE clase = 'Acciones' ORDER BY denominacion"
Dim da1 As New OleDb.OleDbDataAdapter(sql1, con)
da1.Fill(ds1, "FiltDenom") 'FiltroDenom es el DataSet que contiene los nombres de todas las acciones
con.Close()
Dim i As Integer
'¿Cuántas denominaciones distintas de acciones hay?
'Aqui he introducido una función que me da este nro: cuantasaccionesdistintashay
Dim posicion As Integer
Dim total As Integer = 0
Dim inc As Integer = 1
Dim c1 As String 'Para representar el nombre de cada denominación de acciones

For i = 0 To cuantasaccionesdistintashay() - 1 'Ciclo de las distintas acciones. Cada rotación es de una denominación distinta de acciones
query2 = "SELECT ISNULL(SUM(nrotitulos), 0) As total FROM Operaciones WHERE Operaciones.denominacion = denominacion.denominacion and Ltrim(Operaciones.titular) = 'AMM'" ' " & TextBox1.Text & "'"

MsgBox(total) 'Lo he puesto para observar durante la realización; en efecto, siempre ceros.
c1 = ds1.Tables("FiltDenom").Rows(i).Item("denominacion ") 'Nombre de la acción)
e.Graphics.DrawString(c1, New Font("Arial", 10), Brushes.Black, 200, posicion) ' OK
e.Graphics.DrawString(total, New Font("Arial", 10), Brushes.Black, 360, posicion) 'MAL
posicion = posicion + 30
Next

¿Qué he hecho mal? Muchas gracias.
  #2 (permalink)  
Antiguo 12/01/2012, 16:39
Avatar de drako_darpan  
Fecha de Ingreso: octubre-2008
Ubicación: Sinaloa
Mensajes: 617
Antigüedad: 15 años, 5 meses
Puntos: 58
Respuesta: Una orden SQL SUM() que no suma

Hola que tal, bueno creo que esto deberia estar en el foro de SQL .

Pero yo te diria que manejes un SP y manejes un while con el que puedas hacer el ciclo. También si manejas un SELECT Campo1,SUM siempr tienes que poner un GROUP BY Campo1.

Dale un poco mas de sangria al fuente pegado, para que se pueda entender un poco mas
  #3 (permalink)  
Antiguo 12/01/2012, 17:15
 
Fecha de Ingreso: febrero-2011
Mensajes: 29
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Una orden SQL SUM() que no suma

Muchas gracias por tu amable respuesta. Mañana la pondré en práctica. Llevo hoy todo el día dándole vueltas al asunto y como si nada.

Etiquetas: orden, sql, sum, suma, tabla, textbox
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:21.