Error con ADO y MySql

Error con ADO y MySql

Postby Armando » Fri Apr 18, 2008 8:37 pm

Amigos del foro:

En el siguiente código:

Code: Select all  Expand view  RUN
TRY
   oRsCxp   :=   TOleAuto():New("adodb.recordset")
CATCH oError
   MsgStop( "No se ha podido crear el RECORDSET de CUENTAS POR PAGAR !", oApp:cAplicacion)
   RETURN(.F.)
   oRsCxp   :=   NIL
END

oRsCxp:CursorLocation   := adUseClient
oRsCxp:LockType         := adLockOptimistic
oRsCxp:CursorType         := adOpenDynamic
oRsCxp:Source            := "SELECT * FROM carcxp;"
oRsCxp:ActiveConnection(oCon)

TRY
   oRsCxp:Open()
CATCH oError
   MsgStop( "No se ha podido abrir el RECORDSET carcxp !", oApp:cAplicacion)
   RETURN(.F.)
END

MsgInfo(oRsCxp:RecordCount())
//oRsCxp:MoveFirst()
DO WHILE !  oRsCxp:EOF()
   cCmdSql   := "UPDATE proyecto SET PRO_IMA = ROUND(PRO_IMA + " + ;
               STR(oRsCxp:Fields("CAR_NET"):Value,10,2) + ;
               ",2) WHERE PRO_PRO = " + "'" + oRsCxp:Fields("CAR_PRO"):Value + "'" + " ;"
   TRY
      oCon:Execute(cCmdSql)
   CATCH oError
      MsgInfo("No pude ejecutar el comando " + cCmdSql,oApp:cAplicacion)
      RETURN(.F.)
   END
   oRsCxp:MoveNext()
ENDDO
oRsCxp := NIL


Me tira un error en la línea de código oRsCxp:MoveFirst(), por eso la tengo comentada, tal parece que la tabla no tuviera registros pero sí los tiene pues abro la tabla con el administrador y veo los registros sin embargo el código me dice que esta vacia.

El error que me tira es el siguiente:

Error description: Error adodb.recordset/16389 E_FAIL: MOVEFIRST
Args:

Tengo varios RECORDSET antes y despues del trozo de código que les meustro y esos funcionan bien.

Que podrá ser ?

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3239
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Postby sysctrl2 » Fri Apr 18, 2008 9:18 pm

Armando amigo como estas,,

oyes el punto y coma que tienes en el qry. que significa?


oRsCxp:Source := "SELECT * FROM carcxp;"



saludos....
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
User avatar
sysctrl2
 
Posts: 1027
Joined: Mon Feb 05, 2007 7:15 pm

Postby Armando » Fri Apr 18, 2008 9:28 pm

Que pasa ?, paisano:

Mira el punto y coma es irrelevante, diria yo que hasta innecesario, solo que me he quedado con la costumbre pues todos los comandos SQL deben terminar con ; , pero en el caso de la sentencia SELECT no es necesario.

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3239
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Postby Manuel Valdenebro » Sat Apr 19, 2008 8:17 am

Armando,

Te pongo el código que uso:

memvar oRs

oRs := TOleAuto():New("adodb.recordset")
oRs:CursorLocation := 3 // adUseClient
oRs:LockType := 3 // adLockOptimistic
oRs:CursorType := 1 // adOpenKeyset
oRs:Source := 'SELECT * FROM EMPLOYEES ORDER BY LAST_NAME'
oRs:ActiveConnection(oCon)
TRY
oRs:Open( )
CATCH oError
AdoError(oCon, oError) // funcion mcn32.lib
RETURN nil
END

IF oRs:EOF .or. oRs:BOF
msgstop ("Fichero vacio")
oRs:CLOSE()
oRS:=Nil
RETURN nil
ENDI

oRs:MoveFirst()



Veo solo diferencias en las dobles comillas de la orden SELECT y en el CURSORTYPE.
Un saludo

Manuel
User avatar
Manuel Valdenebro
 
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

Postby Armando » Sat Apr 19, 2008 12:58 pm

Manuel:

Te agradezco la respuesta pero nop :-(

He cambiado mi código a la forma en como lo tienes tú pero ni así funca.

Le agregue estas lineas
IF oRs:EOF .or. oRs:BOF
MsgInfo("La tabla esta vacia !")
ENDIF

Y me muestra el mensaje de que esta vacia, sin embargo estoy seguro de que la tabla tiene registros pues los he visto con el administrador.

Me hace pensar que la tabla este dañada, sin embargo el resto de la aplicación la lee sin problemas, ya le corrí los procesos de revisión que me permite el ADMINISTRADOR de MySql pero no, no hay de piña.

Un abrazo
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3239
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 59 guests