IF en Visual basic(ACCESS 2010)

Hola,

Tengo un problema con access 2010 y es que pongo el siguiente codigo y me dice que el else esta mal "Error de compilacion - Else sin IF" y si que tengo el IF ¿me podeis ayudar?.

si es socio le pregunte una cosa y si no lo es le pregunte otra distinta.

If (Me.[Listado Alumnos_NSOCIO] = 0 Or IsNull(Me.[Listado Alumnos_NSOCIO])) Then
Select Case MsgBox("¿DESEA HACER SOCIO A ESTE ALUMNO?", vbYesNo Or vbQuestion Or vbDefaultButton1, "atencion")
Case vbYes

Else

Select Case MsgBox("YA ES SOCIO¿DESEA VER SUS DATOS?", vbYesNo Or vbQuestion Or vbDefaultButton1, "atencion")
Case vbYes

End If

............................AQUI TENGO MUCHO CODIGO POR ABAJO PERO FUNCIONA CORRECTAMENTE...............

Case vbNo
MsgBox ("OPERACION CANCELADA, EL ALUMNO NO ES SOCIO.")
End Select


Muchas Gracias..

Saludos
subtituye el else por Elseif
@SyTo Prueba a poner dos puntos tras el Else
Else:
Muchas Gracias por la ayuda, pero me sigue dando el mismo error. el elseif(con su respectiva condicion) y directamente me dice que no funciona, y si pongo else: me tira el mismo error de antes.

Os pego el codigo completo por si el error estuviera en otro lugar o algo.. todo funciona menos lo del IF. :-? :-?

Private Sub NuevoSocio_Click()

If (Me.[Listado Alumnos_NSOCIO] = 0 Or IsNull(Me.[Listado Alumnos_NSOCIO])) Then
Select Case MsgBox("¿DESEA HACER SOCIO A ESTE ALUMNO?", vbYesNo Or vbQuestion Or vbDefaultButton1, "atencion")
Case vbYes

Else

Select Case MsgBox("YA ES SOCIO¿DESEA VER SUS DATOS?", vbYesNo Or vbQuestion Or vbDefaultButton1, "atencion")
Case vbYes

End If

'Obtengo el maxNSocio
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("MaxSocios")
rst.MoveFirst

If IsNull(rst!maximo) Then
Me.Lsocio.Value = 0
Else
Me.Lsocio.Value = rst!maximo
End If

Set rst = Nothing
Set dbs = Nothing


Dim strSQL As String
If (Me.NSocio = 0 Or IsNull(Me.NSocio)) Then
'MsgBox "Pon el numero de socio primero", , "Atención"
NSocio = Me.Lsocio.Value + 1
End If
'Ahora comprobamos si ya tenía datos de socio anterior
If (NSOCIO2 <> "") Then 'ya era socio el año anterior.
strSQL = "UPDATE Socios SET Factura=NULL, NSocio=" & Me.NSocio & _
" WHERE NSocio2=" & Me.NSOCIO2


Else 'Nuevo socio que el año anterior no lo era
If Me.PADRES_APELLIDOS <> "" Then
ApellidosSocio = Me.PADRES_APELLIDOS
NombreSocio = Me.PADRES_NOMBRE
Else
ApellidosSocio = Me.MADRE_APELLIDOS
NombreSocio = Me.MADRE_NOMBRE
End If
If Not IsNull(ApellidosSocio) Then
NApellido1 = ApellidosSocio
NApellido2 = ""
'NApellido1 = Left(Trim(ApellidosSocio), InStr(1, Trim(ApellidosSocio), " ", vbTextCompare))
'NApellido2 = Trim(Right(Trim(ApellidosSocio), (InStrRev(Trim(ApellidosSocio), " ", , vbTextCompare)) - 1))
Else
NApellido1 = ""
NApellido2 = ""
NombreSocio = ""
End If
strSQL = "INSERT INTO Socios (NSocio, Nombre, Apellido1, Apellido2, Direccion, poblacion,CP,Provincia) " & _
"VALUES (" & Me.NSocio & ",'" & NombreSocio & "','" & NApellido1 & "','" & NApellido2 & _
"','" & Me.domicilio & "','" & Me.POBLACION & "','" & Me.cp & "','ALICANTE')"
End If

