Visual Basic - error de compilacion else si if

Life is soft - evento anual de software empresarial
 
Vista:

error de compilacion else si if

Publicado por angel (5 intervenciones) el 11/04/2019 17:56:37
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
Private Function ValidaDatos() As Boolean
 
Dim vDesde As Double
Dim vHasta As Double
    ValidaDatos = True
    If ValidaCUIG(UCase(Trim(Text1))) Then
        Dim a As String
        a = UCase(Mid(Trim(Text1), 1, 1))
        If a = "R" Then 'reidentificacion
            If ValidaNroManejo(Trim(Text8), True) Then
                If Trim(Text2) = "" Then
                    Text2 = Text8
                Else
                   'valida que manejo desde sea menor o igual a manejo hasta
                    If CDbl(Text8) > CDbl(Text2) Then
                        ValidaDatos = False
                        MsgBox "Nro Manejo Desde mayor al Hasta !!!", vbCritical, Me.Caption
                    End If
                End If
            Else
                ValidaDatos = False
                MsgBox "Nro Manejo invalido", vbCritical, Me.Caption
            End If
        Else
            If Option3 Then
                If ValidaNroManejollnn(Trim(Text8), False) Then
                    If Trim(Text2) = "" Then
                        Text2 = Text8
                    Else
                        If ValidaNroManejollnn(Trim(Text2), False) Then
                            'valida que manejo desde sea menor o igual a manejo hasta
                            'Dim vDesde As Double
                            'Dim vHasta As Double
                            If Len(Trim(Text8)) = Len(Trim(Text2)) And Len(Trim(Text8)) = 4 Then 'formato nuevo
                                vDesde = CDbl(Mid(Trim(Text8), 3, 2))
                                vHasta = CDbl(Mid(Trim(Text2), 3, 2))
                            ElseIf Len(Trim(Text8)) = Len(Trim(Text2)) And Len(Trim(Text8)) = 9 Then 'formato anterior
                                vDesde = CDbl(Trim(Text8))
                                vHasta = CDbl(Trim(Text2))
                            End If
                            If vDesde > vHasta Then
                                ValidaDatos = False
                                MsgBox "Nro Manejo Desde mayor al Hasta !!!", vbCritical, Me.Caption
                            End If
                        Else
                            ValidaDatos = False
                            MsgBox "Nro Manejo Hasta invalido", vbCritical, Me.Caption
                       End If
                    End If
                Else
                    ValidaDatos = False
                    MsgBox "Nro Manejo Desde invalido", vbCritical, Me.Caption
                End If
            Else
                If ValidaNroManejo(Trim(Text8), False) Then
                    If Trim(Text2) = "" Then
                        Text2 = Text8
                    Else
                        If ValidaNroManejo(Trim(Text2), False) Then
                            'valida que manejo desde sea menor o igual a manejo hasta
                            'Dim vDesde As Double
                            'Dim vHasta As Double
                            If Len(Trim(Text8)) = Len(Trim(Text2)) And Len(Trim(Text8)) = 4 Then 'formato nuevo
                                vDesde = CDbl(Mid(Trim(Text8), 2, 3))
                                vHasta = CDbl(Mid(Trim(Text2), 2, 3))
                            ElseIf Len(Trim(Text8)) = Len(Trim(Text2)) And Len(Trim(Text8)) = 9 Then 'formato anterior
                                vDesde = CDbl(Trim(Text8))
                                vHasta = CDbl(Trim(Text2))
                            End If
                            If vDesde > vHasta Then
                                ValidaDatos = False
                                MsgBox "Nro Manejo Desde mayor al Hasta !!!", vbCritical, Me.Caption
                            End If
                        Else
                            ValidaDatos = False
                            MsgBox "Nro Manejo Hasta invalido", vbCritical, Me.Caption
                        End If
                    End If
                Else
                    ValidaDatos = False
                    MsgBox "Nro Manejo Desde invalido", vbCritical, Me.Caption
                End If
            End If
        End If
        Else
            ValidaDatos = False
            MsgBox "CUIG invalido", vbCritical, Me.Caption
 
            End If
 
 
            ElseIf Option4 Then
 
                If ValidaNroManejollln(Trim(Text8), False) Then
                    If Trim(Text2) = "" Then
                        Text2 = Text8
                    Else
                        If ValidaNroManejollln(Trim(Text2), False) Then
                            'valida que manejo desde sea menor o igual a manejo hasta
                            'Dim vDesde As Double
                            'Dim vHasta As Double
                            If Len(Trim(Text8)) = Len(Trim(Text2)) And Len(Trim(Text8)) = 4 Then 'formato nuevo
                                vDesde = CDbl(Mid(Trim(Text8), 3, 2))
                                vHasta = CDbl(Mid(Trim(Text2), 3, 2))
                            ElseIf Len(Trim(Text8)) = Len(Trim(Text2)) And Len(Trim(Text8)) = 9 Then 'formato anterior
                                vDesde = CDbl(Trim(Text8))
                                vHasta = CDbl(Trim(Text2))
                            End If
                            If vDesde > vHasta Then
                                ValidaDatos = False
                                MsgBox "Nro Manejo Desde mayor al Hasta !!!", vbCritical, Me.Caption
                            End If
                        Else
                            ValidaDatos = False
                            MsgBox "Nro Manejo Hasta invalido", vbCritical, Me.Caption
                       End If
                    End If
                Else
                    ValidaDatos = False
                    MsgBox "Nro Manejo Desde invalido", vbCritical, Me.Caption
                End If
            Else
                If ValidaNroManejo(Trim(Text8), False) Then
                    If Trim(Text2) = "" Then
                        Text2 = Text8
                    Else
                        If ValidaNroManejo(Trim(Text2), False) Then
                            'valida que manejo desde sea menor o igual a manejo hasta
                            'Dim vDesde As Double
                            'Dim vHasta As Double
                            If Len(Trim(Text8)) = Len(Trim(Text2)) And Len(Trim(Text8)) = 4 Then 'formato nuevo
                                vDesde = CDbl(Mid(Trim(Text8), 2, 3))
                                vHasta = CDbl(Mid(Trim(Text2), 2, 3))
                            ElseIf Len(Trim(Text8)) = Len(Trim(Text2)) And Len(Trim(Text8)) = 9 Then 'formato anterior
                                vDesde = CDbl(Trim(Text8))
                                vHasta = CDbl(Trim(Text2))
                            End If
                            If vDesde > vHasta Then
                                ValidaDatos = False
                                MsgBox "Nro Manejo Desde mayor al Hasta !!!", vbCritical, Me.Caption
                            End If
                        Else
                            ValidaDatos = False
                            MsgBox "Nro Manejo Hasta invalido", vbCritical, Me.Caption
                        End If
                    End If
                Else
                    ValidaDatos = False
                    MsgBox "Nro Manejo Desde invalido", vbCritical, Me.Caption
                End If
            End If
        End If
        Else
            ValidaDatos = False
            MsgBox "CUIG invalido", vbCritical, Me.Caption
 
            End If
 
 
