Pregunta para quienes tengan experiencia usando foxyDB. Estoy usando específicamente la versión 3.01
Estoy intentando hacer lo siguiente:
- Utilizo la función query de FoxyDB para traer una tabla de SQL Server vacía a la que luego le voy a insertar un valor
- Realizo un insert mediante sentencia de FoxPro (nada fuera de los normal un insert normal de VFP)
- Luego procedo a grabar en la tabla de SQL usando las funciones CursorChanges, para saber si realmente hay cambios, Update, para que actualice el cambio en sql, y Commit, para que aplique finalmente el cambio en sql
Hasta aquí todo bien, mi problema es que necesito saber cual fue el identity que genero SQL al momento de aplicar el commit. Estoy viendo que FoxyDb tiene las siguientes propiedades:
- id_last – Número del Ultimo Id Registrado después de un Insert Into
- id_Active – Si se esta recuperando el Ultimo ID para evitar una desconexión.
- id_Code – Numero de código único generado
- id_name – Nombre del Campo ID Autoincremental Primary Key ( “id” default)
El problema es que no he logrado hacer que con ninguna de esta me retorne el identity creado. FoxyDb por defecto usa el nombre id para su identity, pero en mi caso no se llaman así.
También vi las siguientes funciones
- Id – Obtener el Ultimo ID al insertar un Registro Nuevo, el valor se obtiene en la propiedad id_Last
- Code – Obtener Código Único (Correlativo)
- UUID – Generar valor UUID (Identificador Universal único)
Pero di igual manera tampoco me funcionan. También intente hacer un refresh pero al final el sistema es multiusuario y nada me asegura que cuando realice el refresh, ese valor coincida con el ultimo generado por el usuario que inserto el registro.
En resumen, quiero saber cual es el Identity que se generó al momento de insertar la información en la Base de Datos de Sql
Mas abajo les envio un pequeño ejemplo de lo que intento hacer
- MiTabla: Nombre de la tabla de SQL
- Campo1 y Campo2: Campos de la tabla de SQL
- lEsNuevo: Lo uso para saber si se esta insertando un nuevo campo o si lo estoy actualizando (lo uso por lo general para otros propositos)
- IdCampo: Nombre del campo que es identity Column y es AutoIncrementable
oConn = Newobject("FoxyDb","FoxyDb.prg")
lnOk = oConn.Connect()
If lnOk
lEsNuevo = .T.
oConn.Query("select * from MiTabla where 1 = 2","MiTabla","MiTabla")
oConn.CursorEdit("MiTabla")
Insert Into MiTabla(campo1,;
campo2);
values("Valor1",;
"Valor2")
If oConn.CursorChanges("MiTabla")
If oConn.Update("MiTabla","IdCampo")
If oConn.Commit()
If lEsNuevo
oConn.Refresh("MiTabla")
oConn.CursorEdit("MiTabla")
Endif
Endif
Endif
Endif
Endif