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
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