ONDE ESTA O ERRO

JAIR2002 16/03/2011 21:45:24
#368201
Pessoal,

Estou desenvolvendo um sistem em rede e estou usuado o codigo abaixo para informar quando um usuário entra no sistema

Private Sub entrando_Timer()
Dim help As Integer
Dim help2 As Integer
Dim sql As String
Dim X As Integer
Conecta
Set rs = New ADODB.Recordset

help = [Ô]0[Ô]

sql = [Ô]SELECT Estado, Usuario FROM Usuarios[Ô]
sql = sql & [Ô] WHERE Estado=[ô][Ô] & help & [Ô][ô]AND NOT Usuario=[ô][Ô] & VNomeCompletoUsuario & [Ô][ô][Ô]


With rs

.Open sql, cnn


If .BOF = False And .EOF = False Then
For X = 1 To 3
Dim CARATA As clsmsg
Set CARATA = New clsmsg
CARATA.ShowMessage rs([Ô]Usuario[Ô]) & [Ô] acabou de entrar![Ô], &HFFFF&, &H8000000C, , 30, 7000, 20, WP_LowerRight, , , , [Ô]Arial Black[Ô], , 12

Next X

help2 = [Ô]1[Ô]
cnn.Execute ([Ô]update Usuarios set estado=[ô][Ô] & help2 & [Ô][ô] where estado=[ô][Ô] & help & [Ô][ô][Ô])
End If

End With

End Sub

O problema é que quando o cliente acessar no servidor estar dando seguinte mensagem [Ô]CONEXÃO NÃO PODE SER USUADA PARA REALIZAR ESTA OPERAÇÃO. ELA ESTAR FECHADA OU é INVALIDA NESTE CONTEXTO.

Não consigo corrigir o erro. O erro só ocorre no servidor
O codigo encontra-se no time.

alguém sabe como corrir

grato
LUIZCOMINO 16/03/2011 23:10:58
#368209
amigo esse erro é pq a conexao está fechada onde você está abrindo a conexao com o banco?
HIDDEN 16/03/2011 23:18:56
#368210
Você está finalizando o Timer? Ele deve ser finalizado logo no início, pois no segundo Loop o erro deverá acontecer na linha .Open sql, cnn

Private Sub entrando_Timer()
entrando_Timer.Enabled=False

(restante do código)

End Sub
JAIR2002 17/03/2011 13:20:24
#368270
Hidden,

Obrigado cara pelo apoio é exatamente isso no segundo loop estar ocorrendo o erro na linha que você mencionou só que quando eu coloco o codigo: entrando.enabled=false no inicio como você disse o sistema não dar mais o erro, porém, não mostra mais quando um usuário acessa o sistema.

teria como você postar o codigo de como eu deve fazer.
HIDDEN 17/03/2011 14:18:50
#368278
Resposta escolhida
Ah, entendi. O timer tem que ficar rodando constantemente, aguardando o login.

Tente fazer assim

With rs

.Open sql, cnn

If .BOF = False And .EOF = False Then
For X = 1 To 3
Dim CARATA As clsmsg
Set CARATA = New clsmsg
CARATA.ShowMessage rs([Ô]Usuario[Ô]) & [Ô] acabou de entrar![Ô], &HFFFF&, &H8000000C, , 30, 7000, 20, WP_LowerRight, , , , [Ô]Arial Black[Ô], , 12

Next X

help2 = [Ô]1[Ô]
cnn.Execute ([Ô]update Usuarios set estado=[ô][Ô] & help2 & [Ô][ô] where estado=[ô][Ô] & help & [Ô][ô][Ô])

End If

.close

End With


Você deve fechar o Recordset antes de tentar abri-lo novamente. Qual o valor de Interval no timer? Seria bom você colocar algo em torno de 5 segundos (Interval=5000), para que seu sistema não fique lento.
JAIR2002 18/03/2011 10:37:02
#368411
Hidde,

Obrigado mais uma vez pela atenção,

Uso o time 6 segundos, já havia colocado o close como você mencionou, mas o erro continua o engraçado é que so ocorre onde no computado onde o banco esta instalado, nos clientes não tem esse erro de conexão.

Você matou a xarada realmente o time tem que fica rodando aguardando algum logim.

Só mais uma coisa vejo que você é de Goiania tenho parentes ai os quais visito frequentemente e também tenho ido ai a trabalho, gostaria de manter contato com você a fim de lhe mostrar um sitema que estou desenvolvendo quem sabe você possa fazer alguns ajustes que nele, pelo que vejo tem bastante experiencia em programação. Seus serviços serão remunerados com preço justo.

Se quizer manter contato jaircarvalhosilva@bol.com.br
HIDDEN 18/03/2011 12:54:33
#368439
Podemos conversar sim.

Em relação ao seu código, tente uma última cartada: ao invés de fechar no bloco de código, chame um segundo timer para fazer isso. Por exemplo:

Private Sub timerRecordset_Timer()
timerRecordset.Enabled = False
Rs.Close
End Sub

Aí você substiuiria o .Close por timerRecordset.Enabled=True.

é importante definir o Timer com Enabled=False (só será ativado quando você quiser fechar) e com Interval=10.

Se isso não funcionar, será preciso analisar mais detalhes do seu código.
HIDDEN 18/03/2011 12:56:42
#368440
Ps.: Estou supondo que seu objeto Rs está declarado em um módulo.
JAIR2002 18/03/2011 15:39:58
#368451
Hidden,

Mais uma vez muito obrigado vou te os credito da grande colaboração seguir a sua dica e conseguir fazer funcionar ainda tem momento que dar erro mas estou eliminando.

Grato

Jair
Tópico encerrado , respostas não são mais permitidas