FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Error al generar recordset
Posts: 131
Joined: Tue Dec 26, 2006 04:50 PM
Error al generar recordset
Posted: Mon Dec 24, 2012 06:02 PM
Buenos d铆as y felices fiestas para todos los compa帽eros del foro, aparte de mandarles mis saludos quisiera saber si me pueden ayudar con este problemita, tengo un servidor con Linux y MySQL, estoy tratando de accesar a una base de datos creada en este servidor, intento ejecutar un comando MySQL para geenerar una tabla y llenarla con datos, esto funciona de manera exitosa:

Code (fw): Select all Collapse
cDsn := "servicio"
cDescription := "Prueba de conexi贸n MySQL"
cProvider:="MySQLProv"
cServer := "192.168.7.103"
cDatabase := "Base_de_Datos"
cUsersql := "UsuarioMySQL"
cPasssql := "Passwordfacil"
nport := 3306
cDriverName := "MySQL ODBC 5.2w Driver"

cCmdSql := "USE " + ALLTRIM(cDataBase)
聽 聽TRY
聽 聽 聽 oApp:oCon:Execute(cCmdSql)
聽 聽 聽 CATCH oError
聽 聽 聽 MsgInfo("No se pudo abrir la base de datos, posiblemente no exista !",oApp:cAplicacion)
聽 聽 聽 RETURN(.F.)
聽 聽end
*Inicia************************************************************************************************
聽 聽cCmdsql := "CREATE TABLE IF NOT EXISTS customer ("+;
聽 聽"CLIEN_ID VARCHAR(15) NOT NULL COMMENT 'Identificador fiscal del cliente',"+;
聽 聽"NO_CLIENT DECIMAL(06,2) NOT NULL COMMENT 'N煤mero de cliente',"+;
聽 聽"RAZONSOC VARCHAR(60) NOT NULL COMMENT 'Denominaci贸n fiscal del cliente',"+;
聽 聽"DIR1A VARCHAR(50) NOT NULL COMMENT 'Calle y No. de la direcci贸n fiscal',"+;
聽 聽"DIR2A VARCHAR(50) NOT NULL COMMENT 'Colonia',"+;
聽 聽"DIR3A VARCHAR(50) NOT NULL COMMENT 'Delegaci贸n o municipio',"+;
聽 聽"DIR4A INTEGER NOT NULL COMMENT 'C贸digo postal',"+;
聽 聽"DIR5A VARCHAR(20) NOT NULL COMMENT 'Estado',"+;
聽 聽"CONTACTO VARCHAR(40) NOT NULL COMMENT 'Contacto fiscal',"+;
聽 聽"TELEFONO VARCHAR(15) NOT NULL COMMENT 'Telefono',"+;
聽 聽"PRIMARY KEY(NO_CLIENT))"+;
聽 聽"ENGINE = InnoDB COMMENT 'Tabla de clientes';"
聽 聽TRY
聽 聽 聽 oApp:oCon:Execute(cCmdsql)
聽 聽 聽 catch oError
聽 聽 聽 Msginfo("No se pudo generar la tabla",oapp:cAplicacion)
聽 聽 聽 return(.F.)
聽 聽end
聽 聽Public cMemo := space(1050)
聽 聽use &dbtmp1
聽 聽count to tregs
聽 聽for unreg := 1 to tregs
聽 聽 聽 close all
聽 聽 聽 use &dbtmp1
聽 聽 聽 goto unreg
聽 聽 聽 cCys=alltrim(str(cliysub))
聽 聽 聽 cNc=substr(cCys,1,4)
聽 聽 聽 if len(cCys)=5
聽 聽 聽 聽 聽cNs=".0"+right(cCys,1)
聽 聽 聽 else
聽 聽 聽 聽 聽cNs="."+right(cCys,2)
聽 聽 聽 endif
聽 聽 聽 cNnc=cNc+cNs
聽 聽 聽 cMemo=iif (empty(regfedc),"\N",alltrim(regfedc))+chr(9)+;
聽 聽 聽 cNnc+chr(9)+;
聽 聽 聽 iif (empty(razonsoc),"\N",alltrim(razonsoc))+chr(9)+;
聽 聽 聽 iif (empty(dir1a),"\N",alltrim(dir1a))+chr(9)+;
聽 聽 聽 iif (empty(dir2a),"\N",alltrim(dir2a))+chr(9)+;
聽 聽 聽 iif (empty(dir3a),"\N",alltrim(dir3a))+chr(9)+;
聽 聽 聽 iif (empty(dir4a),"\N",alltrim(str(dir4a)))+chr(9)+;
聽 聽 聽 iif (empty(dir5a),"\N",alltrim(dir5a))+chr(9)+;
聽 聽 聽 iif (empty(contacto),"\N",alltrim(contacto))+chr(9)+;
聽 聽 聽 iif (empty(telefono),"\N",alltrim(telefono))+chr(9)
聽 聽 聽 memowrit("EJEMPLO.TXT",cMemo)
聽 聽 聽 cCmdsql := "LOAD DATA LOCAL INFILE 'EJEMPLO.TXT' INTO TABLE customer;"
聽 聽 聽 TRY
聽 聽 聽 聽 聽oApp:oCon:Execute(cCmdsql)
聽 聽 聽 聽 聽catch oError
聽 聽 聽 聽 聽Msginfo("No se pudo agregar el registro",oApp:cAplicacion)
聽 聽 聽 聽 聽return(.F.)
聽 聽 聽 end
聽 聽 聽 oMeterex1:Set( unreg )
聽 聽 聽 SysRefresh()
聽 聽next
*FINAL************************************************************************************************
RETURN(.T.)


Este c贸digo funciona bien, por lo que deduzco que la cadena de conexi贸n es correcta, el programa abre la base de datos, genera la tabla y la llena con la informaci贸n procedente de mi archivo DBF, el problema es que cuando quiero generar un recordset con el siguiente c贸digo:

Code (fw): Select all Collapse
FUNCTION F_RECORDSET (oCon, cSql, lVacio)
local oError
local oRsClie := CreateObject( "ADODB.Recordset" )

oRsClie:CursorLocation := 3 // adUseClient
oRsClie:LockType := 3 // adLockOptimistic
oRsclie:CursorType := 1 // adOpenKeyset
oRsClie:Source := cSql
oRsClie:ActiveConnection(oCon)

TRY
oRsClie:Open( )
CATCH oError
AdoError(oCon, oError)
RETURN nil
END

IF lVacio
聽 聽IF oRsClie:EOF .and. oRsClie:BOF
聽 聽 聽 msgstop ("Fichero vacio")
聽 聽 聽 oRsClie:CLOSE()
聽 聽 聽 oRsclie:=Nil
* 聽 聽 聽RETURN nil
聽 聽ENDIf
聽 聽oRsClie:MoveFirst()
ENDIf
RETURN oRsclie


Me genera un recordset vacio y me saca del programa, si alguien sabe y me puede decir que estoy haciendo mal se los gradecer铆a mucho.

Uso FWH 2.6 + xHarbour +xDevStudio 0.70

Gracias

Continue the discussion