AGILIZAR O ACESSO AO BD ACCESS VIA REDE

WEBIER 28/10/2010 13:15:35
#356152
tenho uma banco de dados access no servidor (SERVIDOR), com a pasta compartilhada na rede.

ai nos terminais eu mapeio o compartilhamento com unidade Z:

ai acesso o banco de dados assim:

isso fica num modulo .bas
Sub execSQL(SQL As String)
Set DB = OpenDatabase([Ô]Z:\Cyberbase.mdb[Ô])
DB.Execute SQL
DB.Close
End Sub



[ô]isso fica no formulario (são varios.... ai é so para vcs terem um ideia)
        execSQL [Ô]UPDATE PRODUTOS SET QUANT_ESTOQUE = QUANT_ESTOQUE - [Ô] & Replace(CDbl(Grid.TextMatrix(i, 5)), [Ô],[Ô], [Ô].[Ô]) & [Ô] WHERE CODIGO = [Ô] & Grid.TextMatrix(i, 2) & [Ô][Ô]



tenho 2 maquinas... 1 servidor e 1 terminal

quando vou fazer qualquer coisa que tenha que abrir o banco de dados para inserir, consultar ou deletar leva em media 15 segundos ou mais...

sendo que na maquina onde o banco de dados está nao demora 1 segundo... o banco de dados é pequeno uns 30MB
as maquina são rapidas e com muita memoria... só quando se trata do sistema ir lah no banco de dados e fazer algo se torna lento.

o que faço para agilizar o acesso?
ALELUIZ 28/10/2010 13:31:03
#356159
Nobre tenho várias aplicações office onde trabalho , algumas tem até 80 users, eu utilizo Dao 3,6 sem problemas, sei que tem gente que não gosta mas atende bem minhas aplicações.
Public Db As Database
public Vrec as recordset
Public Sql as String
[ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô]
Sub AbreBanco()
On Error GoTo erro
Set Db = DBEngine(0).OpenDatabase(ThisWorkbook.Path & [Ô]\MDB.mdb[Ô]) [ô]True, False, [Ô]MS Access;PWD=senhadeprot[Ô])
[ô]MsgBox (SQL)
Set vRec = Db.OpenRecordset(SQL)
Exit Sub
erro:
MsgBox Err.Number & Err.Description
If Err.Number() = 3024 Then
MsgBox ([Ô]Favor Aguardar Sistema em Manutenção[Ô])
exit sub
End If
End Sub


[ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô][ô]
Sub Salvar_Cotacao()
SQL = [Ô]SELECT * FROM Tab_cotacao [Ô]
AbreBanco

vRec.AddNew
[ô]vrec!edit [ô]Update

Vrec!Campo1 = Campo1
Vrec!Campo2 = Campo2

Vrec.update

Vrec.close

end sub
WEBIER 28/10/2010 13:40:21
#356165
A ideia de acesso aos dados seu é parecida com a minha... não acreditor q seja algo relacionado ao acesso aos dados pelo sistema, pois na maquina onde fica localizada o banco de dados é usada como terminal e nao tem demora alguma... acredito q seja algo relacionado ao acesso ao banco de dados pela rede...

ALELUIZ 28/10/2010 13:49:39
#356166
Entandi, estranho se fosse apenas uma máquina poderia ser algo com a placa de rede, vc esta usando wireless? se sim verifica a conf do aparelho , estes tempos tive problemas com um roteador que não transferia mais que 100k /s por motivo de configuração.

boa sorte
WEBIER 28/10/2010 14:48:20
#356177
e via cabo mesmo... usando um hub
WEBIER 28/10/2010 14:52:12
#356178
outra coisa tb... tenho 2 clientes que usam da mesma forma.... estação = hub = servidor

e ambos o terminal fica lento para acessar a base de dados
CHARLESTON10 28/10/2010 16:25:59
#356191
Resposta escolhida
Pode ser o modo de conexao com o banco de daods, sendo DAO o conexao via Cliente/Servidor fica um pouco lenta, pois nao ha variedades de bibliotecas para acesso, sendo a conexao ADO ja e feita para isso, contendo muitas bibliotecas

Pesquisei na internet sobre qual a diferenca entre as duas conexao e cheguei a conclusao dita a cima, agora veja uma explicacao dada pelo Macoratti,

Afinal qual é a forma mais rápida de acessar um banco de dados : DAO ou ADO ?

A pergunta é um tanto melindrosa , pois muitos fatores que estão envolvidos não foram definidos.
De forma geral para acessar uma base de dados Access em um computador de mesa ( desktop ) ou mesmo em um ambiente multiusuário a DAO é mais rápido que a ADO .
Em geral tudo vai depender do ambiente : a configuração da máquina , a desenho da aplicação , etc...

Então , se você esta fazendo um pequeno programa para uma máquina local ou uma rede com até 20 usuários, e não sabe se usa DAO ou ADO. Se a questão for rapidez escolha a DAO. Com a ADO a informação vai para o Jet que a processa e retorna para a ADO que a repassa para você. Usando a DAO a camada ADO (OLE DB) é removida tornando assim o processo mais rápido. Sem contar que o tamanho do seu aplicativo vai aumentar por conta da MDAC que você terá que distribuir junto com seus discos de instalação.

Se ao invés de resolver o seu problema eu acabei de bagunçar a sua cabeça , calma !!!
Eu ainda não teminei...

A ADO é ideal para um ambiente Cliente/Servidor com acesso simultâneo de grande proporções. Neste caso nem pense em usar DAO , muito menos o Access , como base de dados.( ADO Data Control ? não me faça rir...). Nestes casos você deve usar um banco de dados mais potente : SQL Server , Oracle , Sybase , Informix , DB2 , etc...

Nestas situações a ADO é quase imbatível se comparada com a DAO além do que com a ADO sua aplicação se torna mais escalável e portátil ( se você usar SQL , procedimentos armazenados, etc...)
Resumindo:
- Aplicações locais ( monousuárias ) ou para ambiente multiusuário ( de 20 a 30 usuários concorrentes) -> DAO
- Aplicações Cliente/Servidor com acesso concorrente de mais de 30 usuários -> ADO

Clareou, agora

WEBIER 28/10/2010 17:30:05
#356200
baseado no que vc me disse, estou usando o correto: DAO

Aplicações locais ( monousuárias ) ou para ambiente multiusuário ( de 20 a 30 usuários concorrentes) -> DAO
CHARLESTON10 28/10/2010 17:35:24
#356201
nao seria cliente servidor ?[ô]
MARCELO.TREZE 28/10/2010 17:47:28
#356202
Antes de qualquer coisa tenha certeza de que os cabos não foram mal confecionados.

se vc abre e fecha a conexão a cada inclusão, exclusão ou consulta, isto tornará sim mais lento o sistema(creio que vc faça assim mesmo)

bom eu indico que crie um pequeno aplicativo que faça a conexão com o banco de dados, teste com ADO e DAO.

eu em ADO faço a conexão com o banco quando inicio o sistema e fecho quando saio do mesmo (Load e Unload)

os recordsets eu fecho logo após usa-los e isso melhorou muito o desempenho de meus sistemas.



NLSOLUCOES 28/10/2010 20:58:17
#356214
>
Faça um teste mude para ADO e evite utilizar instrução SQL para gravar, pois é mais rápido.
<
Página 1 de 4 [35 registro(s)]
Tópico encerrado , respostas não são mais permitidas