End Function
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
Imágen de perfil de Andres Leonardo
Val: 3.117
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

error de compilacion else si if

Publicado por Andres Leonardo (1798 intervenciones) el 11/04/2019 21:10:29
vaya .. solo de ver esto me acaba de dar dolor de cabeza .. esto yo lo llamaria Dolor de Cabeza debido al mal uso del IF ...

No croe que nadie asi viendo este codigo lo saque .. habra uqe llevarlo a un ide... pero viene la pregunta que siempre he pedido .. No existira otra forma de validar .. cuentanos que esta haciendo tu funion capaz podriamos optimizarla
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

error de compilacion else si if

Publicado por angel (5 intervenciones) el 11/04/2019 21:27:59
lo que estoy tratando de hacer es validar los datos que tengo en dos textbox para que me arroje una consulta de la base, la option3 me funciona para validar 2 letras y dos num pero al meter codigo de la ElseIf Option4 es cuando me genera el error




ESTA FUNCIONA:

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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
Pririvate Function ValidaDatos() As Boolean
 
Dim vDesde As Double
Dim vHasta As Double
    ValidaDatos = True
    If ValidaCUIG(UCase(Trim(Text1))) Then
        Dim a As String
        a = UCase(Mid(Trim(Text1), 1, 1))
        If a = "R" Then 'reidentificacion
            If ValidaNroManejo(Trim(Text8), True) Then
                If Trim(Text2) = "" Then
                    Text2 = Text8
                Else
                   'valida que manejo desde sea menor o igual a manejo hasta
                    If CDbl(Text8) > CDbl(Text2) Then
                        ValidaDatos = False
                        MsgBox "Nro Manejo Desde mayor al Hasta !!!", vbCritical, Me.Caption
                    End If
                End If
            Else
                ValidaDatos = False
                MsgBox "Nro Manejo invalido", vbCritical, Me.Caption
            End If
        Else
            If Option3 Then
                If ValidaNroManejollnn(Trim(Text8), False) Then
                    If Trim(Text2) = "" Then
                        Text2 = Text8
                    Else
                        If ValidaNroManejollnn(Trim(Text2), False) Then
                            'valida que manejo desde sea menor o igual a manejo hasta
                            'Dim vDesde As Double
                            'Dim vHasta As Double
                            If Len(Trim(Text8)) = Len(Trim(Text2)) And Len(Trim(Text8)) = 4 Then 'formato nuevo
                                vDesde = CDbl(Mid(Trim(Text8), 3, 2))
                                vHasta = CDbl(Mid(Trim(Text2), 3, 2))
                            ElseIf Len(Trim(Text8)) = Len(Trim(Text2)) And Len(Trim(Text8)) = 9 Then 'formato anterior
                                vDesde = CDbl(Trim(Text8))
                                vHasta = CDbl(Trim(Text2))
                            End If
                            If vDesde > vHasta Then
                                ValidaDatos = False
                                MsgBox "Nro Manejo Desde mayor al Hasta !!!", vbCritical, Me.Caption
                            End If
                        Else
                            ValidaDatos = False
                            MsgBox "Nro Manejo Hasta invalido", vbCritical, Me.Caption
                       End If
                    End If
                Else
                    ValidaDatos = False
                    MsgBox "Nro Manejo Desde invalido", vbCritical, Me.Caption
                End If
            Else
                If ValidaNroManejo(Trim(Text8), False) Then
                    If Trim(Text2) = "" Then
                        Text2 = Text8
                    Else
                        If ValidaNroManejo(Trim(Text2), False) Then
                            'valida que manejo desde sea menor o igual a manejo hasta
                            'Dim vDesde As Double
                            'Dim vHasta As Double
                            If Len(Trim(Text8)) = Len(Trim(Text2)) And Len(Trim(Text8)) = 4 Then 'formato nuevo
                                vDesde = CDbl(Mid(Trim(Text8), 2, 3))
                                vHasta = CDbl(Mid(Trim(Text2), 2, 3))
                            ElseIf Len(Trim(Text8)) = Len(Trim(Text2)) And Len(Trim(Text8)) = 9 Then 'formato anterior
                                vDesde = CDbl(Trim(Text8))
                                vHasta = CDbl(Trim(Text2))
                            End If
                            If vDesde > vHasta Then
                                ValidaDatos = False
                                MsgBox "Nro Manejo Desde mayor al Hasta !!!", vbCritical, Me.Caption
                            End If
                        Else
                            ValidaDatos = False
                            MsgBox "Nro Manejo Hasta invalido", vbCritical, Me.Caption
                        End If
                    End If
                Else
                    ValidaDatos = False
                    MsgBox "Nro Manejo Desde invalido", vbCritical, Me.Caption
                End If
            End If
        End If
        Else
            ValidaDatos = False
            MsgBox "CUIG invalido", vbCritical, Me.Caption
 
