Tema: Suma con SQL
Ver Mensaje Individual
  #7 (permalink)  
Antiguo 15/01/2012, 11:03
amg39
 
Fecha de Ingreso: febrero-2011
Mensajes: 29
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Suma con SQL

Gracias por tu ayuda. No he probado lo que me dijiste. La verdad es que tengo la cabeza que me echa humo. Estoy en la situación del que al acabar un curso de matemáticas se entera de que 4 + 4 son 23 (!!!!).
En la Tabla Denominación hay Acciones, Fondos y otras "clases".
Este es el código último y el que produce esas acumulaciones a que me he referido antes. He entrado variables como "registrosviejos" y "accviejas" para procurar eliminar las acumulaciones, infructuosamente. Mil gracias.
-----
Private Sub btnEjssumas_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEjssumas.Click
Dim con As New OleDb.OleDbConnection
con.ConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source = C:\Users\Mis documentos\bd4.mdb"
con.Open()
Dim sql1, sql2 As String
Dim ds1, ds2 As New DataSet

'Ciclo de las Denominaciones
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
Dim i As Integer
'¿Cuántas denominaciones distintas de acciones hay?
Dim posicion As Integer
Dim c1 As String
Dim j As Integer = 0
Dim totalacc As Integer
totalacc = 0
Dim contviejo As Integer
contviejo = 0
MsgBox("cuantas acciones")
MsgBox(cuantasacciones) 'OK
totalacc = 0
For i = 0 To cuantasacciones - 1 'Ciclo de las distintas acciones. Cada rotación es de una denominación distinta de acciones
c1 = ""
c1 = ds1.Tables("FiltDenom").Rows(i).Item("denominacion ") 'Nombre de la acción OK
MsgBox("Nombre de la acción presente " & c1)
sql2 = "SELECT * FROM operaciones WHERE ((titular='AMG') AND (denominacion = '" & c1 & "'))"
Dim da2 As New OleDb.OleDbDataAdapter(sql2, con)
da2.Fill(ds2, "Tab")
MsgBox(sql2) 'OK
'En lo que sigue ya aparece defectuoso, se acumulan los registros
Dim intCount As Integer
intCount = 0
MsgBox("cuántos registros de la acción presente tiene AMG " & ds2.Tables("Tab").Rows.Count - contviejo) 'OK
intCount = ds2.Tables("Tab").Rows.Count 'MAL
MsgBox(intCount)
totalacc = 0
Dim accviejas As Integer
Dim regtotal As Integer
regtotal = 0
accviejas = totalacc
regtotal = 0
Dim registrosviejos As Integer
registrosviejos = regtotal
MsgBox("accviejas " & accviejas)
If ds2.Tables("Tab").Rows.Count <> 0 Then
'totalacc = 0
For j = 0 To ds2.Tables("Tab").Rows.Count - 1
accviejas = totalacc
MsgBox("Nro de acciones en el registro presente" & ds2.Tables("Tab").Rows(j).Item(3) - accviejas)
'regtotal = regtotal
totalacc = totalacc + ds2.Tables("Tab").Rows(j).Item(3) - accviejas
MsgBox(c1)
MsgBox("Valor que vamos acumulando de la acción presente" & totalacc)
Next j
accviejas = totalacc
'totalacc = 0
'e.Graphics.DrawString(c1, New Font("Arial", 10), Brushes.Black, 200, posicion) 'nOMBRE DE LA ACCIÓN
'e.Graphics.DrawString(totalacc, New Font("Arial", 10), Brushes.Black, 360, posicion)
posicion = posicion + 30
'ds2.Tables("Tab").Rows.Count
End If
contviejo = ds2.Tables("Tab").Rows.Count
Next i
End Sub