Extraño comportamiento For-nex / Try-Catch

12/08/2006 - 22:14 por mmorenoc | Informe spam
No logro comprender el comportamiento de este procedimiento.

Lo que intento hacer es rellenar una tabla con una serie de registros,
y en el caso de que se produzca un excepción porque se intenta
insertar un registro duplicado en una tabla con clave, el bloque
Try-Cach permita que le bucle For-Next sigua ejecutandose ,y en los
siguientes pasos intente insertar los siguientes registros.

Pues bien, funciona, pero sólo hasta que se produce la primera
excepcion y salta al Catch, porque a partir de entonces vuelve al Catch
todas las veces hasta el final del bucle, aunque en los siguientes
pasos del mismo, los registros que se intentan insertar no existan en
la tabla.

Por más vueltas que le doy no encuentro el problema.
Gracias de antemano.

El procedimiento en cuestión.

Public Sub AsignacionContadoresInicialesEmpresa(ByVal PEmpresa As
Integer)

Dim ContadorDocumentoDS As
WindowsApplication1.ContadorDocumentoDS
Dim Contador_DocumentoTableAdapter As
WindowsApplication1.ContadorDocumentoDSTableAdapters.Contador_DocumentoTableAdapter
Dim Contador_DocumentoBindingSource As
System.Windows.Forms.BindingSource
Dim ValorFila(4) As Object
Dim N As Byte

ContadorDocumentoDS = New
WindowsApplication1.ContadorDocumentoDS
Contador_DocumentoTableAdapter = New
WindowsApplication1.ContadorDocumentoDSTableAdapters.Contador_DocumentoTableAdapter
Contador_DocumentoBindingSource = New
System.Windows.Forms.BindingSource

For N = 0 To 100
Select Case N
Case 0, 10, 20, 30, 50, 60, 70, 80

Try
ValorFila(0) = PEmpresa
ValorFila(1) = N
ValorFila(2) = 0
ValorFila(3) = 1
ValorFila(4) = "SIN SERIE"

Contador_DocumentoBindingSource.AddNew()

ContadorDocumentoDS.Tables("Contador_Documento").Rows.Add(ValorFila)

Contador_DocumentoTableAdapter.Update(ContadorDocumentoDS.Contador_Documento)
Catch ex As System.Exception

System.Windows.Forms.MessageBox.Show(ex.Message)
End Try

End Select
Next N

End Sub

Miguel Moreno
 

Leer las respuestas

#1 Eduardo Alvarado Meza
13/08/2006 - 18:25 | Informe spam
No lo puedo probar en estos momentos, pero me aprece que lo siguientes
errores te han de surgir en el Addnew, porque ya tienes un addnew abierto
que no se completo, asi que en el catch deberia haber algun CancelEdit.

Por ultimo, porque un addnew al bindingsource si estas haciendo un rows.add
a la tabla directamente? Si borras esa linea addnew talves se resuelva... a
como te digo esa es mi primera impresión.

Preguntas similares