Programación General > Visual Basic 6.0 e inferiores
Cuando Ejecuto Se Cuelga Vb
(1/1)
lavi:
Planteo una función, con bastantes bloques if, recorre dos colecciones y carga datos a la bd y a otra colección; no se, al ejecutar el programa y llamarla se cuelga visual, pero no me doy cuenta porq? No tira error, les pongo el cod. de la función, no sé si servirá de algo pero por lo menos quizas alguna idea de que puede ser, ;), MUCHAS GRACIAS...
[/CODE]
Public Function RECIBOSXCATEGORIA(idcat As Integer, numeroinicial As Long, dia As Integer, mes As Integer, año As Integer) As Collection
Dim COLFAMILIAR As Collection
Dim COLTITULAR As Collection
Set COLFAMILIAR = clpAfiliado2.CargarTodos
Set COLTITULAR = clpAfiliado1.CargarTodos
Dim i, j, X As Long
For i = 1 To COLFAMILIAR.Count
For j = 1 To COLTITULAR.Count
If idcat = COLTITULAR.Item(j).IdCategoria And idcat = COLFAMILIAR.Item(i).IdCategoria Then
X = 0
If COLFAMILIAR.Item(i).ID = COLTITULAR.Item(j).ID Then
Set clreciboCat1 = New cReciboCat1
X = 1
If X = 1 Then
X = 2
clreciboCat1.NombreFamiliar2 = COLFAMILIAR.Item(i).nombre
End If
ElseIf X = 2 Then
X = 3
clreciboCat1.NombreFamiliar2 = COLFAMILIAR.Item(i).nombre
End If
ElseIf X = 3 Then
X = 4
clreciboCat1.NombreFamiliar3 = COLFAMILIAR.Item(i).nombre
End If
If X = 4 Then
X = 5
clreciboCat1.NombreFamiliar4 = COLFAMILIAR.Item(i).nombre
End If
If X = 5 Then
X = 6
clreciboCat1.NombreFamiliar5 = COLFAMILIAR.Item(i).nombre
End If
If X = 6 Then
X = 7
clreciboCat1.NombreFamiliar6 = COLFAMILIAR.Item(i).nombre
End If
If X = 7 Then
X = 8
clreciboCat1.NombreFamiliar7 = COLFAMILIAR.Item(i).nombre
End If
If X = 8 Then
X = 9
clreciboCat1.NombreFamiliar8 = COLFAMILIAR.Item(i).nombre
End If
If X = 9 Then
X = 10
clreciboCat1.NombreFamiliar10 = COLFAMILIAR.Item(i).nombre
End If
If X = 10 Then
X = 11
clreciboCat1.NombreFamiliar10 = COLFAMILIAR.Item(i).nombre
End If
If X = 11 Then
X = 11
clreciboCat1.NombreFamiliar11 = COLFAMILIAR.Item(i).nombre
Set CLCAT = CLDCAT.Cargarxid(COLFAMILIAR.Item(i).IdCategoria)
clreciboCat1.ID = CLDCAT.NuevoID
clreciboCat1.numeroinicial = numeroinicial
clreciboCat1.Numero = cldrecibocat.Nuevonumero
clreciboCat1.nombre = COLTITULAR.Item(j).nombre
clreciboCat1.Valor = CLCAT.Valor
clreciboCat1.Iva = CLCAT.Iva
clreciboCat1.Total = CLCAT.Iva + CLCAT.Valor
clreciboCat1.Categoria = CLCAT.nombre
clreciboCat1.Direccion = COLTITULAR.Item(j).Direccion
clreciboCat1.Telefono = COLTITULAR.Item(j).Telefono
clreciboCat1.mes = mes
clreciboCat1.año = año
clreciboCat1.dia = dia
clreciboCat1.IdCategoria = CLCAT.ID
RECIBOSXCATEGORIA.Add clreciboCat1
cldrecibocat.Alta (clreciboCat1)
End If
Set clrecibocat = Nothing
Next
Next
End Function
[CODE]
cpmario:
Difícil para mi saber que hace esta función, sin tener el resto del código. Pero te doy algunas ideas.
Primero, debes de formatear el código para que sea fácil de revisar por ejemplo:
--- Código: Text ---Public Function RECIBOSXCATEGORIA(idcat As Integer, numeroinicial As Long, dia As Integer, mes As Integer, año As Integer) As Collection Dim COLFAMILIAR As Collection Dim COLTITULAR As Collection Set COLFAMILIAR = clpAfiliado2.CargarTodos Set COLTITULAR = clpAfiliado1.CargarTodos Dim i, j, X As Long For i = 1 To COLFAMILIAR.Count For j = 1 To COLTITULAR.Count If idcat = COLTITULAR.Item(j).IdCategoria And idcat = COLFAMILIAR.Item(i).IdCategoria Then X = 0 If COLFAMILIAR.Item(i).ID = COLTITULAR.Item(j).ID Then Set clreciboCat1 = New cReciboCat1 X = 1 If X = 1 Then X = 2 clreciboCat1.NombreFamiliar2 = COLFAMILIAR.Item(i).nombre End If ElseIf X = 2 Then X = 3 clreciboCat1.NombreFamiliar2 = COLFAMILIAR.Item(i).nombre End If ElseIf X = 3 Then X = 4 clreciboCat1.NombreFamiliar3 = COLFAMILIAR.Item(i).nombre End If If X = 4 Then X = 5 clreciboCat1.NombreFamiliar4 = COLFAMILIAR.Item(i).nombre End If If X = 5 Then X = 6 clreciboCat1.NombreFamiliar5 = COLFAMILIAR.Item(i).nombre End If If X = 6 Then X = 7 clreciboCat1.NombreFamiliar6 = COLFAMILIAR.Item(i).nombre End If If X = 7 Then X = 8 clreciboCat1.NombreFamiliar7 = COLFAMILIAR.Item(i).nombre End If If X = 8 Then X = 9 clreciboCat1.NombreFamiliar8 = COLFAMILIAR.Item(i).nombre End If If X = 9 Then X = 10 clreciboCat1.NombreFamiliar10 = COLFAMILIAR.Item(i).nombre End If If X = 10 Then X = 11 clreciboCat1.NombreFamiliar10 = COLFAMILIAR.Item(i).nombre End If If X = 11 Then X = 11 clreciboCat1.NombreFamiliar11 = COLFAMILIAR.Item(i).nombre Set CLCAT = CLDCAT.Cargarxid(COLFAMILIAR.Item(i).IdCategoria) clreciboCat1.ID = CLDCAT.NuevoID clreciboCat1.numeroinicial = numeroinicial clreciboCat1.Numero = cldrecibocat.Nuevonumero clreciboCat1.nombre = COLTITULAR.Item(j).nombre clreciboCat1.Valor = CLCAT.Valor clreciboCat1.Iva = CLCAT.Iva clreciboCat1.Total = CLCAT.Iva + CLCAT.Valor clreciboCat1.Categoria = CLCAT.nombre clreciboCat1.Direccion = COLTITULAR.Item(j).Direccion clreciboCat1.Telefono = COLTITULAR.Item(j).Telefono clreciboCat1.mes = mes clreciboCat1.año = año clreciboCat1.dia = dia clreciboCat1.IdCategoria = CLCAT.ID RECIBOSXCATEGORIA.Add clreciboCat1 cldrecibocat.Alta (clreciboCat1) End If Set clrecibocat = Nothing Next NextEnd Function Segundo, revisa paso a paso el código o coloca interrupciones y ejecuta el código con F5 hasta que encuentres el problema.
:comp:
Navegación
Ir a la versión completa