CONEXAO LENTA

USUARIO.EXCLUIDOS 06/01/2005 21:28:17
#59100
Beleza Galera????

Postei um tópico que perguntava qual era o problema da minha aplicação já que a mesma derepente ficara muito lenta. pessei que fosse componentes demais ou algo parecido. só que percebi que é a conexão com o Mysql que ficou quase parando, leva serca de 20 segundos para realizar uma conexao com o mysql..
tipo um simples comando de abrir o BD.não sei nem tenho nem ideia do que possa estar acontecendo. Por favor me ajudem....
Só para ter serteza de que não era a minha aplicação, fiz um pequeno exemplo de cadastro de um cliente usando o mysq, e ocorreu o mesmo problema; leva serca de 15 segundos para retornar o sucesso da inclussão.
Nota: o Sistema operacional fica travado enquanto não é retornado qualquer que seja o comando de conexão com o BD.

Valeu.........

ANDRERP 07/01/2005 08:25:27
#59134
E aí EDILSON, tudo bem ?

Bom, nesse caso receio que seu SO esteja com problemas, se ainda não fez, Execute a limpeza de arquivos temporários, passe o Scandisk em modo completo (é aquele demorado mesmo) no seu HD, depois passe o desfragmentador. Geralmente isso funciona. Tente aí, perde um pouco de tempo, até mesmo sua máquina ficará melhor depois disso.
LCSD 07/01/2005 08:53:36
#59138
Edilson

Além do problema de manutenção no SO, que pode demandar atraso no acesso a arvquivos, o que compromente sensivelmente um Banco de Dados, além da Modelagem de Dados errà'nea, é a quantidade de Conexões simultà¢neas.

Por favor, coloque aqui como você DECLARA E Acessa o BD, tanto conexões quanto RecordSets e onde estão definidos, também o tipo de RecordSet influi e muito.
[s95]
USUARIO.EXCLUIDOS 07/01/2005 09:56:42
#59161
beleleza galera, mais este problema so ocorre com uma conexão mysql, quando ultilizo com o access 2000 fica tudo beleza...

de qualquer forma faço a conexão da seguinte forma:

"em um módulo"
"na guia general"
Public db As New ADODB.Connection
Public rsTabela As New ADODB.Recordset


Public Function conectar(usuario As TextBox, senha As TextBox) As Boolean


On Error GoTo openBD
strconn = "DRIVER={MySQL ODBC 3.51 Driver};"
strconn = strconn & "SERVER=localhost;"
strconn = strconn & "DATABASE=manager;"
strconn = strconn & "UID=" & usuario & ";PWD=" & senha.Text & ";OPTION=3"

db.ConnectionString = strconn
db.CursorLocation = adUseClient
db.Open
conectar = True
Exit Function
openBD:
If (Err.Number <> 0) Then
MsgBox "ERRO : " & Err.Number & Err.Description & vbInformation
conectar = False
End If

End Function

"quando quero ir para um determinado form mando inicialmente abrir o BD com uma chamada a função,que tambem fica em um modulo, da seguinte forma:"

Public Function openConexao()

On Error GoTo AbreConexao

db.Open
Exit Function
AbreConexao:
If (Err.Number - vbObjectError = -245755) Then
MsgBox "ERRO 2: " & Err.Number - vbObjectError & Err.Description & " Erro ao tentar abrir uma conexão. ", vbCritical
End If

End Function
LCSD 07/01/2005 10:02:53
#59162
Edilson

Esta forma não deve ser utilizada no VB6

Public db As New ADODB.Connection 
Public rsTabela As New ADODB.Recordset


Altera para

Public db As ADODB.Connection
Public rsTabela As ADODB.Recordset


e também inclua:

Public Function conectar(usuario As TextBox, senha As TextBox) As Boolean

Set db = New ADODB.Connection
Set rsTabela = New ADODB.RecordSet



[txt-color=#ff0000]**** Você não informou COMO os RecordSets estão sendo abertos [/txt-color]

Não utilize NEW quando declarar, porque o VB não consegue destruir e a conexão fica aberta, ele perde a referência mas o ADO não fecha, isto sobrecarrega o mesmo e deixa lente, o mesmo para RecordSets.

Aliás, RecordSets deveriam ser abertos localmente e fechados!
[s50]
USUARIO.EXCLUIDOS 08/01/2005 11:15:31
#59390
Na verdade eu so abria a conexão a cada form que eu entrasse com uma chamada a seguinte função dentro do evento load do form em questão,nunca abria explicitamente um recordset, da seguinte forma:

Public Function openConexao()

On Error GoTo AbreConexao

db.Open
Exit Function
AbreConexao:
If (Err.Number - vbObjectError = -245755) Then
MsgBox "ERRO 2: " & Err.Number - vbObjectError & Err.Description & " Erro ao tentar abrir uma conexão. ", vbCritical
End If

End Function
"em seguida fazia uma consulta do tipo :
Set rsTabela = db.Execute("select * from usuario where usuLogin='" & txtUsuario & "' ")
"quando saia deste form chamava a função que fechava a conexão:

Public Function closeConexao()

On Error GoTo FechaConexao
db.Close
Exit Function
FechaConexao: If (Err.Number <> 0) Then
MsgBox "ERRO 3: " & Err.Number - vbObjectError & Err.Description & " Erro ao tentar encerrrar uma conexão.", vbCritical
End If
Exit Function
End Function
USUARIO.EXCLUIDOS 09/01/2005 12:47:01
#59562
Galera ainda precisso de respostas....
Tópico encerrado , respostas não são mais permitidas