FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour porque el STR(oDatos:RecordCount()) Con Mysql
Posts: 1078
Joined: Thu Sep 27, 2007 03:47 PM
porque el STR(oDatos:RecordCount()) Con Mysql
Posted: Mon Feb 11, 2008 09:56 PM

Mi pregunta es la siguiente porque el commando ? STR(oDatos:RecordCount()) una vez hago la conexion con Mysql da negativo..

Algun colega del forums me podria facilitar un codigo para analizar completo utilizando conexion ADO con harbour utilizando el browser m modificar ,m adicionar regiastro etc.

Gracias , Abexo codigo

FUNCTION MAIN()
Local oCon, oSql,oDatos,aDatos

oCon:=TOLEAUTO():New("adodb.connection")

oCon:OPEN("DRIVER={MySQL ODBC 3.51 DRIVER};SERVER=192.168.10.1;DATABASE=basedatm;USER=root;PASSWORD=colomp")
oSql:ActiveConnection(oCon)
oSql:CommandText:="Select * from ktipmod"
oDatos:=oSql:Execute()
? STR(oDatos:RecordCount())

? STR(oDatos:Fields:Count())

aDatos := {}

oDatos:MoveFirst() // equivale a GO TOP en un DBF
do while .not. oDatos:EOF()
AADD(aDatos, {oDatos:Fields(0):value,;
oDatos:Fields(1):value,;
oDatos:Fields(2):value,;
oDatos:Fields(3):value})
oDatos:MoveNext() // equivale un SKIP en un DBF
enddo
RETURN NIL

Ruben Dario Gonzalez
Cali-Colombia
rubendariogd@hotmail.com - rubendariogd@gmail.com
Posts: 682
Joined: Tue Feb 14, 2006 09:48 AM
porque el STR(oDatos:RecordCount()) Con Mysql
Posted: Tue Feb 12, 2008 07:48 AM
Supongo que devuelve -1 porque el curosor del recordset debe estar definido del lado del servidor.

Prueba el c贸digo que te propongo, deberia funcionarte bien. Yo no lo he probado con MySql, pero con otros motores va ok.

#include "Ado.ch"
FUNCTION MAIN() 
Local oCon, oSql,oDatos,aDatos 

oCon:=TOLEAUTO():New("adodb.connection") 


oCon:OPEN("DRIVER={MySQL ODBC 3.51 DRIVER};SERVER=192.168.10.1;DATABASE=basedatm;USER=root;PASSWORD=colomp") 

oDatos:=tOleAuto():New("ADODB.RecordSet")
oDatos:CursorLocation   := adUseClient
oDatos:CursorType       := adOpenDynamic
oDatos:LockType         := adLockOptimistic
oDatos:ActiveConnection := oCon
oDatos:Source           := "Select * from kitpmod"
oDatos:Open()

? STR(oDatos:RecordCount()) 

? STR(oDatos:Fields:Count()) 

aDatos := {} 

oDatos:MoveFirst() // equivale a GO TOP en un DBF 
do while .not. oDatos:EOF() 
AADD(aDatos, {oDatos:Fields(0):value,; 
oDatos:Fields(1):value,; 
oDatos:Fields(2):value,; 
oDatos:Fields(3):value}) 
oDatos:MoveNext() // equivale un SKIP en un DBF 
enddo 
RETURN NIL
Saludos desde Mallorca
Biel Maim贸
http://bielsys.blogspot.com/
Posts: 1078
Joined: Thu Sep 27, 2007 03:47 PM
porque el STR(oDatos:RecordCount()) Con Mysql
Posted: Tue Feb 12, 2008 08:34 PM
Biel EA6DD wrote:Supongo que devuelve -1 porque el curosor del recordset debe estar definido del lado del servidor.

Prueba el c贸digo que te propongo, deberia funcionarte bien. Yo no lo he probado con MySql, pero con otros motores va ok.

#include "Ado.ch"
FUNCTION MAIN() 
Local oCon, oSql,oDatos,aDatos 

oCon:=TOLEAUTO():New("adodb.connection") 


oCon:OPEN("DRIVER={MySQL ODBC 3.51 DRIVER};SERVER=192.168.10.1;DATABASE=basedatm;USER=root;PASSWORD=colomp") 

oDatos:=tOleAuto():New("ADODB.RecordSet")
oDatos:CursorLocation   := adUseClient
oDatos:CursorType       := adOpenDynamic
oDatos:LockType         := adLockOptimistic
oDatos:ActiveConnection := oCon
oDatos:Source           := "Select * from kitpmod"
oDatos:Open()

