Página 1 de 1

Propriedade/Comandos ADO

Enviado: 20 Abr 2017 17:10
por vianeimoreira
Olá pessoal, gostaria de saber onde consigo os comandos e propriedades para usar conexão ADO, estou tendo muita dificuldade nos comandos por exemplo gostaria de retornar a quantidade de registros de um select mas não consigo de jeito nenhum.

Alguns já sei como :Eof(), :Bof(), MoveNext(), estes mais comuns, mas se tivesse uma lista completa ajudaria, estou usando da seguinte forma:

Try
CNN:=CreateObject("ADODB.Connection")
CNN:Open("DRIVER=Firebird/InterBase(r) driver;UID=SYSDBA;PWD=masterkey;DBNAME=.\saeinfo.fdb;CHARSET=WIN1252;DIALECT=3")
Catch e
Error Connection CNN
ExitProcess(0)
End

cSql := "Select * From Alunos Where Codigo >= 1 Order By Codigo"
Try
oQuery:=CNN:Execute( cSql )
Catch e
Error Connection CNN
Return
End
nContador := 0
Do While !oQuery:Eof()
cCodAluno := StrZero( oQuery:Fields["Codigo"]:Value,5 )
oQuery:MoveNext()
nContador++
EndDo
oQuery:Close()

Ai como eu estou pegando os dados até o final Eof() estou colocando um contador, mas preciso em algumas situações só o resoltado sem passar registro a registro entende...

No PostGreeSql eu uso tipo oQuery:Lastrec() m resulta o total de linhas do solicitação Select Mas através do ADO estou com muita dificuldade pois preciso migrar um BD Firebird ou seja pegar informações do mesmo... Valeu..

Uso Minigui Extended última versão

Att.,

Vianei Moreira de Lemos

Propriedade/Comandos ADO

Enviado: 20 Abr 2017 19:05
por alxsts
Olá!

Você pode aprender lendo os tutoriais da W3Schools, começando por ADO Introduction. O material está escrito em Inglês. Se tiver dificuldades com isso, clique no ícone que mostra um globo terrestre no canto direito da barra superior de menus e selecione o idioma Português.

No menu da lateral esquerda da página do site, estão listados os objetos do ADO. Ao fim das descrições de cada objeto, exite um link com o texto "View all methods and properties of the xxxxxxxxxx object.", onde xxxxxxxxx representa o objeto que está sendo exibido.

Os exemplos estão no velho ASP mas as propriedades dos objetos são as mesmas que se pode usar em Harbour. Basta trocar o ponto que separa os nomes dos objetos dos nomes das propriedades por dois pontos, padrão do xBase. Como exemplo, veja a propriedade do objeto RecordSet que retorna a quantidade de registros retornados (.RecordCount no Visual Basic e :RecordCount no Harbour ou xHarbour):

Código: Selecionar todos

#include "ado.ch"
#include "set.ch"

PROCEDURE Main()

   LOCAL oCn, oRs, oErr, aRs, cSql

   Try
      Set( _SET_DATEFORMAT, "dd/mm/yyyy" )

      oCn := CreateObject( "ADODB.Connection" )

      // SQL Server 2008 R2
      oCn:ConnectionString := "Provider=SQLNCLI10;Server=999.16.30.8;Database=MyDb;UID=MyUID;Pwd=MyPWD;"

      oCn:Open()

      oRs := CreateObject("ADODB.RecordSet")

      cSql := "SELECT idOrder, Convert(Char(10), dtOrder,103) dtOrder, vlTotalOrder / 100 vlTotalOrder FROM tbOrder ORDER BY idOrder"

      oRs := oCn:Execute( cSql )

      With oRs

         :moveFirst()
         
         If ! :Eof()
            Hb_Alert( :RecordCount )   /// === retorna a quantidade de registros === ///
         Else
            Hb_Alert( "Nenhum Registro encontrado" )
         Endif
      End With

   Catch
      Hb_Alert( "Error: " + oErr:Operation + " -> " + oErr:Description )
   Finally
      If oCn:state = adStateOpen
         oCn:close
      Endif

      If oRs:state = adStateOpen
         oRs:close
      Endif

      oCn := NIL
      oRs := NIL
   End

   RETURN NIL
//-----------------------------------------------------------------------
Lembre-se que a tecnologia ADO só funciona na plataforma Windows.

ADOObjectProperties

Propriedade/Comandos ADO

Enviado: 20 Abr 2017 20:56
por JoséQuintas
Vianei Moreira, está confundindo.

ADO tem a conexão, óbvio usada pra conectar, e o recordset que é o retorno.

No google, ADO Connection pra um, e ADO Recordset pra outro.

https://docs.microsoft.com/en-us/sql/ad ... and-events

Só a título de curiosidade: lembra no Clipper/Dbase? era RecCount(), no ADO é RecordCount()

Mas o ideal é mesmo fazer a consulta na base: SELECT COUNT(*) AS QTD FROM ...