Excepción no controlada

13/03/2006 - 16:12 por Ryuyi | Informe spam
Hola tngo un problema me sale este mensaje error
cuando me voy desplazando entre registros luego de una busqueda cuando llego
mas o menos en el registro 112
de repente me sale este error alguien sabe porq sucede o como puedo
solucionarlo gracias

Excepción no controlada del tipo 'System.InvalidOperationException' en
system.data.dll

Información adicional: Valor de tiempo de espera caducado. El período de
tiempo de espera expiró antes de obtener una conexión del grupo. Esto puede
suceder porque todas las conexiones de la agrupación estaban en uso y se
alcanzó el máximo tamaño del grupo.

Preguntas similare

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
13/03/2006 - 17:06 | Informe spam
¿Como estas haciendo? El error problablemente se deba a que abres las
conexiones y no las cierras y al llegar a cierta cantidad ya no se pueden
crear mas conexiones hasta que se cierre alguna.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
Respuesta Responder a este mensaje
#2 Jesús López
13/03/2006 - 17:36 | Informe spam
Es muy difícil saber qué está pasando sin tener el código delante. Quizá
alguien como Aramis Fuster o alguno de esos prodría hacerlo, pero nosotros
no ;-). Deberías darnos más información. De todas maneras tiene el aspecto
(pero no lo puedo saber) de que estás haciendo consultas a una base de datos
(¿Qué clase de base de datos es?) cada vez que te mueves a un registro.
Probablemente abras una conexión cada vez y no la cierras. O puede que
alguna consutla que hagas sea un poco pesada.

Proporciónanos todos el código relevante y muéstranos las consultas a la
base de datos que estás haciendo.

Saludos:

Jesús López
MVP


"Ryuyi" escribió en el mensaje
news:
Hola tngo un problema me sale este mensaje error
cuando me voy desplazando entre registros luego de una busqueda cuando
llego
mas o menos en el registro 112
de repente me sale este error alguien sabe porq sucede o como puedo
solucionarlo gracias

Excepción no controlada del tipo 'System.InvalidOperationException' en
system.data.dll

Información adicional: Valor de tiempo de espera caducado. El período de
tiempo de espera expiró antes de obtener una conexión del grupo. Esto
puede
suceder porque todas las conexiones de la agrupación estaban en uso y se
alcanzó el máximo tamaño del grupo.


Respuesta Responder a este mensaje
#3 Ryuyi
13/03/2006 - 17:52 | Informe spam
Mi clase para conectar
Protected Function Conectar() As SqlConnection

Dim strCon As String

Dim conTemp As System.Data.SqlClient.SqlConnection

strCon = "server=" + Servidor + ";" _

+ "database=" + DB + ";uid=" + Nombre() _

+ ";pwd=" + password() + ";"

conTemp = New SqlConnection(strCon)

conTemp.Open()

Return conTemp

End Function

Protected Function ComenzarTransaccion() As SqlTransaction

Dim conTemp As SqlConnection

conTemp = Conectar()

Return conTemp.BeginTransaction()

End Function



Mi clase contratos con sus metodo



Public Overridable Function BuscarCONTRATO() As Data.DataSet

Dim adaTemp As SqlDataAdapter

Dim dtsTemp As Data.DataSet

Dim prnCodigo As SqlParameter

Dim con As SqlConnection

Dim trnTemp As SqlTransaction

Dim cmdTemp As SqlCommand

Dim prnNroContrato As SqlParameter

prnNroContrato = New SqlParameter("@NroContrato", SqlDbType.VarChar, 30)

prnNroContrato.Value = strNroContrato

trnTemp = ComenzarTransaccion

cmdTemp = New SqlCommand("CONTRATO_Buscar_Nombre", trnTemp.Connection)

cmdTemp.CommandType = CommandType.StoredProcedure

cmdTemp.Parameters.Add(prnNroContrato)

cmdTemp.Transaction = trnTemp

Try

adaTemp = New SqlDataAdapter(cmdTemp)

