Ayudame con esto David. Tiempo de Espera en SQL

Tengo una aplicación en VB6 el cual trabaja con un base de datos en SQL. Migre mi Data de Access a SQL. Todo OK.
Pero cada vez que inicio la aplicación a veces en la primera consulta que hace la aplicación me sale el mensaje que el tiempo de espera ha finalizado y se demora mucho para esta primera consulta consulta; una vez que doy ENTER para cerrar el mensaje de advertencia, intento realizar de nuevo la consulta y carga de lo más normal y rapido.
Amigo Experto. ¿Qué puedo hacer para solucionar esto?
No quiero que demore.
Quiero que Cargue rapido.
No quiero que me salga el aviso de tiempo de espera.
Que Hago.

1 respuesta

Respuesta
1
Te comento que siempre va a esperar hasta que responda el servidor de datos o termine la sue enviaste, de ahí el tiempo de espera, en ocasiones como la que comentas, aumento el tieer o a 1200 y con eso funciona de maravilla y te hablo de un servidor robusto de datos y uio lenta así como un montón de usuarios de forma concurrente.
Mira Sale el siguiente mensaje al intentar conectarme con el analizador de consultas de SQdor y a la base de datos con un usuario x.
ODBC mensaje 0 nivel 16 estado 1
Microsoft river termino el tiempo de espera.
A que se debe. O como lo solución
Lo primero que espere hasta que responda, para lo siguiente primero se trae el error y después puedes detectar que es lo que ocurre con la propiedad error de la conexión.
David. Me dices que desde el VB puedo cambiar el tiempo de espera, como hago eso, ¿en qué parte y en que control y como? Disculpa pero dame detalle, se que estas muy ocupado pero tenme paciencia pr favor.
Gracias.
Y si me colocas el código completo y la estructura de las tablas y la consulta completa pa puede pasar, el número de registros por tabla, los indices de las mismas.
Si estas utilizando la conexión por medio de ADO, el objeto ADO te permite cambiar el tiempo de espera, si usas DAO ahí no se.
Una Pequeña Aclaración:
Que significa el que ponga el tiempo de Espera = a 0 ? es decir: ado.connectiontimeout = 0
¿Es bueno hacer esto?
¿O qué me recomiendas?
¿Existe algún procedimiento en código que pueda controlar esto?
Es decir, si coloco el ado.connectiontimeout = 5
significa que espera 5 segundo en intentar conectarse con la base de datos y si no pasa nada enviara un error.
Pero si yo quisiera evitar el mensaje de error y que automáticamente pase a ejecutar otra vez la consulta hasta que se ejecute dicha consulta.
¿Cómo hago eso?
Ayudame.
Hola David,
Tu me dices en tu respuesta: "Lo primero que espere hasta que responda"
Coo en VB?
Ya que no quiero que espere, lo que quiero es que responda.
Checa los indices de las tablas de sql server, tal vez por ahí tengas algo que no esta o esta mal hecho, checa la consulta y valida las sentencias de where para que veas que puede estar pasando.
A la vez, en visual basic puedes cambiar el tiempo de espera de la conexión.
Mira esto es un problemilla en segundo plano al que tengo haber si me das una mano. Como pupara que en la cadena de conexión a la data, pueda coger el usuario y la contraseña ingrey intentando esto y no me resulta.
rs.Open "select * from usuarios where nombre = '.List(cbuser.ListIndex) & "' and pass = '" & LCase(txtPassword.Text) & "' ", db, adOpenKeykOptimistic, adCmdText
If rs.RecordCount = 1 Then
LoginSucceeded = True
UID As String = Trim(rs.Fields(0))
Const PWD As String = Trim(rs.Fields(1))
Trim(rs.Fields(0))
strCnn = "Provider=SQLOLEDB; " & _
"Initial Cat iaOK; " & _
"uid=UID;pwd=PWD;Data Source=SERVIDOR; "
MsgBox strCnns.Close
db.Close
Unload Me
Else
MsgBox "La contraseña no eVuelva a intentarlo", , "Inicio de sesión"
txtPassword.SetFocus
SendKeysEnd}"
rs.Close
End If
No resulto el cambio propuesto David.
Haber si lo chequeas con calma.
Continuamos mañana, haber si se compone este sitio.
David cuando pongo lo que me dices:
Global
Me sale un error me dice VB
Que no se pea palabra.
Sigue quedando mal lo que se escribe.
David Enciso
' esto va en el principio de tu forma.
Option explicit
Global PWD
global UID As String
Es lo primero, pero veo que lo que se esta grabando queda mal na de todoexpertos.
Haber con lo siguiente:
' esto va en el principio de tu forma.
Option explicit
Globalring
global UID As String
' esto donde lo estas usando
rs.Open "select * from usuarnombre = ' & cbuser.ListIndex & "' and pass = '" & LCase(txtPassword.Text) & "' ", db, adOimistic, adCmdText
If rs.RecordCount = 1 Then
LoginSucceeded = True
UID = Trim(0))
PWD = Trim(rs.Fields(1))
strCnn = "Provider=SQLOLEDB; " & _
al Cat iaOK; " & _
"uid=UID;pwd=PWD;Data Source=SERVIDOR; "
MsgBox strCClose
db.Close
Unload Me
Else
MsgBox "La contraseña no eVuelva a intentaricio de sesión"
txtPassword.SetFocus
rs.Close
End If
Hola David encontré la Solución.
Seria de la siguiente manera:
strCnn = "Provider=SQL;;& cajaTExt ";pwd=" & CajaTExto2.Value& ";.....server=SERVIDOR"
Concatenación. Sino quencipio lo estaba haciendo mal. ponia algo como esto: '" & xxxx & "'
y solo era " & xxxxxxsto.
Eres un gran experto amigo. Muchas gracias. Te estaré molestando con unas pregunti espero me sigas apoyando como lo has hecho hasta ahora. Eres el mejor.,

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas