Gracias a la ayuda de Armando, Adolfo y otros foristas, ya tengo casi convertida una pequeña aplicación de DBFCDX a MySQL. Me he hecho una clase a partir de TDatabase, que permite usar los métodos blank(),load(),save(),modified() etc, tan cómodos cuando se están modificando campos en un diálogo. Seguramente ya existiera algo parecido, pero no lo he encontrado. No he puesto todos los métodos de TDatabase, porque la mayoría como eof() skip(), etc, se pueden escribir directamente con el método ADO equivalente.
El uso puede ser similar a este ejemplo, después de conectar con MySQL y crear un RecordSet:
- Code: Select all Expand view
local op
op := TRecordSet():New(oRecordSet)
...
...
if lAppend
op:blank()
else
op:load()
endif
...
...
REDEFINE GET oGet[01] VAR op:codigo ID IDC_EDIT1 OF oDlg
REDEFINE GET oGet[02] VAR op:precio ID IDC_EDIT2 OF oDlg
REDEFINE GET oGet[03] VAR op:coste ID IDC_EDIT3 OF oDlg
...
...
REDEFINE BUTTON ID IDOK OF oDlg action (lSave:=.t. , oDlg:end() )
REDEFINE BUTTON ID IDCANCEL OF oDlg action (lSave:=.f. , oDlg:end() )
...
if lSave
if lAppend
op:append()
endif
op:save()
endif
La clase se puede descargar de aquí:
http://www.box.net/shared/5iu17n32pi
Un par de preguntas:
1. ¿ como se hace un softseek cuando el campo es numérico?
oRs:Find("fac = "+str(nFac),,1) no hace softseek.
2. Para cuando la conexión es lenta, ¿alguien tiene modificado xbrowse para que sólo cargue unos 100 registros de la tabla y que vaya repitiendo el select a medida que el puntero se acerca al final del select precargado?
Muchas gracias
Alvaro