? STR(oDatos:RecordCount()) 

? STR(oDatos:Fields:Count()) 

aDatos := {} 

oDatos:MoveFirst() // equivale a GO TOP en un DBF 
do while .not. oDatos:EOF() 
AADD(aDatos, {oDatos:Fields(0):value,; 
oDatos:Fields(1):value,; 
oDatos:Fields(2):value,; 
oDatos:Fields(3):value}) 
oDatos:MoveNext() // equivale un SKIP en un DBF 
enddo 
RETURN NIL




Gracias HIze la prueba, pero al compilarlo me dice que hace falta el archivo "Ado.ch" como la puedo conseguir

Estoy compilando con xharbour build 99.7 y FHW 2.7

Cuando compilo con harbour Build 45 tengo entendido que no se puede sale el error Error: Unresolved external '_HB_FUN_TOLEAUTO' referenced from C:\TEMP\PRUEBASODBC\OBJ\PRUEBA11.OBJ
Ruben Dario Gonzalez
Cali-Colombia
rubendariogd@hotmail.com - rubendariogd@gmail.com
Posts: 682
Joined: Tue Feb 14, 2006 09:48 AM
porque el STR(oDatos:RecordCount()) Con Mysql
Posted: Wed Feb 13, 2008 07:58 AM
Sustituye el include por estas lineas.
#define adUseClient 3
#define adOpenDynamic 2
#define adLockOptimistic 3

El error '_HB_FUN_TOLEAUTO' , es porque no enlazas hbOle.lib, pero en tu primer ejemplo usabas tOleAuto, asi que supongo que tienes la libreria y solo te hace falta incluirla.
Saludos desde Mallorca
Biel Maim贸
http://bielsys.blogspot.com/
Posts: 1078
Joined: Thu Sep 27, 2007 03:47 PM
porque el STR(oDatos:RecordCount()) Con Mysql
Posted: Wed Feb 13, 2008 03:33 PM
Biel EA6DD wrote:Sustituye el include por estas lineas.
#define adUseClient 3
#define adOpenDynamic 2
#define adLockOptimistic 3

El error '_HB_FUN_TOLEAUTO' , es porque no enlazas hbOle.lib, pero en tu primer ejemplo usabas tOleAuto, asi que supongo que tienes la libreria y solo te hace falta incluirla.


Gracias, perfecto me funciono.

Te pregunto ya con esta conexion puedo hacer consultas, adicionar, modificar, delete etc..
Veo que solo funciona con xharbour y Harbour no funciona me genera este error _HB_FUN_TOLEAUTO'
Actualmente tengo FWH 2.7 y Harbour build 45 y xHarbour 0.99.7
Ruben Dario Gonzalez
Cali-Colombia
rubendariogd@hotmail.com - rubendariogd@gmail.com
Posts: 682
Joined: Tue Feb 14, 2006 09:48 AM
porque el STR(oDatos:RecordCount()) Con Mysql
Posted: Wed Feb 13, 2008 05:12 PM

Si, puedes hacer cualquier cosa con el RecordSet, Altas, bajas, modificaciones.

Para que te funcione en Harbour, tienes que linkar la libreria hbOle.lib, que es la que da soporte Ole a Harbour. En las ultimas versiones de harbour creo que ya viene incluido, pero en las antiguas no.

Saludos desde Mallorca
Biel Maim贸
http://bielsys.blogspot.com/
Posts: 1078
Joined: Thu Sep 27, 2007 03:47 PM
porque el STR(oDatos:RecordCount()) Con Mysql
Posted: Wed Feb 27, 2008 09:41 PM
Biel EA6DD wrote:Si, puedes hacer cualquier cosa con el RecordSet, Altas, bajas, modificaciones.

Para que te funcione en Harbour, tienes que linkar la libreria hbOle.lib, que es la que da soporte Ole a Harbour. En las ultimas versiones de harbour creo que ya viene incluido, pero en las antiguas no.


Gracias por tu ejemplo, me funciono bien.

Te pregunto con Mysql , se pueden manejar los indices asi como los archivos DBF se puede utilizar la funcion SEEK. No se si has utilizado el ADORDD
Ruben Dario Gonzalez
Cali-Colombia
rubendariogd@hotmail.com - rubendariogd@gmail.com

Continue the discussion