Retroceder   Foros del Web > Programación para sitios web > .NET

Respuesta
 
Herramientas Desplegado
Antiguo 23-mar-2005, 01:36   #1 (permalink)
jordan está en el buen camino
 
Fecha de Ingreso: noviembre-2002
Mensajes: 246
Excepción no controlada

Hola a todos,

al ejecutar este proceso,

Sub actualizamaquina()
Dim p As New DAT.Funciones
Dim pp As New DAT.Funciones
sentencia = "SELECT * FROM EPLT INNER JOIN AART ON EPLT.CODREF = AART.CODREF WHERE (EPLT.CODMAQ =" & Me.maqori.Text & ") AND (AART.FAMILI = '" & Me.fami.Text & "')"
mireader = pp.retornaregistro(mico, sentencia)
While mireader.Read
refer = Mid(mireader("codref"), 4, 3)
Dim lon As Int32 = refer
If lon >= min And lon <= max Then
Me.proceso.Text = mireader("codref")
Dim r As String = mireader("codref")
Dim l As Int16 = mireader("numlin")
sentencia = "update eplt set codmaq=" & Me.maqnue.Text & " where codref='" & r & "' and numlin=" & l & ""
mireader2 = p.retornaregistro(mico2, sentencia)
mireader2.Close()
End If
End While
mireader.Close()
End Sub


me sale el siguiente error, (no se produce la primera vez, sale despues de haberse ejecutado varias veces el while).

Excepción no controlada del tipo 'System.Data.SqlClient.SqlException' en system.data.dll

El programa para en la funcion retornaregistro. (lrea = Lcom.ExecuteReader, que se llama desde mireader2 = p.retornaregistro(mico2, sentencia)).

Public Function retornaregistro(ByVal conf As BLL.Datos, ByVal sql As String) As SqlClient.SqlDataReader
Dim Lcom As New System.Data.SqlClient.SqlCommand(sql, conf.conex)
Dim lrea As SqlClient.SqlDataReader
lrea = Lcom.ExecuteReader
Return lrea
End Function


No se si queda claro, pero no veo que es lo que me está pasando.
jordan está desconectado   Responder Citando
Antiguo 23-mar-2005, 03:01   #2 (permalink)
Jose_minglein2 tiene algunos puntos positivos de karma
 
Avatar de Jose_minglein2
 
Fecha de Ingreso: noviembre-2004
Mensajes: 2.334
donde declaras mireader2???
de que tipo es???
todos los valores que les pasas a las consultas tienen valores correctos???

has probado a ejectutar paso a paso??
Jose_minglein2 está desconectado   Responder Citando
Antiguo 23-mar-2005, 04:16   #3 (permalink)
jordan está en el buen camino
 
Fecha de Ingreso: noviembre-2002
Mensajes: 246
Dim mireader2 As SqlClient.SqlDataReader

Lo he ejecutado paso a paso y en principio, funciona bien, al cabo de un rato, da el error, si imaginemos hay 500 registros, pues actualiza 20 y luego da el error.

En el registro que da el error, todo es correcto, la sql está bien.


Es lo que me extraña.
jordan está desconectado   Responder Citando
Antiguo 23-mar-2005, 05:00   #4 (permalink)
Jose_minglein2 tiene algunos puntos positivos de karma
 
Avatar de Jose_minglein2
 
Fecha de Ingreso: noviembre-2004
Mensajes: 2.334
Cierra, la conexión cada vez que hagas una actualización y luego vuelve a abrirla, quizá estés abriendo una conexión para cada una de las actualizaciones y de el error por tener demasiadas conexiones abiertas simultaneamente.

En el registro, que te da el error Me.maqnue.Text, r y l tienen algún valor??????
bueno, sólo r y l, por maqnue.text siempre será el mismo supongo.
Jose_minglein2 está desconectado   Responder Citando
Antiguo 23-mar-2005, 06:21   #5 (permalink)
jordan está en el buen camino
 
Fecha de Ingreso: noviembre-2002
Mensajes: 246
r, l, tienen valor.

Dentro del while he puesto:

Dim mico2 As BLL.Datos = New BLL.Datos
Dim mireader2 As SqlClient.SqlDataReader
re = mireader("codref")
li = mireader("numlin")
ve = mireader("versio")
sentencia = "update eplt set codmaq=" & Me.maqnue.Text & " where codref='" & re & "' and numlin=" & li & " and versio=" & ve & ""
mireader2 = p.retornaregistro(mico2, sentencia)
mireader2.Close()
mico2.conex.Close()


Cada vez cierro la conexion y la abro.

Pasa lo mismo. Me hace 10 o 15 registros y me da el error.

Puede ser por algun porblema de tiempo, o algo asi?

Última edición por jordan; 23-mar-2005 a las 06:22.
jordan está desconectado   Responder Citando
Antiguo 23-mar-2005, 07:51   #6 (permalink)
Moderador
RootK llegará a ser famoso muy prontoRootK llegará a ser famoso muy pronto
 
Avatar de RootK
 
Fecha de Ingreso: noviembre-2002
Ubicación: México D.F
Mensajes: 7.542
Enviar un mensaje por MSN a RootK
Te recomiendo que cuando hagas update, delete, insert uses el executenonquery, ya que no hay necesidad de usar un datareader.

Te podría quedar así:

Cita:
...
...
While mireader.Read
refer = Mid(mireader("codref"), 4, 3)
Dim lon As Int32 = refer
If lon >= min And lon <= max Then
Me.proceso.Text = mireader("codref")
Dim r As String = mireader("codref")
Dim l As Int16 = mireader("numlin")
sentencia = "update eplt set codmaq=" & Me.maqnue.Text & " where codref='" & r & "' and numlin=" & l & ""
p.retornaregistro(mico2, sentencia)
mireader2.Close()
End If
End While
...
...
y en tu método:

Cita:
Public Sub retornaregistro(ByVal conf As BLL.Datos, ByVal sql As String)
Dim Lcom As New System.Data.SqlClient.SqlCommand(sql, conf.conex)
conf.conex.open()
Lcom.ExecuteNonQuery()
conf.conex.close()
End Sub
Pruebalo y cualquier cosa por aqui andamos...
__________________
Nadie roba nada ya que en la vida todo se paga . . .
RootK está desconectado   Responder Citando
Antiguo 23-mar-2005, 09:28   #7 (permalink)
jordan está en el buen camino
 
Fecha de Ingreso: noviembre-2002
Mensajes: 246
He provado, y sigue pasando lo mismo,

Puede ser, que al hacer el select de la tabla y luego haga el update de la misma tabla y aunque tenga dos conexiones diferentes, haya algun bloqueo que me provoque el error?

No entiendo que haga unos cuantos y luego me de el error.
jordan está desconectado   Responder Citando
Antiguo 23-mar-2005, 10:02   #8 (permalink)
Jose_minglein2 tiene algunos puntos positivos de karma
 
Avatar de Jose_minglein2
 
Fecha de Ingreso: noviembre-2004
Mensajes: 2.334
Eso es lo raro!!!!!!!!!!!!!!
Porque si existiese bloqueo, te bloquearía todos, no???

Que gestor de B.D. estas usando???Access???

Yo voy a intentar hacer algo parecido con el mío haber que tal
Jose_minglein2 está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 05:01.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

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