On Error Resume Next
DoCmd.RunSQL strSQL
If Err.Number <> 0 Then
MsgBox "El Socio ya existe, comprueba si es el mismo"
End If
On Error GoTo 0
DoCmd.OpenForm "FormSocios", acNormal, , "NSocio = " & Me.NSocio
Me.Refresh

Case vbNo
MsgBox ("OPERACION CANCELADA.")
End Select

End Sub


Nuevamente, Muchas Gracias
prueba sacando el case de dentro del if y crea dentro una variable mensaje para que cambie el texto segun corresponda
el select case no esta cerrado, pero creo que lo estas haciendo mal de todas formas el select case, creo que pretendes que cuando pulse algún botón haga algo.

Select [ Case ] testexpression
[ Case expressionlist
[ statements ] ]
[ Case Else
[ elsestatements ] ]
End Select
Noumaios escribió:prueba sacando el case de dentro del if y crea dentro una variable mensaje para que cambie el texto segun corresponda


El lunes lo intento sin falta, muchas gracias por tu ayuda

karaculo escribió:el select case no esta cerrado, pero creo que lo estas haciendo mal de todas formas el select case, creo que pretendes que cuando pulse algún botón haga algo.

Select [ Case ] testexpression
[ Case expressionlist
[ statements ] ]
[ Case Else
[ elsestatements ] ]
End Select


Tengo varios case del mismo modo que este y me funcionan perfectos.

Muchas gracias por intentar ayudarme.

Saludos
creo que al no tener end select se cree que el else esta dentro del case
Karaculo escribió:creo que al no tener end select se cree que el else esta dentro del case


El lunes lo probare, pero creo que ya probe subiendo el end select arriba y seguia con sus trece..

Muchas Gracias
Este funciona probado con vbs, pero sigo sin comprender para que utilizas el select case ya que no haces nada
dim i
dim j
i=2
j=2
If (i = 0 Or IsNull(j)) Then
Select Case MsgBox("¿DESEA HACER SOCIO A ESTE ALUMNO?", vbYesNo Or vbQuestion Or vbDefaultButton1, "atencion")
Case vbYes
end select

Else

Select Case MsgBox("YA ES SOCIO¿DESEA VER SUS DATOS?", vbYesNo Or vbQuestion Or vbDefaultButton1, "atencion")
Case vbYes
end select
End If
Karaculo escribió:Este funciona probado con vbs, pero sigo sin comprender para que utilizas el select case ya que no haces nada
dim i
dim j
i=2
j=2
If (i = 0 Or IsNull(j)) Then
Select Case MsgBox("¿DESEA HACER SOCIO A ESTE ALUMNO?", vbYesNo Or vbQuestion Or vbDefaultButton1, "atencion")
Case vbYes
end select

Else

Select Case MsgBox("YA ES SOCIO¿DESEA VER SUS DATOS?", vbYesNo Or vbQuestion Or vbDefaultButton1, "atencion")
Case vbYes
end select
End If


Lo que me has mandado funciona perfectamente, entre lo que tu me has mandado y algo que tenia realizado por mi al final ha salido como deberia..

Dejo como lo he conseguido por si alguien alguna vez se pierde en esta tonteria como yo jajaja..

Dim Respuesta As String

If (Me.[Listado Alumnos_NSOCIO] = 0 Or IsNull(Me.[Listado Alumnos_NSOCIO])) Then

Respuesta = MsgBox("NO ES SOCIO ¿DESEA HACERLO SOCIO?", 4, "MENSAJE")


If Respuesta = 6 Then

MsgBox "VA HACERLO SOCIO", , "MENSAJE"


ElseIf Respuesta = 7 Then
MsgBox "NO SE HARA SOCIO", , "MENSAJE"
Exit Sub
End If

Else

Respuesta = MsgBox("ES SOCIO ¿DESEA VER SUS DATOS?", 4, "MENSAJE")


If Respuesta = 6 Then

MsgBox "SI", , "MENSAJE"


ElseIf Respuesta = 7 Then
MsgBox "NO", , "MENSAJE"
Exit Sub
End If

End If


Muchas Gracias a Karaculo,rintin y a Noumaios por vuestra gran ayuda... :) :) :)

Saludos
10 respuestas