End If




ESTA NO:

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
Else
		If Option4 Then
			If ValidaNroManejollln(Trim(Text8), False) Then
				If Trim(Text2) = "" Then
					Text2 = Text8
				Else
					If ValidaNroManejollln(Trim(Text2), False) Then
						'valida que manejo desde sea menor o igual a manejo hasta
						'Dim vDesde As Double
						'Dim vHasta As Double
						If Len(Trim(Text8)) = Len(Trim(Text2)) And Len(Trim(Text8)) = 4 Then 'formato nuevo
							vDesde = CDbl(Mid(Trim(Text8), 4, 1))
							vHasta = CDbl(Mid(Trim(Text2), 4, 1))
						ElseIf Len(Trim(Text8)) = Len(Trim(Text2)) And Len(Trim(Text8)) = 9 Then 'formato anterior
							vDesde = CDbl(Trim(Text8))
							vHasta = CDbl(Trim(Text2))
						End If
						If vDesde > vHasta Then
							ValidaDatos = False
							MsgBox "Nro Manejo Desde mayor al Hasta !!!", vbCritical, Me.Caption
						End If
					Else
						ValidaDatos = False
						MsgBox "Nro Manejo Hasta invalido", vbCritical, Me.Caption
					End If
				End If
			Else
				ValidaDatos = False
				MsgBox "Nro Manejo Desde invalido", vbCritical, Me.Caption
			End If
		End If
	End If
	Else
		ValidaDatos = False
		MsgBox "CUIG invalido", vbCritical, Me.Caption
 