dtsTemp = New Data.DataSet

adaTemp.Fill(dtsTemp, "CONTRATO")

Return dtsTemp

Catch ex As Exception

MsgBox("NO SE ENCONTRO NINGUN REGISTRO INTENTE NUEVAMENTE" + vbNewLine +
"DETALLE:" + vbNewLine + ex.Message.ToUpper, MsgBoxStyle.Critical,
"MENSAJE")

Finally

End Try

End Function





La inerfaz de usuario al llamar a la clase y su metodo

Private Sub Buscar()

Dim objContrato As New BRL.cls_Contractos

objContrato.NroContrato = UCase(TxtNroContrato.Text)

dtsContrato = objContrato.BuscarCONTRATO

Cantidad = dtsContrato.Tables("CONTRATO").Rows.Count

sbpCantidad.Text = "Cantidad : " + System.Convert.ToString(Cantidad)

Indice = 0

MostrarContrato()

End Sub

Private Sub MostrarContrato()

Dim a As Boolean

If dtsContrato.Tables("CONTRATO").Rows.Count > 0 Then

a = True

Else

a = False

End If

If a Then

lblRegistro.Text = "Registro : " + System.Convert.ToString(Indice + 1)

txtCodigo.Text = dtsContrato.Tables("CONTRATO").Rows(Indice)("Codigo")

TxtAdministrador.Text =
dtsContrato.Tables("CONTRATO").Rows(Indice)("Administrador")

TxtNroContrato.Text =
dtsContrato.Tables("CONTRATO").Rows(Indice)("NroContrato")

CmbTipoContrato.SelectedValue =
dtsContrato.Tables("CONTRATO").Rows(Indice)("Tipocontrato")

CmbRenovacion.SelectedItem =
dtsContrato.Tables("CONTRATO").Rows(Indice)("Renovacion")

TxtDescripcion.Text =
dtsContrato.Tables("CONTRATO").Rows(Indice)("Descripcion")

TxtProveedor.Text = dtsContrato.Tables("CONTRATO").Rows(Indice)("Proveedor")

TxtEmpresa.Text = dtsContrato.Tables("CONTRATO").Rows(Indice)("Empresa")

TxtPlazodeContrato.Text =
dtsContrato.Tables("CONTRATO").Rows(Indice)("PlazodeContrato")


CmbPais.SelectedValue = dtsContrato.Tables("CONTRATO").Rows(Indice)("Pais")

'***********************************************************

Dim CiudadData As New System.Data.DataSet

Dim objCiudad As New BRL.Cls_Combo_Contratos

objCiudad.Codigo = CmbPais.SelectedValue

CiudadData = objCiudad.COMBO_CIUDAD_Buscar

CmbCiudad.DataSource = CiudadData.Tables("CIUDAD")

CmbCiudad.DisplayMember = "Nombre"

CmbCiudad.ValueMember = "Codigo"

'--********************************************************

CmbCiudad.SelectedValue =
dtsContrato.Tables("CONTRATO").Rows(Indice)("Ciudad")

CmbGarantia.SelectedItem =
dtsContrato.Tables("CONTRATO").Rows(Indice)("Garantia")

TxtTipoGarantia.Text =
dtsContrato.Tables("CONTRATO").Rows(Indice)("TipoGarantia")

TxtMontoGarantia.Text =
dtsContrato.Tables("CONTRATO").Rows(Indice)("MontoGarantia")

TxtVencimientoG.Text =
dtsContrato.Tables("CONTRATO").Rows(Indice)("VencimientoG")

CmbMoneda.SelectedValue =
dtsContrato.Tables("CONTRATO").Rows(Indice)("Moneda")

TxtDolares.Text = dtsContrato.Tables("CONTRATO").Rows(Indice)("Dolares")

TxtBolivianos.Text =
dtsContrato.Tables("CONTRATO").Rows(Indice)("Bolivianos")

