Otimizando o acesso a Dados com ADO
Geralmente quando tratamos com um recordset ADO referenciamos os valores dos campos(Colunas) no recordset usando a seguinte sintaxe:
if rs("codigo") > 0 then
Ou ainda há quem prefira usar a seguinte sintaxe :
if rs.fields("codigo") > 0 then
Quer um caminho melhor ? Você pode melhorar em muito o desempenho se referenciar os nome das colunas do recordset usando a sua forma ordinal. Assim
if rs.fields(0) > 0 then
Lembre-se que o índice inicial referente a primeira coluna é o valor ordinal zero (0) , assim se você quiser referenciar a coluna(campo) de número 13 vai ter que usar : rs(12).
Naturalmente você poderá usar constantes ou enumeraração para tornar o código mais legível. Veja um exemplo:
const fldQuantidade = 5
if rs.fields(fldQuantidade) > 0 then
Quer ir ainda mais longe ? O ganho com o desempenho fica ainda mais acentuado se usarmos a seguinte sintaxe :
const fldQuantidade = 5
Dim objQuantidade as ADODB.Field
set objQuantidade = rs(fldquantidade)
if objQuantidade >0 then
Passei por esta experiência em um projeto onde uma rotina que levava cerca de 12 segundos para ser executada caiu para 3 segundos.
A seguir temos tabela de comparação entre as sintaxes usadas e o tempo gasto no processamento. Compare:
Sintaxe usada | rs("nome_do_Campo) | rs(x) | set objrs = rs(x) |
Resultados percentuais | 100 % | 55% | 5% |
Resultados em segundos para um caso geral | 2,895 | 1,625 | 0,594 |
Até a próxima...
José Carlos Macoratti