Antonio como vas, espero que bien.
Necesito un favor, lo que pasa es que por ahi buscando encontre un manual para mysql y habour. De causalidad no tienes uno para xhabour o me sirve el mismo?
De antemano gracias
/* creamos el objeto conexion */
oCon:=toleauto():new("adodb.connection")
/* conectamos con el servidor de base de datos de MySQL */
oCon:OPEN("DRIVER={MySQL ODBC 3.51 DRIVER};SERVER=192.168.2.101;DATABASE=garis;UID=root;PWD=18167231")
/* creamos un objeto comando para ejecutar los queries */
oSql:=toleauto():new("adodb.command")
/* "conectamos" el objeto comando con la conexion previamente creada*/
oSql:ActiveConnection(oCon)
/* Creamos el Query SQL en la DATA CommandText*/
oSql:CommandText:="Select * from B3000 where nomar like '%CHICO%'"
/* Ejecutamos el Query, el resultado del query queda guardado en otro objeto tipo "recordset" */
oDatos:=oSql:Execute()
/* ¿ cuantos renglones trajo de regreso el query ?*/
? STR(oDatos:RecordCount())
/* ¿ cuantas Columnas trajo de regreso el query ? */
? STR(oDatos:Fields:Count())
/* Vamos a volcar todos los datos retornados por el query en un array de (x) Harbour*/
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
oSql:CommandText:=...
oDatos:=oSql:Execute()
oDatos:RecordCount()
oDatos:Fields:Count()
oDatos:MoveFirst()
oDatos:Fields(0):value...
Hernan Diego Ceccarelli wrote:Hola
Me interesaria ver un lindo ejemplo de un ABM con ADO, eso, basicamente una tabla inicial de presentacion, modificaciones alta y bajas, como ir refrescando el recordset o existe necesidad de crear otro ?
Y creo que se podria browsear DIRECTAMENTE el recordset de ADO sin necesidad de incorporar un array de por medio, mas aun si quiero browsear una base de datos de millones de registros, me quedaria sin memoria
Salu2
Actualmente, gracias al modelo ADO, tu puedes browsear directamente sobre el RecordSet, simplemente define las columnas de tu browse como datas oRecordSet:Fields(x):value, define un bloque de código :Bskip para moverte sobre los registros del RecordSet, y asigna la data :bLogicLen a RecordSee:RecordCount() y te ahorras la molestia de pasar por el array.
Hernan Diego Ceccarelli wrote:Rene,
Muchas gracias, has sido muy explicativo. Los modelos SQL nos dan rapidez de consulta, seguridad y C/S, pero nos limitan la "intuitividad" de la aplicacion, es decir, no se concibe un abm intuitivo de algo sin un browse, en ese sentido vamos para atras.
Salu2
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: Google [Bot] and 70 guests