CmbTipoPago.SelectedItem =
dtsContrato.Tables("CONTRATO").Rows(Indice)("TipoPago")

TxtFechaInicio.Text =
dtsContrato.Tables("CONTRATO").Rows(Indice)("FechaInicio")

TxtFechaFinal.Text =
dtsContrato.Tables("CONTRATO").Rows(Indice)("FechaFinal")


TxtPagado.Text = dtsContrato.Tables("CONTRATO").Rows(Indice)("Pagado")

TxtFecha_Update.Text = dtsContrato.Tables("CONTRATO").Rows(Indice)("Fecha")

TxtUsuario.Text = dtsContrato.Tables("CONTRATO").Rows(Indice)("Usuario")

TxtEstado.Text = dtsContrato.Tables("CONTRATO").Rows(Indice)("Estado")

btnNuevo.Enabled = False

btnModificar.Enabled = True

btnEliminar.Enabled = True

BtnBuscar.Enabled = True

BtnAvanze_true()

If CmbGarantia.SelectedItem = "NO" Then

TxtTipoGarantia.Enabled = False

TxtVencimientoG.Enabled = False

TxtMontoGarantia.Enabled = False

End If

If CmbGarantia.SelectedItem = "SI" Then

TxtTipoGarantia.Enabled = True

TxtVencimientoG.Enabled = True

TxtMontoGarantia.Enabled = True

End If

Else

MessageBox.Show("No se encontro ningun registro en la Busqueda")

btnModificar.Enabled = False

btnEliminar.Enabled = False

BtnAvanze_false()

TxtTipoGarantia.Enabled = True

TxtVencimientoG.Enabled = True

TxtMontoGarantia.Enabled = True

TxtTipoGarantia.Text = ""

TxtVencimientoG.Text = CDate(#1/1/2000#)

TxtMontoGarantia.Text = ""

End If

End Sub



Alguna idea q estoy haciendo mal gracias
Respuesta Responder a este mensaje
#4 Jesús López
13/03/2006 - 18:14 | Informe spam
Ahora sí ;-). Se ve claro que abres conexines que nunca cierras y comienzas
transacciones que nunca terminas. Al final hay tantas conexiones abiertas
que se desborda el pool de conexiones y ya no se puede abrir ninguna
conexión más.

Public Overridable Function BuscarCONTRATO() As Data.DataSet
Dim adaTemp As SqlDataAdapter
Dim dtsTemp As Data.DataSet
Dim prnCodigo As SqlParameter
Dim con As SqlConnection
Dim trnTemp As SqlTransaction
Dim cmdTemp As SqlCommand
Dim prnNroContrato As SqlParameter
prnNroContrato = New SqlParameter("@NroContrato", SqlDbType.VarChar, 30)
prnNroContrato.Value = strNroContrato
trnTemp = ComenzarTransaccion

= código añadido == con = trnTemp.Connection
==
cmdTemp = New SqlCommand("CONTRATO_Buscar_Nombre", trnTemp.Connection)
cmdTemp.CommandType = CommandType.StoredProcedure
cmdTemp.Parameters.Add(prnNroContrato)
cmdTemp.Transaction = trnTemp
Try
adaTemp = New SqlDataAdapter(cmdTemp)
dtsTemp = New Data.DataSet
adaTemp.Fill(dtsTemp, "CONTRATO")´
código añadido == trnTemp.Commit()
= Return dtsTemp
Catch ex As Exception

= código añadido = trnTemp.Rollback()
= MsgBox("NO SE ENCONTRO NINGUN REGISTRO INTENTE NUEVAMENTE" +
vbNewLine +
"DETALLE:" + vbNewLine + ex.Message.ToUpper, MsgBoxStyle.Critical,
"MENSAJE")
Finally
= código añadido = If Not con Is Nothing AndAlso con.State = ConnectionState.Open Then
con.Close()
End If
= End Try

End Function


Saludos:

Jesús López
MVP



"Ryuyi" escribió en el mensaje
news:
Mi clase para conectar
Protected Function Conectar() As SqlConnection

