FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour ADO não funciona o RecordCount()?
Posts: 139
Joined: Fri Nov 25, 2005 04:38 PM
ADO não funciona o RecordCount()?
Posted: Thu Jan 26, 2006 01:39 PM

Ola pessoal, estou trabalhando com o ADO para o ACCESS porem alguns comandos conforme relação abaixo não funciona! sabem porque?


Include "Fivewin.ch"

Function Main()
LOCAL oDados, txSql
PRIVATE oCn := CREATEOBJECT( "ADODB.Connection" )

oCn:Open( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=venda.mdb" )
txSql := "SELECT * FROM imovweb; "
oDados := oCn:Execute( txSql)

oDados:MoveNext() -- Funciona
oDados:MoveFirst() -- NÃO Funciona
oDados:MoveLast() -- NÃO Funciona
oDados:RecordCount() -- NÃO Funciona


Ronaldo Minacapelli
Sistemas, Hospedagem e Criação de WebSites
http://www.bazevani.com.br
Posts: 229
Joined: Wed Oct 12, 2005 05:32 PM
ADO não funciona o RecordCount()?
Posted: Tue Jan 31, 2006 04:52 PM

Ronaldo,

¿Donde tienes el cursor? ¿¿Que valor tiene CursorLocation del objeto Connection??

Saludos,
José Luis Capel

Posts: 840
Joined: Thu Oct 13, 2005 07:05 PM
ADO não funciona o RecordCount()?
Posted: Tue Jan 31, 2006 05:30 PM

No uses objetos CONNECTION para ejecutar el query, los objetos CONNECTION regresan un cursor forward que no puede recuperar los valores que necesitas.

Crea un objeto Connection, luego un objeto Command y eso te devolvera el RecordSet que necesitas.

Saludos

R.F.
Posts: 229
Joined: Wed Oct 12, 2005 05:32 PM
ADO não funciona o RecordCount()?
Posted: Tue Jan 31, 2006 06:14 PM
René,

No uses objetos CONNECTION para ejecutar el query, los objetos CONNECTION regresan un cursor forward que no puede recuperar los valores que necesitas.


No es exactamente como tu dices. El método execute del objeto Connection devuelve siempre un recordset del tipo y localización que has indicado en la creación del objeto Connection (y si no se indican, se utilizan los valores por defecto).

Crea un objeto Connection, luego un objeto Command y eso te devolvera el RecordSet que necesitas.


Tampoco es exactamente así. Si vas a trabajar con resultados de datos (filas y columnas) es preferible siempre utilizar el objeto Recordset y reservar el objeto Command para llamadas a procedimientos almacenados y otras funciones de servidor.

Saludos,
José Luis Capel
Posts: 229
Joined: Wed Oct 12, 2005 05:32 PM
ADO não funciona o RecordCount()?
Posted: Wed Feb 01, 2006 12:19 PM
Ronaldo,

Prueba este código a ver si te ayuda a clarificar por que no te funcionan los métodos que indicas:

#Include "Fivewin.ch"

#define adBookmark 0x2000 
#define adMovePrevious 0x200 


Function Main()
LOCAL oDados, txSql
PRIVATE oCn := CREATEOBJECT( "ADODB.Connection" )

oCn:Open( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=venda.mdb" )
txSql := "SELECT * FROM imovweb; "
oDados := oCn:Execute( txSql)

MsgInfo( IIF(oDados:Supports(adBookmark),"Soporta RecordCount","No soporta RecordCount"))

MsgInfo( IIF(oDados:Supports(adMovePrevious),"Soporta MoveFirst, MovePrevious, etc","No soporta MoveFirst, MovePrevious, etc"))

....


No lo he probado... Espero que esto te ayude.
Saludos,
José Luis Capel
Posts: 115
Joined: Sat Mar 07, 2009 09:36 PM
Re: ADO não funciona o RecordCount()?
Posted: Wed Mar 17, 2010 05:47 PM

Hola : proba asi si usas Ado

               oData1:RecordCount()  Asi no    funciona



               If   oData1:RecordCount   > 0 
                     ? "Hay "
                EndIf
Posts: 1078
Joined: Thu Sep 27, 2007 03:47 PM
Re: ADO não funciona o RecordCount()?
Posted: Wed Mar 17, 2010 10:20 PM

A mi me funciona Asi. COn Mysql

if oDatos:RecordCount() =0 //ADORecCount()
MsgInfo("No Hay Datos ","Informacion") Return (.t.)
endif
nLinea := 1 ; nHasta := oDatos:RecordCount()
oDatos:MoveFirst()

Ruben Dario Gonzalez
Cali-Colombia
rubendariogd@hotmail.com - rubendariogd@gmail.com
Posts: 229
Joined: Sat Mar 18, 2006 03:42 PM
Re: ADO não funciona o RecordCount()?
Posted: Wed Mar 17, 2010 10:53 PM

Por qué no usas un recordset. Prueba así:


Include "Fivewin.ch"

Function Main()
LOCAL txSql
PRIVATE oCn,oRs,oError

//Crea el objeto conexión
TRY
oCn := TOleAuto():new("adodb.connection")
CATCH oError
MsgStop( "No se pudo crear el objeto conexión !")
RETURN(.F.)
END

//Crea el objeto recordset que manejará la tabla
TRY
oRs := TOleAuto():New("adodb.recordset")
CATCH oError
MsgStop( "No se pudo crear el recordset)
RETURN .f.
END

//Abrimos la conexión
TRY
oCn:Open( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=venda.mdb" )
CATCH oError
MsgStop( "No se pudo abrir la conexión !")
return .f.
END

//Configuramos el recordset que manejara la tabla
oRs:CursorLocation := adUseClient
oRs:LockType := adLockOptimistic
oRs:CursorType := adOpenKeyset//adOpenDynamic
oRs:Source := "SELECT * FROM imovweb; "
oRs:ActiveConnection(oCn)
//Ahora si cargamos los datos en el recordset
TRY
oRs:Open()
CATCH oError
MsgStop( "No se pudo cargar los datos de la Tabla imovweb")
RETURN .f.
END

//asegurarse que la tabla no esté vacía para usar
//los métodos que pones de ejemplo
if ! oRs:BOF() .AND. ! oRs:EOF()
oRs:MoveNext() //-- Funciona
oRs:MoveFirst() //-- NÃO Funciona
oRs:MoveLast() //-- NÃO Funciona
oRs:RecordCount()// -- NÃO Funciona
endif

ors:Close()
oCn:Close()


Saludos

Marcelo Jingo

Marcelo Jingo
Posts: 139
Joined: Fri Nov 25, 2005 04:38 PM
Re: ADO não funciona o RecordCount()?
Posted: Thu Mar 18, 2010 08:40 PM

Então, creio que essas opções não funcionem, pois voc~e deve verificar a forma de abertura do RecordSet.

Ronaldo Minacapelli

Ronaldo Minacapelli
Sistemas, Hospedagem e Criação de WebSites
http://www.bazevani.com.br

Continue the discussion