Sacar promedio en "Procedimiento de evento" + Access
Publicado por Miguel (6 intervenciones) el 14/05/2014 16:04:14
Buenos días, tengo un botón en access que cumple la función de promediar unos campos de una tabla, los cuales vienen a ser N1, N2, N3, N4 los cuales ya estan declarados, y me saca el promedio colocando:
Hasta acá todo bien, pero el problema es que en algunos casos, los alumnos no tienen los 4 campos llenos con notas, y al promerdiar entre 4, no me da el promedio como deberia ser.
Me podrían ayudar con este problema por favor?, deberia tomar los valores de los campos N1, N2, N3, N4, dependiendo si los campos tienen algún valor dentro de ellos, no sé si me dejo entender, pero supongamos que el campo N1 y N4, son los 2 únicos campos que tienen un valor, deberían solo promediar esos 2 campos, muchas gracias por la ayuda anticipada.
Adjunto el código, gracias
1
prom_cl = (u1 + u2 + u3 + u4) / 4
Me podrían ayudar con este problema por favor?, deberia tomar los valores de los campos N1, N2, N3, N4, dependiendo si los campos tienen algún valor dentro de ellos, no sé si me dejo entender, pero supongamos que el campo N1 y N4, son los 2 únicos campos que tienen un valor, deberían solo promediar esos 2 campos, muchas gracias por la ayuda anticipada.
Adjunto el código, gracias
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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, n1, n2, n3, n4,T1ET, 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 (cur = 62 Or cur = 63 Or cur = 59) Then
Else
If IsNull(et) Then
et = 222
End If
If (u1 = 222 Or u2 = 222 Or u3 = 222 Or et = 222) Then
If (cod_act = 1161 Or cod_act = 1163 Or cod_act = 1168 Or cod_act = 1170 Or cod_act = 1175 Or cod_act = 1177) Then
prom_cl = 0
Else
prom_cl = 222
End If
Else
prom_cl = (u1 + u2 + u3 + u4)
End If
End If
If prom_cl >= 1 And prom_cl <= 10 Then
prom_cn = "C"
ElseIf prom_cl >= 11 And prom_cl <= 12 Then
prom_cn = "B"
ElseIf prom_cl >= 13 And prom_cl <= 18 Then
prom_cn = "A"
ElseIf prom_cl >= 19 And prom_cl <= 20 Then
prom_cn = "AD"
End If
End If
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
Valora esta pregunta
0