Dim strCon As String

Dim conTemp As System.Data.SqlClient.SqlConnection

strCon = "server=" + Servidor + ";" _

+ "database=" + DB + ";uid=" + Nombre() _

+ ";pwd=" + password() + ";"

conTemp = New SqlConnection(strCon)

conTemp.Open()

Return conTemp

End Function

Protected Function ComenzarTransaccion() As SqlTransaction

Dim conTemp As SqlConnection

conTemp = Conectar()

Return conTemp.BeginTransaction()

End Function



Mi clase contratos con sus metodo



Public Overridable Function BuscarCONTRATO() As Data.DataSet

Dim adaTemp As SqlDataAdapter

Dim dtsTemp As Data.DataSet

Dim prnCodigo As SqlParameter

Dim con As SqlConnection

Dim trnTemp As SqlTransaction

Dim cmdTemp As SqlCommand

Dim prnNroContrato As SqlParameter

prnNroContrato = New SqlParameter("@NroContrato", SqlDbType.VarChar, 30)

prnNroContrato.Value = strNroContrato

trnTemp = ComenzarTransaccion

cmdTemp = New SqlCommand("CONTRATO_Buscar_Nombre", trnTemp.Connection)

cmdTemp.CommandType = CommandType.StoredProcedure

cmdTemp.Parameters.Add(prnNroContrato)

cmdTemp.Transaction = trnTemp

Try

adaTemp = New SqlDataAdapter(cmdTemp)

dtsTemp = New Data.DataSet

adaTemp.Fill(dtsTemp, "CONTRATO")

Return dtsTemp

Catch ex As Exception

MsgBox("NO SE ENCONTRO NINGUN REGISTRO INTENTE NUEVAMENTE" + vbNewLine +
"DETALLE:" + vbNewLine + ex.Message.ToUpper, MsgBoxStyle.Critical,
"MENSAJE")

Finally

End Try

End Function





La inerfaz de usuario al llamar a la clase y su metodo

Private Sub Buscar()

Dim objContrato As New BRL.cls_Contractos

objContrato.NroContrato = UCase(TxtNroContrato.Text)

dtsContrato = objContrato.BuscarCONTRATO

Cantidad = dtsContrato.Tables("CONTRATO").Rows.Count

sbpCantidad.Text = "Cantidad : " + System.Convert.ToString(Cantidad)

Indice = 0

MostrarContrato()

End Sub

Private Sub MostrarContrato()

Dim a As Boolean

If dtsContrato.Tables("CONTRATO").Rows.Count > 0 Then

a = True

Else

a = False

End If

If a Then

lblRegistro.Text = "Registro : " + System.Convert.ToString(Indice + 1)

txtCodigo.Text = dtsContrato.Tables("CONTRATO").Rows(Indice)("Codigo")

TxtAdministrador.Text =
dtsContrato.Tables("CONTRATO").Rows(Indice)("Administrador")

TxtNroContrato.Text =
dtsContrato.Tables("CONTRATO").Rows(Indice)("NroContrato")

CmbTipoContrato.SelectedValue =
dtsContrato.Tables("CONTRATO").Rows(Indice)("Tipocontrato")

CmbRenovacion.SelectedItem =
dtsContrato.Tables("CONTRATO").Rows(Indice)("Renovacion")

TxtDescripcion.Text =
dtsContrato.Tables("CONTRATO").Rows(Indice)("Descripcion")

TxtProveedor.Text =
dtsContrato.Tables("CONTRATO").Rows(Indice)("Proveedor")

TxtEmpresa.Text = dtsContrato.Tables("CONTRATO").Rows(Indice)("Empresa")

TxtPlazodeContrato.Text =
dtsContrato.Tables("CONTRATO").Rows(Indice)("PlazodeContrato")


CmbPais.SelectedValue =
dtsContrato.Tables("CONTRATO").Rows(Indice)("Pais")

'***********************************************************

Dim CiudadData As New System.Data.DataSet

