DUVIDAS BESTA SOBRE A HORA DE FECHAR A TABELA

WEBIER 01/12/2010 22:29:24
#358606
só querendo maximizar a velocidade ao acesso de dados no meu bd access em sistema multi-terminais usando DAO.

exemplo 01:

Abro uma tabela:
Private Sub Calcular_Valor_Geral()
Call ABRIR_BD_SEM_DATA1
SQL = [Ô]SELECT SUM(TOTAL) AS TOTAIS FROM PEDIDOS_ITENS WHERE COD_PEDIDO = [Ô] & txtCodPedido.Text & [Ô][Ô]
Set RS = BD.OpenRecordset(SQL)

If IsNull(RS.Fields!TOTAIS) = True Then
txtTotalGeral.Text = Format(0, [Ô]##,##0.00[Ô])
Else
If RS_Conf!ARREDONDAR_TOTAL = True Then
txtTotalGeral.Text = Format(ArredondaCentavos(RS.Fields!TOTAIS), [Ô]##,##0.00[Ô])
Else
txtTotalGeral.Text = Format(RS.Fields!TOTAIS, [Ô]##,##0.00[Ô])
End If
End If
End Sub


duvida:
-Devo baixo do ultimo END IF colocar um RS.CLOSE ou não ?
-Devo tb fechar o banco de dados BD.CLOSE ou não?
-Isso iria melhor a perfomace de acesso ao banco de dados?
-Devo colocar somente no FORM_UNLOAD o RS.CLOSE e o BD.CLOSE?
XXXANGELSXXX 02/12/2010 08:19:01
#358609
Resposta escolhida
Webier, é isso mesmo, no seu caso ai.. coloque no evento form_unload o rs.close e bd.close, eu colocaria o rs.close e set rs=nothing apos o preenchimento dos dados, mas isso, nao tras lentidão é apenas para [Ô]proteção[Ô] dos dados.
WEBIER 02/12/2010 10:10:46
#358614
tipo assim,

no servidor consigo fazer todas as operações na velocidade normal.

mais no terminal fica aquela lentidão.

uso uma rede de cabo com 02 computadores (servidor e terminal)... ligados ao um hub...

Já pensei em fazer um cabo direto e ligar os 2 pcs sem o hub, mas nao sei se iria adiantar alguma coisa.

Alguem já enfrentou essa lentião em BD Access usando DAO com 2 pcs apenas ?

obs:
-os pcs nao tem nenhum anti-virus e nem nada, somente o windows xp recem instalado e o meu programa
-o firewall do windows tá desativado
-compartilhei a pasta do meu programa com controle total
-o programa que fica no terminal busca o banco de dados a unidade mapeada da pasta que compartilhei no servidor, assim:


[ô]dentro do modulo
Global AreaTrabalho As Workspace

[ô]rotina para encontrar o bd
Sub ABRIR_BD_SEM_DATA1()
Set AreaTrabalho = DBEngine.Workspaces(0)
Set BD = AreaTrabalho.OpenDatabase([Ô]Z:\Cyberbase.mdb[Ô], False, False)
End Sub
XXXANGELSXXX 02/12/2010 10:30:34
#358615
veja so, a forma de conexão esta ok, mesmo voce colocando o caminho direto, eu passaria o parametro para um arquivo ini, para depois receber a conexao, mas enfim, se vc tiver utilizando mapeamento de rede igual esta ai em cima vai ser um pouco mais lento mesmo, voce passando o parametro da conexao direta.. como por exemplo \\servidor\c:\banco.mdb pode ser mais rapido, outra coisa que vc tem que ter em mente, é o tamanho do banco de dados, depois de um certo tamanho o sistema fica lento mesmo pela rede, ai vc tem que começar a pensar em reparar/compactar o banco, foi por isso que migrei para mysql e ADO, e vou ser sincero para vc.. nao arrependi nada, performace 100%
PAVILLION 02/12/2010 11:11:16
#358622
Webier...

O problema de desempenho não estaria relacionado ao Hub e a transferência contínua de dados?
Dá uma olhada no que quero dizer..
Hub, Switch e Roteadores
Eu acho que você deveria experimentar o Swich...Já tive problemas de desempenho de um aplicativo
na rede devido a utilização de Hubs..
FEDERHEN 02/12/2010 11:42:56
#358624
Uma dica de performace é fazer select com a relação de campos que vai usar e nunca [Ô]select com asterisco[Ô] porque o [Ô]select * [Ô] provoca o trafico de dados desnecessarios na rede, e em consequencia, gera lentidão.
WEBIER 02/12/2010 13:31:26
#358635
Otima explicação, ANGEL

Aproveitando a questão:

abrir o banco de dados assim:
[ô]rotina para encontrar o bd
Sub ABRIR_BD_SEM_DATA1()
Set AreaTrabalho = DBEngine.Workspaces(0)
Set BD = AreaTrabalho.OpenDatabase([Ô]Z:\Cyberbase.mdb[Ô], False, False)
End Sub


é mais lento que abrir assim:
[ô]rotina para encontrar o bd
Sub ABRIR_BD_SEM_DATA1()
Set AreaTrabalho = DBEngine.Workspaces(0)
Set BD = AreaTrabalho.OpenDatabase([Ô]\\SERVIDOR\SISTEMA\Cyberbase.mdb[Ô], False, False)
End Sub


OBS: nao sei se colocando \\SERVIDOR\SISTEMA\Cyberbase.mdb vai funcionar, pois nunca fiz assim!
XXXANGELSXXX 02/12/2010 13:44:27
#358636
sim, vai funcionar normal, porem o nome do servidor tem que ser esse que vc ta passando acima, exemplo : se vc compartilhar essa pasta SISTEMA no servidor entao ficara da forma que vc colocou, caso contrario, se o c:\ do servidor tiver compartilhado vc tem que colocar la.. \\server\c:\sistema\cybase.mdb.
Tópico encerrado , respostas não são mais permitidas