DAO PARA ADO

ADRIANO 14/09/2005 20:12:24
#104221
Olá pessoal!

Estou mingrando de DAO para ADO, só que eu preciso usar a propriedade PERCENTPOSITION existente no DAO, e ADO não possui esta propriedade.

Alguém tem ou já bolou alguma função que substitua essa propriedade em ADO?

Preciso disso com uma certa urgencia.

Desde já agradeço.

Adriano D. Mà¼ller.
ADRIANO 14/09/2005 21:54:12
#104239
POR FAVOR PESSOAL!

ISSO é URGENTE!!!!
USUARIO.EXCLUIDOS 15/09/2005 09:15:42
#104301
Resposta escolhida
Absolute e Percent Position Determinam a Posição Atual (Número / Porcentagem

A propriedade AbsolutePosition permite determinar o número atual do registro tanto na DAO como na ADO.Vejamos:

DAO

Dim db As DAO.Database
Dim rst As DAO.Recordset

'Abre a base de dados

Set db = DBEngine.OpenDatabase("C:
wind.mdb")

'Abre o Recordset

Set rst = db.OpenRecordset("Select * from Customers", dbOpenDynaset)

'Imprime a posição do registro

Debug.Print rst.AbsolutePosition

'Move-se para outro registro

rst.MoveLast

'Imprime a posição do registro

Debug.Print rst.AbsolutePosition

'Fecha o recordset

rst.Close


ADO

Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset

'Abre a conexão

cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:
wind.mdb;"

'Abre o Recordset

rst.CursorLocation = adUseClient
rst.Open "Select * From Customers", cnn, adOpenKeyset, adLockOptimistic, adCmdText

'Mostra a posição do registro

Debug.Print rst.AbsolutePosition

'move-se para o ultimo registro

rst.MoveLast

'mostra a posicao do registro

Debug.Print rst.AbsolutePosition

'fecha o recordset

rst.Close

A propriedade AbsolutePosition embora seja usada da mesma maneira em DAO e ADO retorna valores diferentes:

DAO -> A propriedade retorna o valor 0 (zero) para o primeiro registro

DAO -> A propriedade retorna o valor 1 (hum) para o primeiro registro

Observe que usamos a propriedade CursorLocation como adUseClient, se tivessemos usado o valor adUseServer a ADO iria retornar (-1)(desconhecido) para o primeiro registro do recordset.

Por fim, respondendo sua pergunta: A propriedade [txt-color=#ffff00]PercentPosition[/txt-color] (retorna um percentual representando a posição aproximada do registro atual dentro do recordset) da DAO não esta presente na ADO. [txt-color=#ffff00]Usando o valor adUseClient para CursorLocation podemos fazer um cálculo equivalente usando a propriedade RecordCount. é um cálculo simples de porcentagem... (Ex: (posição atual/total de registros) * 100 )[/txt-color]

Até breve.
Um forte Abraço.
Tópico encerrado , respostas não são mais permitidas