ADO - ABRIR RECORSET MAIS RAPIDO
Meu problema e o seguinte.
1º Tenho um programa de clientes, estoque , pedidos e financeiro... Todas a vez q é finalizado o pedido eu insiro um registro no livro caixa com o valor referente a venda. O problema esta q abro o recordset com todos os dados. Ex do sql q uso
Select caauto, caPedido, caValor, caVencimento From TabCaixa
Só q isso eu estou carregando toda minha tabela sem necessidade, apenas para inserir um registro. Então mudei para isso :
Select caauto, capedido, cavalor, cavencimento From TabCaixa Where caauto = 0
Sendo assim ela não retorna nenhum registro e fica mais rapido. A pergunta é
Esta correto ou devo mudar isso, fazer um Execute(Insert ....) ou tem alguma outra forma????
2º A segunda, e q nao abro meu recorset com connection, eu perco desempenho do jeito q faço... ex:
Set xrcl = New ADODB.Recordset
xrcl.CursorType = adOpenKeyset
xrcl.LockType = adLockOptimistic
xrcl.Source = "Select cliNome, cliEndereco From TabCliente order by clinome"
xrcl.Open , "Provider=Microsoft.Jet.OLEDB.3.51;Data Source=" & sCaminhoDados & ";"
Só isso, estou perdendo desempenho ou isso pode me trazer algum problema ??????
Devo mudar algo???????
Valeu
1º Tenho um programa de clientes, estoque , pedidos e financeiro... Todas a vez q é finalizado o pedido eu insiro um registro no livro caixa com o valor referente a venda. O problema esta q abro o recordset com todos os dados. Ex do sql q uso
Select caauto, caPedido, caValor, caVencimento From TabCaixa
Só q isso eu estou carregando toda minha tabela sem necessidade, apenas para inserir um registro. Então mudei para isso :
Select caauto, capedido, cavalor, cavencimento From TabCaixa Where caauto = 0
Sendo assim ela não retorna nenhum registro e fica mais rapido. A pergunta é
Esta correto ou devo mudar isso, fazer um Execute(Insert ....) ou tem alguma outra forma????
2º A segunda, e q nao abro meu recorset com connection, eu perco desempenho do jeito q faço... ex:
Set xrcl = New ADODB.Recordset
xrcl.CursorType = adOpenKeyset
xrcl.LockType = adLockOptimistic
xrcl.Source = "Select cliNome, cliEndereco From TabCliente order by clinome"
xrcl.Open , "Provider=Microsoft.Jet.OLEDB.3.51;Data Source=" & sCaminhoDados & ";"
Só isso, estou perdendo desempenho ou isso pode me trazer algum problema ??????
Devo mudar algo???????
Valeu
bem... vc não precisa nem abrir o recordset - vc pode fazer via conexão com .execute
1o. Você poderia fazer apenas um Insert ao invés de fazer a consulta para depois inserir um registro. Não há necessidade de fazer a consulta antes de inserir o registro.
2o.
Dim RS as ADODB.RecordSet
Set RS = New ADODB.RecordSet
RS.Open sql, conexao
2o.
Dim RS as ADODB.RecordSet
Set RS = New ADODB.RecordSet
RS.Open sql, conexao
Jean e Fabio, foi isso q citei de fazer um insert. então no ponto de vista de vcs, seria melhor né do q abrir um recordset... ok
E qt a segundo problema...
Eu sei abrir um recorset de varias formas, mas achei essa mais pratica, pois nao preciso ficar criando um adodb.connection e um adodb.recorset
Assim so faço do jeito q mensionei....
Esta indo bem até agora, mas será q estou perdendo desempenho com isso, ou vai me trazer algum problema????????
Pois nunca vi ninguem abrir um recordset sem um connection, Só eu
E qt a segundo problema...
Eu sei abrir um recorset de varias formas, mas achei essa mais pratica, pois nao preciso ficar criando um adodb.connection e um adodb.recorset
Assim so faço do jeito q mensionei....
Esta indo bem até agora, mas será q estou perdendo desempenho com isso, ou vai me trazer algum problema????????
Pois nunca vi ninguem abrir um recordset sem um connection, Só eu
Eu abro um RecordSet sem um Connection. Eu sempre uso dessa forma, não tenho problemas...
Dim RS as ADODB.RecordSet
Set RS = New ADODB.RecordSet
RS.Open sql, CaminhoConexao
(...)
RS.Close
Dim RS as ADODB.RecordSet
Set RS = New ADODB.RecordSet
RS.Open sql, CaminhoConexao
(...)
RS.Close
exatamente... penso que sempre será mais rápido assim... com o .execute
Valeu pelas dicas...
Então realmente so mudarei o q faco para inserir o registro, usarei o insert...
Agora lembrei de mais uma coisa, sempre abro meu recodset
xrcl.CursorLocation = adUseServer
no servidor, pois com a opcao de cliente fica lento. isso tb pode me trazer problemas futuros ? corromper dados !!!!!!!!
Então realmente so mudarei o q faco para inserir o registro, usarei o insert...
Agora lembrei de mais uma coisa, sempre abro meu recodset
xrcl.CursorLocation = adUseServer
no servidor, pois com a opcao de cliente fica lento. isso tb pode me trazer problemas futuros ? corromper dados !!!!!!!!
até onde sei.... não sei dizer... eh eh eh
sempre uso aduseclient
sempre uso aduseclient
Jean, vc já comparou a velocidade de vc abrir um link direto ao servidor com o aduseServer e vc carregar a sua instrucao na memoria do terminal. .. pois vc usando aduseclient, vc se trabalha com o recorset desconectado, a tabela fica na memoria do terminal...
Será q eu conectado direto com o servidor, tenho mais chances de estar corrompendo meu banco de dados...??????
Será q eu conectado direto com o servidor, tenho mais chances de estar corrompendo meu banco de dados...??????
bem... naun saberia dizer se pode corromper... e nunca fiz o teste de velocidade... agora... os recordsets são muito grandes? pq com a qualidade de máquinas que temos hoje em dia, não deve influenciar tanto... por exemplo: aqui na mormaii temos apenas pentium IV 1.8 (minimo), 256mb (minimo), hd de 60 (minimo) em todas as 60 estações... os servidores são porrada, tudo pIV 2.8 HT, 1.5gb memória, 2x 160gb hd 7200rpm ide... a rede é 100 mbits... ou seja, não faria diferença trabalhar conectado ou desconectado - não que seja sensivel, no meu modo de ver...
ok, no seu caso esta excelente hein
Os meus clientes rodam meu programa em (pentium 166, 32 memoria) tem uns até rodando em 586
Olha q o programa tem (cadastro cliente, fornecedor, estoque, pedido, compra, todo o financeiro, relatorios, em bem completo), por isso falo tanto em velocidade...
Mas acho q esta tudo ok.. valeu pelas dicas...
Os meus clientes rodam meu programa em (pentium 166, 32 memoria) tem uns até rodando em 586
Olha q o programa tem (cadastro cliente, fornecedor, estoque, pedido, compra, todo o financeiro, relatorios, em bem completo), por isso falo tanto em velocidade...
Mas acho q esta tudo ok.. valeu pelas dicas...
Tópico encerrado , respostas não são mais permitidas