• Viernes 8 de Noviembre de 2024, 23:05

Autor Tema:  Cuando Ejecuto Se Cuelga Vb  (Leído 953 veces)

lavi

  • Miembro activo
  • **
  • Mensajes: 34
    • Ver Perfil
Cuando Ejecuto Se Cuelga Vb
« en: Viernes 2 de Noviembre de 2007, 19:00 »
0
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

  • Miembro HIPER activo
  • ****
  • Mensajes: 629
    • Ver Perfil
    • http://www.cpimario.com
Re: Cuando Ejecuto Se Cuelga Vb
« Respuesta #1 en: Sábado 3 de Noviembre de 2007, 04:17 »
0
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
  1. Public Function RECIBOSXCATEGORIA(idcat As Integer, numeroinicial As Long, dia As Integer, mes As Integer, año As Integer) As Collection
  2.     Dim COLFAMILIAR As Collection
  3.     Dim COLTITULAR As Collection
  4.     Set COLFAMILIAR = clpAfiliado2.CargarTodos
  5.     Set COLTITULAR = clpAfiliado1.CargarTodos
  6.     Dim i, j, X As Long
  7.     For i = 1 To COLFAMILIAR.Count
  8.         For j = 1 To COLTITULAR.Count
  9.             If idcat = COLTITULAR.Item(j).IdCategoria And idcat = COLFAMILIAR.Item(i).IdCategoria Then
  10.                 X = 0
  11.                 If COLFAMILIAR.Item(i).ID = COLTITULAR.Item(j).ID Then
  12.                     Set clreciboCat1 = New cReciboCat1
  13.                     X = 1
  14.                     If X = 1 Then
  15.                         X = 2
  16.                         clreciboCat1.NombreFamiliar2 = COLFAMILIAR.Item(i).nombre
  17.                     End If
  18.                 ElseIf X = 2 Then
  19.                     X = 3
  20.                     clreciboCat1.NombreFamiliar2 = COLFAMILIAR.Item(i).nombre
  21.                 End If
  22.             ElseIf X = 3 Then
  23.                 X = 4
  24.                 clreciboCat1.NombreFamiliar3 = COLFAMILIAR.Item(i).nombre
  25.             End If
  26.             If X = 4 Then
  27.                 X = 5
  28.                 clreciboCat1.NombreFamiliar4 = COLFAMILIAR.Item(i).nombre
  29.             End If
  30.             If X = 5 Then
  31.                 X = 6
  32.                 clreciboCat1.NombreFamiliar5 = COLFAMILIAR.Item(i).nombre
  33.             End If
  34.             If X = 6 Then
  35.                 X = 7
  36.                 clreciboCat1.NombreFamiliar6 = COLFAMILIAR.Item(i).nombre
  37.             End If
  38.             If X = 7 Then
  39.                 X = 8
  40.                 clreciboCat1.NombreFamiliar7 = COLFAMILIAR.Item(i).nombre
  41.             End If
  42.             If X = 8 Then
  43.                 X = 9
  44.                 clreciboCat1.NombreFamiliar8 = COLFAMILIAR.Item(i).nombre
  45.             End If
  46.             If X = 9 Then
  47.                 X = 10
  48.                 clreciboCat1.NombreFamiliar10 = COLFAMILIAR.Item(i).nombre
  49.             End If
  50.             If X = 10 Then
  51.                 X = 11
  52.                 clreciboCat1.NombreFamiliar10 = COLFAMILIAR.Item(i).nombre
  53.             End If
  54.             If X = 11 Then
  55.                 X = 11
  56.                 clreciboCat1.NombreFamiliar11 = COLFAMILIAR.Item(i).nombre
  57.                 Set CLCAT = CLDCAT.Cargarxid(COLFAMILIAR.Item(i).IdCategoria)
  58.                 clreciboCat1.ID = CLDCAT.NuevoID
  59.                 clreciboCat1.numeroinicial = numeroinicial
  60.                 clreciboCat1.Numero = cldrecibocat.Nuevonumero
  61.                 clreciboCat1.nombre = COLTITULAR.Item(j).nombre
  62.                 clreciboCat1.Valor = CLCAT.Valor
  63.                 clreciboCat1.Iva = CLCAT.Iva
  64.                 clreciboCat1.Total = CLCAT.Iva + CLCAT.Valor
  65.                 clreciboCat1.Categoria = CLCAT.nombre
  66.                 clreciboCat1.Direccion = COLTITULAR.Item(j).Direccion
  67.                 clreciboCat1.Telefono = COLTITULAR.Item(j).Telefono
  68.                 clreciboCat1.mes = mes
  69.                 clreciboCat1.año = año
  70.                 clreciboCat1.dia = dia
  71.                 clreciboCat1.IdCategoria = CLCAT.ID
  72.                 RECIBOSXCATEGORIA.Add clreciboCat1
  73.                 cldrecibocat.Alta (clreciboCat1)
  74.             End If
  75.             Set clrecibocat = Nothing
  76.         Next
  77.     Next
  78. End Function
  79.  
Segundo, revisa paso a paso el código o coloca interrupciones y ejecuta el código con F5 hasta que encuentres el problema.
 :comp: