Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Menu

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menu

Mensajes - baldomero

#1
General Programadores / Sumar con SQL en VB 2010
14 de Enero de 2012, 04:31:53 PM
Buenas tardes:

Llevo varios días dando vueltas a esta cuestión. A ver si sois tan amables de ayudarme.
Tengo una tabla con los nombres ("denominaciones") de las acciones y otra tabla con las operaciones que realizan "titulares", con acciones ("denominacion") y con "nrodetitulos". Quiero, entrando a mano el nombre de un titular (tres letras), obtener los títulos que este titular tiene de cada clase de acciones. Es decir obtener algo como:
Telefonica 2456 titulos; Repsol 764 títulos, etc. Para eso he escrito el código siguiente, pero me da siempre cero para todas las acciones. La fíormula de la suma está bien; la he comprobado con el wizard de VB2010 y me da un resultado correcto. ¿Que tengo mal? Muchas gracias.
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
        'Obtendremos para un titular: la cartera total, su valor de compra y el precio medio
        btnSeguir.Visible = True
        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 ds2, ds1 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 totalacc As Integer = 0
        Dim inc As Integer = 1
        Dim c1 As String
        MsgBox("Cuantas acciones distintas hay")
        MsgBox(cuantasacciones) 'Resultado de una función OK
        For i = 0 To cuantasacciones - 1 'Ciclo de las distintas acciones. Cada rotación es de una denominación distinta de acciones
            c1 = ds1.Tables("FiltDenom").Rows(i).Item("denominacion") 'Nombre de la acción  OK
            MsgBox(c1) 'OK
            sql2 = "SELECT SUM(nrotitulos) AS totalacc FROM operaciones WHERE (titular='AMM') AND (denominacion = '" & c1 & "')"            MsgBox("segundopaso") 'OK
            MsgBox(totalacc)  'MAAAAL
            If totalacc > 0 Then
                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
            End If
            totalacc = 0
            c1 = ""
        Next
    End Sub