End If
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
sin imagen de perfil
Val: 42
Ha aumentado su posición en 7 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

error de compilacion else si if

Publicado por Raúl Mejía (22 intervenciones) el 12/04/2019 01:32:49
Estimado Angel, el elseif que no te funciona es porque no tiene un if anidado, todos los if anteriores los cerraste con un endif, es por eso que el else no funciona.

Saludos.
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
Imágen de perfil de Antoni Masana
Val: 1.259
Plata
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

error de compilacion else si if

Publicado por Antoni Masana (558 intervenciones) el 12/04/2019 07:03:53
Una recomendación:

Reestructura este código porque así es incomprensible. Añade más comentarios. usa más AND y OR y cuando se de una situación no valida finaliza la función con un EXIT FUNCTION y evitadas tantos IF y ELSE

Un ejemplo del EXIT

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
Private Function ValidaDatos() As Boolean
    Dim vDesde As Double
    Dim vHasta As Double
 
    ValidaDatos = True
 
    If ValidaCUIG(UCase(Trim(Text1))) Then
        Dim a As String
        a = UCase(Mid(Trim(Text1), 1, 1))
        If a = "R" Then 'reidentificacion
            If ValidaNroManejo(Trim(Text8), True) Then
                If Trim(Text2) = "" Then
                    Text2 = Text8
                Else
                   'valida que manejo desde sea menor o igual a manejo hasta
                    If CDbl(Text8) > CDbl(Text2) Then
                        ValidaDatos = False
                        MsgBox "Nro Manejo Desde mayor al Hasta !!!", vbCritical, Me.Caption
                        Exit Function
                    End If
                End If
            Else
                ValidaDatos = False
                MsgBox "Nro Manejo invalido", vbCritical, Me.Caption
                Exit Function
            End If


Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

error de compilacion else si if

Publicado por angel (5 intervenciones) el 12/04/2019 13:07:25
me podria indicar como quedaria el codigo
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
Imágen de perfil de Antoni Masana
Val: 1.259
Plata
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

error de compilacion else si if

Publicado por Antoni Masana (558 intervenciones) el 13/04/2019 13:12:52
No se que pretendes hacer y no puedo deducirlo de un código que esta mal.

Si explicas que quieres hacer te poder decir como hacerlo.

Saludos.
\\//_
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