Dim objCiudad As New BRL.Cls_Combo_Contratos

objCiudad.Codigo = CmbPais.SelectedValue

CiudadData = objCiudad.COMBO_CIUDAD_Buscar

CmbCiudad.DataSource = CiudadData.Tables("CIUDAD")

CmbCiudad.DisplayMember = "Nombre"

CmbCiudad.ValueMember = "Codigo"

'--********************************************************

CmbCiudad.SelectedValue =
dtsContrato.Tables("CONTRATO").Rows(Indice)("Ciudad")

CmbGarantia.SelectedItem =
dtsContrato.Tables("CONTRATO").Rows(Indice)("Garantia")

TxtTipoGarantia.Text =
dtsContrato.Tables("CONTRATO").Rows(Indice)("TipoGarantia")

TxtMontoGarantia.Text =
dtsContrato.Tables("CONTRATO").Rows(Indice)("MontoGarantia")

TxtVencimientoG.Text =
dtsContrato.Tables("CONTRATO").Rows(Indice)("VencimientoG")

CmbMoneda.SelectedValue =
dtsContrato.Tables("CONTRATO").Rows(Indice)("Moneda")

TxtDolares.Text = dtsContrato.Tables("CONTRATO").Rows(Indice)("Dolares")

TxtBolivianos.Text =
dtsContrato.Tables("CONTRATO").Rows(Indice)("Bolivianos")

CmbTipoPago.SelectedItem =
dtsContrato.Tables("CONTRATO").Rows(Indice)("TipoPago")

TxtFechaInicio.Text =
dtsContrato.Tables("CONTRATO").Rows(Indice)("FechaInicio")

TxtFechaFinal.Text =
dtsContrato.Tables("CONTRATO").Rows(Indice)("FechaFinal")


TxtPagado.Text = dtsContrato.Tables("CONTRATO").Rows(Indice)("Pagado")

TxtFecha_Update.Text =
dtsContrato.Tables("CONTRATO").Rows(Indice)("Fecha")

TxtUsuario.Text = dtsContrato.Tables("CONTRATO").Rows(Indice)("Usuario")

TxtEstado.Text = dtsContrato.Tables("CONTRATO").Rows(Indice)("Estado")

btnNuevo.Enabled = False

btnModificar.Enabled = True

btnEliminar.Enabled = True

BtnBuscar.Enabled = True

BtnAvanze_true()

If CmbGarantia.SelectedItem = "NO" Then

TxtTipoGarantia.Enabled = False

TxtVencimientoG.Enabled = False

TxtMontoGarantia.Enabled = False

End If

If CmbGarantia.SelectedItem = "SI" Then

TxtTipoGarantia.Enabled = True

TxtVencimientoG.Enabled = True

TxtMontoGarantia.Enabled = True

End If

Else

MessageBox.Show("No se encontro ningun registro en la Busqueda")

btnModificar.Enabled = False

btnEliminar.Enabled = False

BtnAvanze_false()

TxtTipoGarantia.Enabled = True

TxtVencimientoG.Enabled = True

TxtMontoGarantia.Enabled = True

TxtTipoGarantia.Text = ""

TxtVencimientoG.Text = CDate(#1/1/2000#)

TxtMontoGarantia.Text = ""

End If

End Sub



Alguna idea q estoy haciendo mal gracias


Respuesta Responder a este mensaje
#5 Eduardo A. Morcillo [MS MVP VB]
13/03/2006 - 18:18 | Informe spam
El problema parece ser que no cierras la conexion luego del Fill. Fill tiene
dos comportamientos distintos dependiendo si la conexion esta abierta o no
al momento de ejecutarse. Si la conexion esta cerrada Fill abre la conexion,
trae lo datos y luego la cierra, pero si la conexion ya esta abierta Fill no
la cierra. Tu caso es el ultimo lo que significa que debes cerrar la
conexion explicitamente, y ademas no finalizas la transaccion (ni con commit
ni con rollback).

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida