Access - Unificar

 
Vista:

Unificar

Publicado por magartre (5 intervenciones) el 11/08/2008 17:14:32
Hola a todos, tengo el siguiente problema ¿como podría unificar esto?
Private Sub Ctl1_Exit(Cancel As Integer)

If (Ctl1) = "X" Then
Me.p1 = 10
ElseIf (Ctl1) = "M" Then
Me.p1 = 0
ElseIf (Ctl1) = "1" Then
Me.p1 = 1
ElseIf (Ctl1) = "2" Then
Me.p1 = 2
ElseIf (Ctl1) = "3" Then
Me.p1 = 3
ElseIf (Ctl1) = "4" Then
Me.p1 = 4
ElseIf (Ctl1) = "5" Then
Me.p1 = 5
ElseIf (Ctl1) = "6" Then
Me.p1 = 6
ElseIf (Ctl1) = "7" Then
Me.p1 = 7
ElseIf (Ctl1) = "8" Then
Me.p1 = 8
ElseIf (Ctl1) = "9" Then
Me.p1 = 9
ElseIf (Ctl1) = "10" Then
Me.p1 = 10
ElseIf (Ctl1) > 10 Then
MsgBox "El valor introducido no puede ser superior a 10", vbCritical, "ERROR"
Cancel = True
Ctl1 = ""
Ctl1.SetFocus
End If
End Sub

Private Sub Ctl2_Exit(Cancel As Integer)
If (Ctl2) = "X" Then
Me.p2 = 10

ElseIf (Ctl2) = "M" Then
Me.p2 = 0
ElseIf (Ctl2) = "1" Then
Me.p2 = 1
ElseIf (Ctl2) = "2" Then
Me.p2 = 2
ElseIf (Ctl2) = "3" Then
Me.p2 = 3
ElseIf (Ctl2) = "4" Then
Me.p2 = 4
ElseIf (Ctl2) = "5" Then
Me.p2 = 5
ElseIf (Ctl2) = "6" Then
Me.p2 = 6
ElseIf (Ctl2) = "7" Then
Me.p2 = 7
ElseIf (Ctl2) = "8" Then
Me.p2 = 8
ElseIf (Ctl2) = "9" Then
Me.p2 = 9
ElseIf (Ctl2) = "10" Then
Me.p2 = 10
ElseIf (Ctl2) > 10 Then
MsgBox "El valor introducido no puede ser superior a 10", vbCritical, "ERROR"
Cancel = True
Ctl2 = ""
Ctl2.SetFocus
End If
End Sub

Private Sub Ctl3_Exit(Cancel As Integer)
If (Ctl3) = "X" Then
Me.p3 = 10

ElseIf (Ctl3) = "M" Then
Me.p3 = 0
ElseIf (Ctl3) = "1" Then
Me.p3 = 1
ElseIf (Ctl3) = "2" Then
Me.p3 = 2
ElseIf (Ctl3) = "3" Then
Me.p3 = 3
ElseIf (Ctl3) = "4" Then
Me.p3 = 4
ElseIf (Ctl3) = "5" Then
Me.p3 = 5
ElseIf (Ctl3) = "6" Then
Me.p3 = 6
ElseIf (Ctl3) = "7" Then
Me.p3 = 7
ElseIf (Ctl3) = "8" Then
Me.p3 = 8
ElseIf (Ctl3) = "9" Then
Me.p3 = 9
ElseIf (Ctl3) = "10" Then
Me.p3 = 10
ElseIf (Ctl3) > 10 Then
MsgBox "El valor introducido no puede ser superior a 10", vbCritical, "ERROR"
Cancel = True
Ctl3 = ""
Ctl3.SetFocus
End If
End Sub
Private Sub Ctl4_Exit(Cancel As Integer)
If (Ctl4) = "X" Then
Me.p4 = 10

ElseIf (Ctl4) = "M" Then
Me.p4 = 0
ElseIf (Ctl4) = "1" Then
Me.p4 = 1
ElseIf (Ctl4) = "2" Then
Me.p4 = 2
ElseIf (Ctl4) = "3" Then
Me.p4 = 3
ElseIf (Ctl4) = "4" Then
Me.p4 = 4
ElseIf (Ctl4) = "5" Then
Me.p4 = 5
ElseIf (Ctl4) = "6" Then
Me.p4 = 6
ElseIf (Ctl4) = "7" Then
Me.p4 = 7
ElseIf (Ctl4) = "8" Then
Me.p4 = 8
ElseIf (Ctl4) = "9" Then
Me.p4 = 9
ElseIf (Ctl4) = "10" Then
Me.p4 = 10
ElseIf (Ctl4) > 10 Then
MsgBox "El valor introducido no puede ser superior a 10", vbCritical, "ERROR"
Cancel = True
Ctl4 = ""
Ctl4.SetFocus
End If
End Sub
Como podeis ver se trata de una serie de campos en los cuales se puede poner una puntuación que va de 0 a 10 ?como podría realizar una función que repitiera para no tener que hacer esto en 30 campos?.
Hay que tener en cuenta que estos campos se suman de tres en tres y luego el total de los parciales.
Gracias a tod@s y un saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:Unificar

Publicado por jcs (78 intervenciones) el 11/08/2008 22:02:35
Muy buenas,

mira a ver si te vale esto

Private Sub ctl1_Exit(Cancel As Integer)
If nota(ctl1) <> " " Then
Me.p1 = nota(ctl1)
Else
Cancel = True
ctl1 = ""
ctl1.SetFocus
End If
End Sub

Private Sub ctl2_Exit(Cancel As Integer)
If nota(ctl2) <> " " Then
Me.p2 = nota(ctl2)
Else
Cancel = True
ctl2 = ""
ctl2.SetFocus
End If
End Sub

etc.

Por otro lado, tienes que crear un módulo con esta función;

Function nota(valor)
Select Case valor
Case "M"
nota = 0
Case "X"
nota = 10
Case "1" To "9"
nota = Val(valor)
If nota > 10 Then
MsgBox "El valor introducido no puede ser superior a 10 ", vbCritical, "ERROR"
nota = " "
End If
Case Else
MsgBox "El valor introducido no puede una letra diferente de la X o M", vbCritical, "ERROR"
nota = " "
End Select
End Function

Ya dirás si te funciona y es lo que quieres.

Un saludo. Juanjo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Unificar

Publicado por magartre (5 intervenciones) el 17/08/2008 21:41:17
Juanjo, he probado tú código y funciona perfectamente, algo así era lo que quería, de esta forma elimino mucho código.
Gracias y un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar