ADO - ABRIR RECORSET MAIS RAPIDO

USUARIO.EXCLUIDOS 19/07/2005 09:30:46
#94895
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
JEAN.JEDSON 19/07/2005 09:35:37
#94898
Resposta escolhida
bem... vc não precisa nem abrir o recordset - vc pode fazer via conexão com .execute
WEBMASTER 19/07/2005 09:36:08
#94899
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
USUARIO.EXCLUIDOS 19/07/2005 09:39:57
#94903
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
WEBMASTER 19/07/2005 09:44:02
#94906
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
JEAN.JEDSON 19/07/2005 09:46:09
#94909
exatamente... penso que sempre será mais rápido assim... com o .execute
USUARIO.EXCLUIDOS 19/07/2005 10:13:28
#94923
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 !!!!!!!!


JEAN.JEDSON 19/07/2005 10:15:44
#94927
até onde sei.... não sei dizer... eh eh eh
sempre uso aduseclient
USUARIO.EXCLUIDOS 19/07/2005 10:23:25
#94933
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...??????
JEAN.JEDSON 19/07/2005 10:28:02
#94937
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...
USUARIO.EXCLUIDOS 19/07/2005 10:31:07
#94943
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...
Página 1 de 2 [11 registro(s)]
Tópico encerrado , respostas não são mais permitidas