Clipper On Line • Ver Tópico - Conexão com Firebird via ADO :MoveNext()

Conexão com Firebird via ADO :MoveNext()

Discussão sobre SQL

Moderador: Moderadores

 

Conexão com Firebird via ADO :MoveNext()

Mensagempor tetraetila » 29 Ago 2013 09:38

Bom dia!

Faço uma conexão com o Firebird utilizando AdoDb que está funcionando, porém não consigo varrer todos os registros da tabela selecionada, fica sempre posicionada no início do RecordSet. Vejam:

public CNN

try
CNN:=CreateObject("ADODB.Connection")
CNN:Open("DRIVER=Firebird/InterBase(r) driver;UID=SYSDBA;PWD=masterkey;DBNAME=127.0.0.1:C:\CONVER~1\santor~1\Arquiv~1\Emdesa~1\Fashion\Dados\01\data.fdb;CHARSET=WIN1252;DIALECT=3;CLIENT=fbEmbed.dll")
catch e
Error Connection CNN
ExitProcess(0)
end

try
oCursor:=CreateObject("ADODB.Recordset")
catch e
Error Connection CNN
return
end

oCursor:Open("select * from CLIENTE order by CODCLIENTE", CNN, 2, 3)

&& O problema está no bloco abaixo, ele deveria varrer a tabela com o :MoveNext() porém isto não está ocorrendo.

oCursor:MoveFirst()
do while .not. oCursor:Eof()
msgstop( oCursor:Fields["NOMECLIENTE"]:Value, "" )
oCursor:MoveNext()
enddo

Ele não se movimenta, mostra sempre o mesmo registro e entra em loop. Alguém já passou por esta situação e poderia me dar uma dica? Não encontro o erro, o AdoDb.ch que estou utilizando é do exemplo Agenda postado anteriormente. Muito obrigado!

Adilson
Avatar de usuário

tetraetila
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 2
Data de registro: 29 Ago 2013 09:20
Cidade/Estado: Belo Horizonte MG
Curtiu: 0 vez
Mens.Curtidas: 2 vezes

Conexão com Firebird via ADO :MoveNext()

Mensagempor alxsts » 29 Ago 2013 12:55

Olá!

Seja bem-vindo ao fórum Adilson.

Parece tudo normal no teu código... (por favor, sempre coloque código entre a tag code, localizada na barra de ferramentas na janela onde se posta as mensagens)

O código abaixo funciona normalmente, compilado com xHarbour (não testei com Harbour mas deve funcionar também). Experimente trocar nele a string de conexão e o select pelo que você usa e teste.
#include "ado.ch"

PROCEDURE Main()

   LOCAL oCn, oRs, oErr

   AltD()   

   TRY
      oCn := CreateObject( "ADODB.Connection" )

      oCn:ConnectionString := "Provider=OraOLEDB.Oracle;Data Source=XE;User ID=system;Password=abc123;FetchSize=100;CacheType=Memory;"

      oCn:Open()

      oRs := CreateObject("ADODB.RecordSet")

      With Object oRs
         :cursorType := adOpenDynamic
         :activeConnection( oCn )
         :cursorLocation = adUseServer
         :maxRecords = 100000
         :cacheSize = 100
         :source := "SELECT ROWNUM AS REC, COUNTRY_ID, COUNTRY_NAME  FROM HR.Countries"

         //  ou troque as linhas:
         //    oRs:activeConnection( oCn )
         //    oRs:source := "SELECT ROWNUM AS REC, COUNTRY_ID, COUNTRY_NAME  FROM HR.Countries"
         //  por:
         //    oRs:open( "SELECT ROWNUM AS REC, COUNTRY_ID, COUNTRY_NAME  FROM HR.Countries", oCn )

         :open()

         :moveFirst()

         CLS

         Do While ! :eof()
           QOut( Transform( :Fields( "rec" ):value, "999" ), "-", ;
                 :Fields( "Country_id" ):Value, "-", ;
                 :Fields( "Country_Name" ):Value )
           :MoveNext()
         ENDDO

         :Close()
         oRs := Nil
      End   

      oCn:Close()
      oCn := Nil
   
   CATCH oErr
      Alert( "Error: " + oErr:Operation + " -> " + oErr:Description )
   END

   RETURN   
//--------------------------------------------------------------------------------
Uma dica legal em ADO, é que você pode colocar o recorset todo em um array usando um único método ADO:
aArray := oRs:getRows()
Continue postando.
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2945
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes




Retornar para SQL

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 8 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro