porque el STR(oDatos:RecordCount()) Con Mysql

porque el STR(oDatos:RecordCount()) Con Mysql

Postby ruben Dario » Mon Feb 11, 2008 9: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
User avatar
ruben Dario
 
Posts: 1066
Joined: Thu Sep 27, 2007 3:47 pm
Location: Colombia

Postby Biel EA6DD » Tue Feb 12, 2008 7: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.

Code: Select all  Expand view
#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/
User avatar
Biel EA6DD
 
Posts: 682
Joined: Tue Feb 14, 2006 9:48 am
Location: Mallorca

Postby ruben Dario » Tue Feb 12, 2008 8: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.

Code: Select all  Expand view
#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
User avatar
ruben Dario
 
Posts: 1066
Joined: Thu Sep 27, 2007 3:47 pm
Location: Colombia

Postby Biel EA6DD » Wed Feb 13, 2008 7:58 am

Sustituye el include por estas lineas.
Code: Select all  Expand view
#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/
User avatar
Biel EA6DD
 
Posts: 682
Joined: Tue Feb 14, 2006 9:48 am
Location: Mallorca

Postby ruben Dario » Wed Feb 13, 2008 3:33 pm

Biel EA6DD wrote:Sustituye el include por estas lineas.
Code: Select all  Expand view
#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
User avatar
ruben Dario
 
Posts: 1066
Joined: Thu Sep 27, 2007 3:47 pm
Location: Colombia

Postby Biel EA6DD » Wed Feb 13, 2008 5: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/
User avatar
Biel EA6DD
 
Posts: 682
Joined: Tue Feb 14, 2006 9:48 am
Location: Mallorca

Postby ruben Dario » Wed Feb 27, 2008 9: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
User avatar
ruben Dario
 
Posts: 1066
Joined: Thu Sep 27, 2007 3:47 pm
Location: Colombia


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 72 guests