ADO é como se fosse uma RDD, pra ler qualquer base de dados.
Neste caso o "driver" de Excel permite trabalhar com a planilha como se fosse banco de dados.
No ADO tem também conector pra TXT, XML, etc.
Trabalha-se como qualquer banco de dados, igual pra todos.
No caso do Harbour, as RDDs permitem trabalhar "estilo DBF".
No caso do ADO, não sei dizer se é "estilo Access" ou estilo ADO mesmo.
Ele tem suas propriedades e métodos, do mesmo jeito que o Harbour tem pra DBF.
Recordset é a tabela, como se fosse um arquivo DBF.
Tem-se as funções :Eof(), :MoveNext(), :MovePrevicous(), :RecordCount(), etc.
Cada registro, igual o DBF tem seus campos, acessados por Fields()
:Name, :Value, etc.
Gerar o recordset (temporário) com o resultado de uma consulta
Rs := Conexao:Execute( "SELECT * FROM tabela" )
Trabalhar com recordset
? "total de registros:" + Str( Rs:RecourdCount() )
? "Total de campos:" + Str( Rs:Fields:Count() )
DO WHILE ! Rs:Eof()
? Rs:Fields(0):Value // o primeiro item é 0 e não 1
Rs:MoveNext()
ENDDO
Acessar os campos
? Rs:Fields(1):Value
? rs:Fields( "CODIGO" ):Value
rs:Fields( "CODIGO" ) = valor
rs:Edit()
rs:Update()
rs:Append()
É um acesso universal a qualquer base de dados, praticamente um RDD universal.
Não é muito divulgado no Harbour porque é formato proprietário da Microsoft, e mais específico pra Windows.
Simplificando: temos acesso a qualquer base de dados no Windows... mas é Windows. Até Excel está incluso nisso.
O uso é livre, mas não é Open Source, e talvez não tenha igual em Linux.
Talvez até isso tenha sido considerado como "A Microsoft querendo dominar o mercado"....rs
Enquanto isso permite usar qualquer base de dados GRÁTIS, no Harbour indicam produtos comerciais PAGOS pra ficar igual DBF.
ADO é só a parte intermediária, o ODBC é que vai dar o tratamento final, uma espécie de driver. Sempre vai depender de existir um "driver" para o banco de dados, quanto mais compatível com ADO melhor. Por isso nem toda base de dados funciona a plena carga no ADO, porque não fizeram "tão compatível". Alguns, como os primeiros ODBC pra dBASE, eram somente pra leitura.
Daria até pra criar um aplicativo somente com ADO e nada mais, usando o formato do ADO pras bases de dados.
Não foi feito pra isso, mas é possível usar, substituindo DBFs por ADO.
Esta parte já seria pra fazer atualizações no recordset, ou até na base de dados, no estilo do ADO.
Como eu disse antes, tudo depende do ODBC ("driver") ter sido criado totalmente compatível com ADO, o que é difícil.
Mas comando SQL sempre funciona.
rs:Fields( "CODIGO" ) = valor
rs:Edit()
rs:Update()
rs:Append()
rs:Find()
Esta última parte acabei NUNCA usando.
Mais informações, no site Microsoft, pra lista completa de métodos e propriedades, com muita coisa que NUNCA iremos usar.
Faltou aqui da conexão, ou do arquivo físico de ADO:
Cn := win_OleCreateObject( "ADODB.Connection" )
Rs := win_OleCreateObject( "ADODB.Recordset" )
:Open()
:Close()
:ConnectionString