Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Promediar campos en access, excluyendo valores nulos

Estas en el tema de Promediar campos en access, excluyendo valores nulos en el foro de Bases de Datos General en Foros del Web. Buenos días, he venido revisando varios hilos de distintos problemas y me he dado con la sorpresa que hay muchisimas personas que tienen un amplio ...
  #1 (permalink)  
Antiguo 14/05/2014, 12:03
 
Fecha de Ingreso: mayo-2014
Ubicación: Cajamarca
Mensajes: 1
Antigüedad: 10 años, 6 meses
Puntos: 0
Exclamación Promediar campos en access, excluyendo valores nulos

Buenos días, he venido revisando varios hilos de distintos problemas y me he dado con la sorpresa que hay muchisimas personas que tienen un amplio conocimiento y les estaría muy agradecido de compartirlo conmigo, solucionando este pequeño problemita en access.

Tengo definidos 4 campos de una tabla, que vienen a ser u1, u2, u3, u4. lo que necesito, es tener el promedio de estos 4 campos, ojo, no todos los campos tienen una nota, por ejemplo

en u1 tiene 05
en u2 no hay nada
en u3 tiene 18
en u4 tiene 12

El promedio debería ser 11.66 redondeando debería ser 12 pero me muestra el promedio de 64.25 porque los valores nulos tienen como referencia a un 222, este es el código que tengo, les estaría muy agradecido de recibir su ayuda

Código:
Private Sub Comando19_Click()
    Dim vcon1 As ADODB.Connection
    Dim alu As ADODB.Recordset
    Dim sql As String
    Dim cod_mat, cod_act, u1, u2, u3, u4, et, prom_cl As Integer
    Dim prom_cn As String
    
    Set vcon1 = CurrentProject.Connection
    Set alu = New ADODB.Recordset
    
        alu.Open "SELECT DISTINCT MAT_COD, ACT_COD, T1U1PC1, T1U1PC2, T1U1PC3, T1U1PC4, T1PU1, idcurso FROM ACTAS_DETALLE;", vcon1, adOpenStatic, adLockReadOnly
        alu.MoveFirst
        Do Until alu.EOF
            cod_mat = alu(0)
            cod_act = alu(1)
            u1 = alu(2)
            u2 = alu(3)
            u3 = alu(4)
            u4 = alu(5)
            et = alu(6)
            cur = alu(7)
            prom_cl = 0
            prom_cn = ""

                If IsNull(u1) Then
                    u1 = 222
                End If
            
                If IsNull(u2) Then
                    u2 = 222
                End If
            
                If IsNull(u3) Then
                    u3 = 222
                End If
                
                If IsNull(u4) Then
                    u4 = 222
                End If
                
                If IsNull(et) Then
                    et = 222
                End If
                                    
                prom_cl = (u1 + u2 + u3 + u4) / 4 + 0.1
sql = "UPDATE DETA_ACTA SET T1PU1=" & prom_cl & ",T1PU1CL='" & prom_cn & "' WHERE MAT_COD=" & cod_mat & " AND ACT_COD=" & cod_act & "; "
            vcon1.Execute (sql)
        alu.MoveNext
        Loop
        alu.Close
        vcon1.Close
        MsgBox ("LOS PROMEDIOS FUERON CALCULADOS SATISFACTORIAMENTE")
    
End Sub
Sé que debo cambiar la linea
Cita:
prom_cl = (u1 + u2 + u3 + u4) / 4 + 0.1
pero he buscado en varios lugares y no encuentro algo parecido a lo que estoy buscando

Etiquetas: access, campos, nulos, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:34.