Page 1 of 1

TdbOdbcDirect problema con metodo :Update()

PostPosted: Thu Oct 05, 2006 9:13 am
by Biel EA6DD
Estoy utilizando la clase TdbOdbcDirect, tengo asignado a un boton que ejecute el metodo Update, el problema es que si se pulsa Ok, y no se ha modificado ningun campo, la sentencia que genera es del tipo
Code: Select all  Expand view
UPDATE tabla SET WHERE ...

esta cadena al ejutarla produce un error puesto que no hay ningun campo a acuatilizar despues del SET.

Alguna idea para solucionarlo, yo he modificado el metodo :Update la linea que pone
Code: Select all  Expand view
lRet := ::Execute(cSql, "TDbOdbcDirect:Update()")

por esta otra
Code: Select all  Expand view
lRet := IF(Empty(::GenUpdate),.T.,::Execute(cSql, "TDbOdbcDirect:Update()")) //Biel

Esto funciona correctamente, pero agradeceria si alguien le ha dado solución por otra via, u otra idea.

PostPosted: Thu Oct 05, 2006 7:28 pm
by R.F.
Biel:

No mates pulgas a cañonazos, hazlo por ADO que va como una moto, sin complicacines de ODBC, DSN, conectores, cursores en memoria ni nada.

PostPosted: Mon Oct 09, 2006 2:29 pm
by Biel EA6DD
Gracias Rene por el consejo, la verdad es que con tOdbc y TDbOdbcDirect me funciona bastante bien.

De todas maneras si que tengo previsto el probar ADO, y si funciona segun lo esperado ir migrando.

Por lo leido, es bastante mas rapido, y eso siempre viene bien.

PostPosted: Wed Oct 11, 2006 2:13 pm
by Vikthor
Biel EA6DD wrote:Gracias Rene por el consejo, la verdad es que con tOdbc y TDbOdbcDirect me funciona bastante bien.

De todas maneras si que tengo previsto el probar ADO, y si funciona segun lo esperado ir migrando.

Por lo leido, es bastante mas rapido, y eso siempre viene bien.


Biel :

Para cuando decidas usa ADO la solución a tu problema se resuelve evaluando el valor de EditMode

EditMode Señala el estado de edición de un registro. Existen tres posibilidades:

Code: Select all  Expand view
adEditNone.         El registro no se encuentra editado.
adEditInProgress. El registro se encuentra editado, pero no se ha grabado.
adEditAdd.           Se ha llamado al método AddNew


¡ Más sencillo no se puede ! :D