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
porque el STR(oDatos:RecordCount()) Con Mysql
- ruben Dario
- Posts: 986
- Joined: Thu Sep 27, 2007 3:47 pm
- Location: Colombia
- Biel EA6DD
- Posts: 680
- Joined: Tue Feb 14, 2006 9:48 am
- Location: Mallorca
- Contact:
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.
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
#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
- ruben Dario
- Posts: 986
- Joined: Thu Sep 27, 2007 3:47 pm
- Location: Colombia
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
#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
- Biel EA6DD
- Posts: 680
- Joined: Tue Feb 14, 2006 9:48 am
- Location: Mallorca
- Contact:
Sustituye el include por estas lineas.
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.
Code: Select all
#define adUseClient 3
#define adOpenDynamic 2
#define adLockOptimistic 3
- ruben Dario
- Posts: 986
- Joined: Thu Sep 27, 2007 3:47 pm
- Location: Colombia
Gracias, perfecto me funciono.Biel EA6DD wrote:Sustituye el include por estas lineas.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.Code: Select all
#define adUseClient 3 #define adOpenDynamic 2 #define adLockOptimistic 3
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
- Biel EA6DD
- Posts: 680
- Joined: Tue Feb 14, 2006 9:48 am
- Location: Mallorca
- Contact:
- ruben Dario
- Posts: 986
- Joined: Thu Sep 27, 2007 3:47 pm
- Location: Colombia
Gracias por tu ejemplo, me funciono bien.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.
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