Tema: Suma con SQL
Ver Mensaje Individual
  #8 (permalink)  
Antiguo 15/01/2012, 17:30
Uran
 
Fecha de Ingreso: enero-2012
Mensajes: 49
Antigüedad: 12 años, 10 meses
Puntos: 4
Respuesta: Suma con SQL

Antes de ponerme a programar código, ¿podrías responder a una serie de preguntas?
  1. ¿Es requisito trabajar con DataSet o te vale con Recourdset? (DataSet/Recourdset)
  2. ¿La base de datos desde la que llamas al evento con el botón es la misma de la que quieres obtener los datos? (/No)

En cualquier caso creo que necesito una pequeña pausa para reflexionar.

Tu código básicamente tiene que realizar lo siguiente:

Dado un titular y una denominación decir cual es el total de acciones de dicho titular para esa denominación. ¿Correcto? (/No)

Si las respuestas a las anteriores preguntas es siempre la que está resaltada en negrita, con éste código puedes realizar lo que pides:

Código vb:
Ver original
  1. Private Sub btnEjssumas_Click()
  2.  
  3.     Dim db As Database
  4.     Dim rst As DAO.Recordset
  5.     Dim sql As String
  6.      
  7.     Set db = CurrentDb()
  8.     sql = "SELECT SUM(nrotitulos) AS totalacc FROM operaciones " _
  9.            & "WHERE (titular='" & titular & "') AND (denominaciones='" & c1 & "')"
  10.            
  11.     Set rst = db.OpenRecordset(sql2, dbReadOnly)
  12.      
  13.     If Not (rst.BOF And rst.EOF) Then
  14.             MsgBox ("Total suma de numero de titulos: " & rst.totalacc)
  15.     Else
  16.             MsgBox ("Tabla no encontrada o no hay operaciones para sumar.")
  17.     End If
  18.      
  19.     Set rst = Nothing
  20.     Set db = Nothing
  21.  
  22. End Sub

Si alguna de las respuestas no es la que está resaltada en negrita, dime cuales no lo son y a partir de ahí vamos viendo.

De todos modos, te dejo éste otro que te dice para cada denominación el SUM(nrotitulos) de un determinado titular
Código vb:
Ver original
  1. Private Sub btnEjssumas_Click()
  2.  
  3.     Dim db As Database
  4.     Dim rst1 As DAO.Recordset
  5.     Dim rst2 As DAO.Recordset
  6.     Dim sql1 As String
  7.     Dim sql2 As String
  8.     Dim titular As String
  9.     Dim denominacion As String
  10.    
  11.     Set db = CurrentDb() 'Si no es la base de datos actual, tendrás que cambiar esta linea
  12.    
  13.     titular = " " 'Titular que quieres buscar
  14.    
  15.     'Dado que en las denominaciones hay registros cuya "clase" no es acciones
  16.    'Tabla denominacion campo denominacion, ¿correcto?
  17.    sql1 = "SELECT denominacion from denominacion " _
  18.            & "WHERE clase = 'Acciones'"
  19.     Set rst1 = db.OpenRecordset(sql1, dbReadOnly)
  20.            
  21.     If Not (rst1.BOF And rst1.EOF) Then
  22.         With rst1
  23.         Do While Not .EOF
  24.             denominacion = .denominacion
  25.             sql2 = "SELECT SUM(nrotitulos) AS totalacc FROM operaciones " _
  26.                 & "WHERE (titular='" & titular & "') AND (denominaciones='" & denominacion & "')"
  27.             Set rst2 = db.OpenRecordset(sql2, dbReadOnly)
  28.             MsgBox ("Para " & denominacion & " el numero de titulos de " & titular & " es: " & rst2.totalacc)
  29.         .MoveNext
  30.         Loop
  31.         End With
  32.     Else
  33.             MsgBox ("Tabla no encontrada o no hay operaciones para sumar.")
  34.     End If
  35.      
  36.     Set rst1 = Nothing
  37.     Set rst2 = Nothing
  38.     Set db = Nothing
  39.  
  40. End Sub