Equivalente de Suma(Campo)

Hace tiempo que estoy programando una base de datos para facturación en Access. Y tengo la duda de como poner esta expressión en Visual Basic: =Suma([Preu]*[Quantitat]). Preu y quantitat son dos campos que tengo en un subformulario en el subformulario solo me salen los Artículos que están associados al presupuesto por lo tanto no quiero una función que me sume toda la tabla sino solo los que salen en el sub formulario.
He leído por ahí que a través de SQL se puede hacer. Si alguien me pudiera ayudar.

1 Respuesta

Respuesta
1
Tienes una forma muy sencilla, que es colocar un textbox oculto, y en el, colocar en "origen del control" lo que quieras precalcular... por ejemplo, =suma([x] * [y])
Luego pillas el valor desde visual basic sencillamente con, valor=nz(textbox)
Desde luego que lo más efectivo es precalcularlo desde SQL sólo en el momento que vayas a utilizar el valor, porque con un campo calculado (como la solución de arriba)
Para ello, si no has trabajado nunca directamente, te va a resultar un poco complicado... pero bueno, alguna vez hay que empezar (sobre todo si llevas idea de migrar de Access)
Sería algo así,
Dim rs As Recordset
Dim DBASE As Database
Set DBASE = CurrentDb
dim msg as string
msg = "SELECT sum(precio*cantidad) AS total1 FROM la_tabla_que_sea;"
    Set rs = DBASE.OpenRecordset(msg, dbReadOnly, dbSeeChanges + dbSQLPassThrough)
    Dim total_calculado
    calculado= rs.Fields("total1")
    Rs. Close
He probado poniendo un textbox oculto para que me lo calcule i después con el nz(texbox), pero esto solo me funciona si esta visible el textbox.
Después también he probado el código SQL que me has pasado cambiando el nombre de la tabla i de total1 por un texbox.
Gracias por la ayuda
Eso si que es raro... que este el textbox visible o no, no debería influir para absolutamente nada (yo tengo muchas aplicaciones viejas funcionando así).
En la sentencia sql (lo que va en "msg", vamos)... no puedes poner el textbox... el textbox tuyo para que me entienda seria el "calculado".
msg = "SELECT sum(precio*cantidad) AS total1 FROM la_tabla_que_sea;"
Set rs = DBASE.OpenRecordset(msg, dbReadOnly, dbSeeChanges + dbSQLPassThrough)
    Dim total_calculado
    textbox1= rs.Fields("total1")
    Rs. Close
Si tienes que pasar el valor de los textbox por ejemplo el de cantidad, tendrías que hacer esto
msg = "SELECT sum(precio*" & textbox_de_cantidad & ") AS total1 FROM la_tabla_que_sea;"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas