Hace unas semanas respondi un correo similar a otro colega del grupo.
Te anexo aqui el texto de esa respuesta, que espero sea de utilidad
para ti tambien.
Los que venimos de un antepasado xBase como dBaseIII o FoxBase o
Clipper, crecimos con estos paradigmas:
a) Ubicar un registro en una tabla:
USE tabla ORDER indice
SEEK clave
b) Ingresar un nuevo registro en la tabla
USE tabla
APPEND BLANK
REPLACE campo1 WITH valor1, campo2 WITH valor2
c) Actualizar un registro en una tabla
USE tabla
SEEK clave
REPLACE campo1 WITH valor1, campo2 WITH valor2
d) Eliminar un registro en una tabla
USE tabla
SEEK clave
DELETE
o
USE tabla
DELETE FOR condición
e) Listar registros en una tabla
USE tabla
SCAN FOR condición
ENDSCAN
o
SEEK clave
SCAN WHILE condición
ENDSCAN
Sin embargo, en la epoca moderna de VFP, estos paradigmas deberían ser
cambiados para aprovechar el motor SQL que se incluyó a partir de
FoxPro 2.0:
a) Ubicar un registro en una tabla:
SELECT * FROM tabla WHERE campo = clave INTO CURSOR cursor
b) Ingresar un nuevo registro en la tabla
INSERT INTO tabla (campo1, campo2) VALUES (valor1, valor2)
c) Actualizar un registro en una tabla
UPDATE tabla SET campo1 = valor1, campo2 = valor2 WHERE campo = clave
d) Eliminar un registro de una tabla
DELETE FROM tabla WHERE campo = clave
o
DELETE FROM tabla WHERE condición
e) Listar registros de una tabla
SELECT * FROM tabla WHERE condición INTO CURSOR cursor
SELECT cursor
SCAN
ENDSCAN
Esta práctica hace mucho más sencilla luego la transición a un esquema
cliente-servidor, pues ya el sistema fue diseñado de esa
forma (sobre todo si los accesos a la Base de Datos se encapsulan en
procedimientos o métodos de una clase central).
Por ejemplo, si en lugar de registrar un cliente nuevo así:
INSERT INTO clientes (codigo, nombre) VALUES (cCodigo, cNombre)
lo hacemos asi:
lResult = bizCrearCliente(cCodigo, cNombre)
PROCEDURE bizCrearCliente(pcCodigo, pcNombre)
INSERT INTO clientes (codigo, nombre) VALUES (pcCodigo, pcNombre)
ENDPROC
después, podemos migrar a SQL Server nuestro sistema simplemente
adaptando la funcion bizCrearCliente:
PROCEDURE bizCrearCliente
PARAMETERS pcCodigo, pcNombre
Resultado = SQLEXEC(goDataConn, "INSERT INTO clientes (codigo,
nombre) VALUES (?pcCodigo, ?pcNombre)")
ENDPROC
Incluso mejor; si creamos bizCrearCliente como un método de una clase
en lugar de como un procedure normal, entonces al inicio de nuestro
sistema podríamos hacer algo como esto:
PUBLIC goDBHelper
DO CASE
CASE cDBEngine = "VFP"
goDBHelper = CREATEOBJECT("VFPDatabaseCliente")
CASE cDBEngine = "SQLSERVER"
goDBHelper = CREATEOBJECT("SQLServerDatabaseCliente")
ENDCASE
y al momento de crear un cliente simplemente haríamos:
lOK = goDBHelper.bizCrearCliente(cCodigo, cNombre)
y no sabríamos (ni nos importaría) si ese cliente se está grabando en
una tabla DBF o en una tabla SQL Server. De hecho, podríamos hacer que
nuestro sistema fuera compatible con MySQL simplemente programando una
clase MySQLDatabaseCliente y haciendo el cambio apropiado en el inicio
del sistema; el resto del sistema seguiría funcionando sin necesidad
de hacer ningún cambio.
Espero estas cortas ideas te sean de utilidad para orientarte en lo
que quieres hacer.
Víctor Espina.