Table of contents
1. Intoducción
2. Arquitectura
3. Comparación
4. Propiedades
4.1 cConnType
4.2 cCursorLocation
4.3 cDriver
4.4 lFetchRecords
4.5 lUseCursorSchema
4.6 lShowError
4.7 lWorkConnected
4.8 lWorkAsync
4.9 nRecordCount_Progress
4.10 oScripts
4.10.1 Date
4.10.2 LastId
4.10.3 TablePk
4.10.4 Tables
5. Métodos
5.1 BeginTrans
5.2 CloseTable
5.3 CommitTrans
5.4 Connect
5.5 Disconnect
5.6 GetCodUnico
5.7 GetDatabase
5.8 GetDate
5.9 GetPort
5.10 GetServer
5.11 GetVersion
5.12 IsConnected
5.13 IsTransActive
5.14 LoadProps
5.15 LoadTables
5.16 OnAppError
5.17 OnError
5.18 OpenTable
5.19 RevertTable
5.20 RollbackTrans
5.21 RS_MoveComplete
5.22 RS_EndOfRecordset
5.23 SaveProps
5.24 SetParamValue
5.25 SqlAddParam
5.26 SqlExecProc
5.27 SqlExecute
5.28 SqlGetRows
5.29 SqlGetRecordSet
5.30 SqlParams
5.31 SqlPrepare
5.32 SqlUpdate
5.33 SqlViewExecute
5.34 SqlViewPrepare
5.35 UnLock
5.36 UpdateTable
5.37 ValidBeforeFetch
6. Ejemplos
6.1 Abrir/Cerrar Tablas
6.2 Establecer Conexión
6.3 Transacciones
6.4 Vistas de Tablas
7. Acerca De
7.1 Contacto
7.2 Copyright
7.3 Contrato de Licencia
7.4 Descargas
7.5 Versionado
2. Arquitectura
3. Comparación
4. Propiedades
4.1 cConnType
4.2 cCursorLocation
4.3 cDriver
4.4 lFetchRecords
4.5 lUseCursorSchema
4.6 lShowError
4.7 lWorkConnected
4.8 lWorkAsync
4.9 nRecordCount_Progress
4.10 oScripts
4.10.1 Date
4.10.2 LastId
4.10.3 TablePk
4.10.4 Tables
5. Métodos
5.1 BeginTrans
5.2 CloseTable
5.3 CommitTrans
5.4 Connect
5.5 Disconnect
5.6 GetCodUnico
5.7 GetDatabase
5.8 GetDate
5.9 GetPort
5.10 GetServer
5.11 GetVersion
5.12 IsConnected
5.13 IsTransActive
5.14 LoadProps
5.15 LoadTables
5.16 OnAppError
5.17 OnError
5.18 OpenTable
5.19 RevertTable
5.20 RollbackTrans
5.21 RS_MoveComplete
5.22 RS_EndOfRecordset
5.23 SaveProps
5.24 SetParamValue
5.25 SqlAddParam
5.26 SqlExecProc
5.27 SqlExecute
5.28 SqlGetRows
5.29 SqlGetRecordSet
5.30 SqlParams
5.31 SqlPrepare
5.32 SqlUpdate
5.33 SqlViewExecute
5.34 SqlViewPrepare
5.35 UnLock
5.36 UpdateTable
5.37 ValidBeforeFetch
6. Ejemplos
6.1 Abrir/Cerrar Tablas
6.2 Establecer Conexión
6.3 Transacciones
6.4 Vistas de Tablas
7. Acerca De
7.1 Contacto
7.2 Copyright
7.3 Contrato de Licencia
7.4 Descargas
7.5 Versionado
1. Intoducción
Desarrolla tus aplicaciones en VFP mediante una
arquitectura Cliente-Servidor
Data Access es una librería integramente desarollada bajo Visual FoxPro 9.0 para poder trabajar de forma nativa con los siguientes motores de datos:
Visual FoxPro
Firebird
MS Access
6
1
2
3
4
5
7
Solo
necesitas instalar el DRIVER de ODBC o
ADO del motor de base de datos (SQL SERVER / MYSQL SERVER / POSTGRESQL /
Firebird), ya que DataAccess utiliza este
driver para realizar las conexiones hacia los servidores de
datos.
Esta
librería es totalmente transparente al uso de
instrucciones
nativas de VFP, es decir, que permite seguir usando los
comandos, REPLACE, APPEND BLANK, DELETE, etc., como así también haciendo que la
propiedad ControlSource de un control esté vinculada a un campo. Así mismo permite
trabajar con sesiones de datos privadas tal como lo provee
VFP.
Un
aspeto importante de este componente es que soporta transacciones híbridas, es decir, que
dentro de una misma transcación pueden incluirse diferentes sesiones de
datos VFP y actualizaciones de datos al servidor mediante instrucciones
SQL sin hacer uso de un cursor, todo lo cual, estará conenido dentro
de una transcacción y en caso de ocurrir algún error, podrá deshacerse por
completo los cambios realizados.
[TOP]
2. Arquitectura
Arquitectura

ü
Independencia
del Gestor / Motor de Bases de Datos utilizado para almacenar la
información.
ü
Facilidad
para realizar el Mantenimiento (Preventivo y Correctivo) del
Sistema.
ü
Facilidad
para actualizar nuevas versiones del sistema entre todos los
usuarios.
ü
Promueve
la Reusabilidad de los componentes existentes en el desarrollo de
nuevas aplicaciones.
ü
Facilidad
de ser desarrollado en equipos distantes.
Diagrama de
clases de la Capa de Acceso a Datos (Data Access)
[TOP]
3. Comparación
Tabla comparativa de las características que soportan los diferentes servidores de base de datos
Funcionalidad/Caracteristica
|
MySQL
|
Interbase
|
SQL Server
|
SQLite
|
Firebird
|
PostgreSQL
|
Oracle
|
OO/R (DBMS)
|
R
|
R
|
R
|
R
|
OO
|
OO
| |
Esquemas
|
NO
|
NO
|
2005
|
NO
|
SI
|
SI
| |
Funciones
|
SI
|
SI
|
SI
|
SI
|
SI
| ||
Procedimientos
almacenados
|
SI
|
SI
|
SI
|
SI
|
SI
| ||
Vistas
|
SI (Versión
Beta)
|
SI
|
SI
|
SI
|
SI
| ||
Transacciones
|
Tablas BDB e
InnoDB
|
SI
|
SI
|
SI
|
SI
| ||
Claves Foráneas
|
Tablas
InnoDB
|
SI
|
SI
|
SI
|
SI
| ||
Triggers
|
SI
|
SI
|
SI
|
SI
|
SI
| ||
Campos
Autoincrementales
|
SI
|
NO
|
SI
|
SI (secuencia
autom)
|
NN
| ||
Sequencias
|
NO
|
SI
|
NO
|
SI
|
SI
| ||
Plataforma
Windows
|
SI
|
SI
|
SI
|
SI
|
SI
|
SI
|
SI
|
Plataforma
Linux
|
SI
|
SI
|
NO
|
SI
|
SI
|
SI
|
SI
|
Conexiones SSL
(TCP/IP)
|
SI
|
SI
|
|||||
Supera prueba
ACID
|
NO
|
SI
|
SI
|
SI
|
|||
Ciclo de
Desarrollo
|
Constante
|
Largo
|
|||||
Licencias
Freeware/Licencia
|
L
|
L
|
L
|
F
|
F
|
F
|
L
|
4. Propiedades
4.1 cConnType
- cConnType = ODBC
Conexión de sobre la base de datos controlado por la biblioteca de ODBC correspondiente.
- cConnType = ADO (Default)
Conexión de sobre la base de datos controlado por la biblioteca de ADO correspondiente.
Vea También:
[TOP]
4.2 cCursorLocation
Un cursor en el lado servidor equivale a la arquitectura más tradicional (es también menos escalable), mientras que los cursores del lado cliente se acercan más al modelo "desconectado" de Internet.
- cCursorLocation = C
Cursor controlado por la biblioteca de ADO del cliente.
- cCursorLocation = S (Default)
Cursor controlado por el servidor.
Vea
También:
[TOP]
4.3 cDriver
Vea También:
4.4 lFetchRecords
- lFetchRecords = .T. (Default)
El motor de acceso a datos recupera los datos hacia el cliente desde el motor de base de datos.
- lFetchRecords = .F.
El motor de acceso a datos no recuperará los datos.
Vea También:
4.5 lUseCursorSchema
- lUseCursorSchema = .T.
Data Access determinará el tipo de dato que corresponde a VFP para cada uno de los campos recuperados de la base de datos. Esto resulta ultil trabajando con algunos motores de base de datos donde el resultado de la consulta tiene algunos campos que no especifican el tipo de dato.
- lUseCursorSchema = .F. (Default)
Visual FoxPro mapea nativamente los tipos de datos correspondientes a los cursores de VFP de acuerdo a los campos recuperados de la base de datos.
Vea
También:
[TOP]
4.6 lShowError
- lShowError = .T. (Default)
Cuando ocurre un error, se muestran los mensajes al usuario en pantalla.
- lShowError = .F.
No se muestran los mensajes al usuario cuando ocurre un error.
Vea
También:
[TOP]
4.7 lWorkConnected
- lWorkConnected = .T.
El motor de acceso a datos permanece conectado al motor de base de datos durante el ciclo de vida de la instancia. Es decir que para todas las comunicaciones con el motor de base de datos se usa una misma conexión.
- lWorkConnected = .F. (Recomendado)
El motor de acceso a datos permanece desconectado del motor de base de datos. En este caso cuando se requiere, se establece una conexión con el motor de base de datos, se usa, y luego se desconecta.
Vea
También:
4.8 lWorkAsync
- lWorkAsync = .T.
El motor de acceso a datos no espera el resultado de la respuesta del motor de base de datos para continuar con la ejecución de la aplicación.
- lWorkAsync = .F. (Recomendado)
El motor de acceso a datos espera el resultado de la respuesta del motor de base de datos para continuar con la ejecución de la aplicación.
Vea
También:
4.9 nRecordCount_Progress
Vea
También:
[TOP]
4.10 oScripts
A continuación se enumeran los métodos disponibles por la clase Scripts:
[TOP]
4.10.1 Date
Date() |
Parámetros:
Ninguno
Valor
Retornado:
Carácter: Script que obtiene la fecha y hora del motor de base de datos.
Vea
También:
[TOP]
4.10.2 LastId
LastId() |
Parámetros:
Ninguno
Valor Retornado:
Carácter: Script
Vea También:
[TOP]
4.10.3 TablePk
TablePk(cTable) |
Parámetros:
cTable: Nombre de la tabla que se desea obtener los campos que componen la clave primaria.
Valor Retornado:
Carácter: Lista de campos separados por "," que componen la clave primaria.
Vea También:
[TOP]
4.10.4 Tables
Tables() |
Parámetros:
Ninguno
Valor Retornado:
Carácter: Script para obtener la lista de tablas de la base de datos.
Vea También:
[TOP]
5. Métodos
- BeginTrans()
- CloseTable()
- CommitTrans()
- Connect()
- Disconnect()
- GetCodUnico()
- GetDataBase()
- GetPort()
- GetServer()
- GetVersion()
- IsConnected()
- IsTransActive()
- LoadProps()
- LoadTables()
- OpenTable()
- RevertTable()
- RollbackTrans()
- RS_MoveComplete()
- RS_EndOfRecordSet()
- SaveProps()
- SetParamValue()
- ShowMessage()
- SqlAddParam()
- SqlExecProc()
- SqlExecute()
- SqlGetRows()
- SqlGetRecordSet()
- SqlParams()
- SqlPrepare()
- SqlUpdate()
- SqlViewExecute()
- SqlViewPrepare()
- UpdateTable()
Aclaraciones:
- Los parámetros opcionales se indican entre corchetes.
[TOP]
5.1 BeginTrans
BeginTrans() |
Parámetros:
Ninguno
Valor
Retornado:
Lógico .T. Si fue realizada con éxito la operación.
.F. Ocurrió algún error al realizar la operación.
Vea También:
5.2 CloseTable
CloseTable(cAlias,nDataSessionID) |
Parámetros:
cAlias: Nombre del cursor que se desea cerrar.
nDataSessionId: Número de la sesion de datos donde se encuentra el cursor a cerrar.
Valor Retornado:
Lógico .T. Si fue realizada con éxito la operación.
.F. Ocurrió algún error al realizar la operación.
Vea También:
[TOP]
5.3 CommitTrans
CommitTrans() |
Parámetros:
Ninguno
Valor Retornado:
Lógico .T. Si fue realizada con éxito la operación.
.F. Ocurrió algún error al realizar la operación.
Vea También:
[TOP]
5.4 Connect
Connect(cServer, nPort, cDataBase, cUser, cPwd, cParams) |
Parámetros:
cServer: Dirección IP o Nombre del servidor del motor de base de datos.
[nPort]: Puerto en el que escucha el motor de base de datos.
cDataBase: Base de datos a la cual conectarse
cUser: Usuario del motor de base de datos
cPwd: Contraseña del usuario del motor de base de datos
[cParams]: Parametros a agregar al string de conexion
Valor Retornado:
Observaciones:Lógico .T. Si fue realizada con éxito la operación.
.F. Ocurrió algún error al realizar la operación.
Estos parámetros varían dependiendo del motor de base de datos sobre el cual se está realizando la conexión.
SqlServer: Connect(tcServer, [tnPort], tcDataBase, tcUser, tcPwd, [tcParams])
PostgreSql: Connect(tcServer, [tnPort], tcDataBase, tcUser, tcPwd, [tcParams])
MySql: Connect(tcServer, [tnPort], tcDataBase, tcUser, tcPwd, [tcParams])
Firebird: Connect(cDataBase, cUser, cPwd, [tcParams])
Visual FoxPro: Connect(cDataBase, [tcParams])
Vea También:
[TOP]
5.5 Disconnect
Disconnect() |
Parámetros:
Ninguno
Valor Retornado:
Lógico .T. Si fue realizada con éxito la operación.
.F. Ocurrió algún error al realizar la operación.
Vea También:
[TOP]
5.6 GetCodUnico
GetCodUnico(cTable) |
Parámetros:
cTable: Nombre de la tabla que se desea obtener los campos que componen la clave primaria.
Valor Retornado:
Carácter: Lista de campos separados por "," que componen la clave primaria.
Vea También:
[TOP]
5.7 GetDatabase
GetDatabase() |
Parámetros:
Ninguno
Valor Retornado:
Carácter
Vea También:
[TOP]
5.8 GetDate
GetDate(cType) |
Parámetros:
[cType]: Tipo de datos que desea obtener como resultado de la función. Si no se pasa ningún parámetro se retorna la fecha actual.
D: Fecha actual del servidor.
DT: Fecha y Hora actual del servidor.
T: Hora actual del servidor.
Valor Retornado:
Fecha, Fecha y Hora u Hora dependiendo del parámetro recibido.
Vea También:
[TOP]
5.9 GetPort
GetPort() |
Parámetros:
Ninguno
Valor Retornado:
Numércio
Vea También:
5.10 GetServer
GetServer() |
Parámetros:
Ninguno
Valor Retornado:
Carácter
Vea También:
5.11 GetVersion
GetVersion() |
Parámetros:
Ninguno
Valor Retornado:
Carácter
Vea También:
5.12 IsConnected
IsConnected() |
Parámetros:
Ninguno
Valor Retornado:
Lógico .T. Si fue realizada con éxito la operación.
.F. Ocurrió algún error al realizar la operación.
Vea También:
[TOP]
5.13 IsTransActive
IsTransActive() |
Parámetros:
Ninguno
Valor Retornado:
Lógico .T. Si fue realizada con éxito la operación.
.F. Ocurrió algún error al realizar la operación.
Vea También:
[TOP]
5.14 LoadProps
LoadProps() |
Parámetros:
Ninguno
Valor Retornado:
Lógico .T. Si fue realizada con éxito la operación.
.F. Ocurrió algún error al realizar la operación.
Vea También:
[TOP]
5.15 LoadTables
LoadTables() |
Parámetros:
Ninguno
Valor Retornado:
Lógico .T. Si fue realizada con éxito la operación.
.F. Ocurrió algún error al realizar la operación.
Vea También:
5.16 OnAppError
onAppError() |
Parámetros:
Vea También:
5.17 OnError
onError(oError) |
Parámetros:
oError: Objeto con el detalle del error ocurrido.
Vea También:
5.18 OpenTable
OpenTable(cTabla, nBuffer, cAlias, nDataSession) |
Parámetros:
cTabla: Tabla del sistema a abrir
[nBuffer]: Tipo de buffer a usar al momento de abrir la tabla
[cAlias]: Alias a asignar a la tabla a abrir, caso contrario, se usa el mismo nombre de la tabla.
[nDataSession]: Session de datos a abrir la tabla, caso contrario, se abre en la session de datos Global.
Valor Retornado:
Lógico .T. Si fue realizada con éxito la operación.
.F. Ocurrió algún error al realizar la operación.
Vea También:
[TOP]
5.19 RevertTable
RevertTable(cAlias, nDataSession) |
Parámetros:
[cAlias]: Alias del cursor a deshacer los cambios, caso contrario, se usa el cursor seleccionado.
[nDataSession]: Session de datos donde se encuentra el cursor, caso contrario, se toma la session de datos Global.
Valor Retornado:
Lógico .T. Si fue realizada con éxito la operación.
.F. Ocurrió algún error al realizar la operación.
Vea También:
5.20 RollbackTrans
RollbackTrans() |
Parámetros:
Ninguno
Valor Retornado:
Lógico .T. Si fue realizada con éxito la operación.
.F. Ocurrió algún error al realizar la operación.
Vea También:
5.21 RS_MoveComplete
rs_MoveComplete(adReason, pError, adStatus, pRecordset) |
Parámetros:
[pRecordSet]: Instancia de la clase "ADODB.RecordSet" que contiene los datos a recuperar.
Valor Retornado:
EjemploLógico .T. Si fue realizada con éxito la operación.
.F. Ocurrió algún error al realizar la operación.
WAIT WINDOW " " + STR(pRecordset.AbsolutePage/pRecordset.PageCount * 100,3,0) + "%" NOWAIT
Vea También:
[TOP]
5.22 RS_EndOfRecordset
rs_EndOfRecordset(fMoreData, adStatus, pRecordset) |
Parámetros:
[pRecordSet] : Instancia de la clase "ADODB.RecordSet" que contiene los datos a recuperar.
Valor Retornado:
Lógico .T. Si fue realizada con éxito la operación.
.F. Ocurrió algún error al realizar la operación.
Vea También:
[TOP]
5.23 SaveProps
SaveProps() |
Parámetros:
Ninguno
Valor Retornado:
Lógico .T. Si fue realizada con éxito la operación.
.F. Ocurrió algún error al realizar la operación.
Vea También:
[TOP]
5.24 SetParamValue
SetParamValue(nHwnd, cName, uValue) |
Parámetros:
nHwnd: Manejador de la Consulta SQL a agregarle el parametro
cName: Nombre del parametro
uValue: Valor a asignar al parametro
Valor Retornado:
Lógico .T. Si fue realizada con éxito la operación.
.F. Ocurrió algún error al realizar la operación.
Vea También:
5.25 SqlAddParam
SqlAddParam(nHwnd, cName, cType, uValue) |
Parámetros:
nHwnd: Manejador de la Consulta SQL a agregarle el parametro
cName: Nombre del parametro
cType: Tipo de datos del parametro
[uValue]: Si se desea asignar el valor al parametro
Valor Retornado:
Lógico .T. Si fue realizada con éxito la operación.
.F. Ocurrió algún error al realizar la operación.
Vea También:
5.26 SqlExecProc
SqlExecProc(cAlias, nDataSession, cProcedure, uParams ...) |
Parámetros:
cAlias: Nombre del cursor donde guardar los datos retornados.
[nDataSession]: Session de datos donde crear el cursor, caso contrario,se crea en la session de datos Global.
cProcedure: Nombre del procedimiento almacenado a ejecutar en el servidor.
[uParams ...]: Parametros que deben ser pasados al procedimiento almacenado en el orden correspondiente.
Valor Retornado:
Lógico .T. Si fue realizada con éxito la operación.
.F. Ocurrió algún error al realizar la operación.
Vea También:
5.27 SqlExecute
SqlExecute(nHwnd, cAlias, lEndTrans) |
Parámetros:
nHwnd: Manejador de la Consulta SQL a ejecutar en el servidor.
[cAlias]: Nombre del cursor donde guardar los datos retornados.
[lEndTrans]: Indica que es la ultima operacion y se puede destruir el objeto asociado al preparar la consulta. Valor por defecto: .T.
Valor Retornado:
Lógico .T. Si fue realizada con éxito la operación.
.F. Ocurrió algún error al realizar la operación.
Vea También:
5.28 SqlGetRows
SqlGetRows(cSQL, cAlias, nDataSession, nMaxRecords, nCommTimeout) |
Parámetros:
cSQL: Consulta SQL a ejecutar en el servidor.
cAlias: Nombre del cursor donde guardar los datos retornados.
[nDataSession]: Session de datos donde crear el cursor, caso contrario,se crea en la session de datos Global.
[nMaxRecords]: Cantidad de registros a traer como maximo.
[nCommTimeout]: Tiempo de espera en segundos de respuesta al ejecutar la consulta.
Valor Retornado:
Lógico .T. Si fue realizada con éxito la operación.
.F. Ocurrió algún error al realizar la operación.
Vea También:
5.29 SqlGetRecordSet
SqlGetRecordSet(cSQL, nCommTimeout) |
Parámetros:
cSQL: Consulta SQL a ejecutar en el servidor.
[nCommTimeout]: Tiempo de espera en segundos de respuesta al ejecutar la consulta.
Valor Retornado:
Objeto: Instancia de la clase "ADOdb.RecordSet", si ocurre algún error al realizar la operación se retorna NULL.
Vea También:
5.30 SqlParams
SqlParams(nHwnd, cParams, cType) |
Parámetros:
nHwnd: Manejador de la Consulta SQL a agregarle el parametro.
cParams: Lista de los Nombres de los parametros. "Param1, Param2, Param3, ...".
cType: Tipo de datos de los parametros, caso contrario,el primer caracter del nombre del parametro indica el tipo.
Valor Retornado:
Lógico .T. Si fue realizada con éxito la operación.
.F. Ocurrió algún error al realizar la operación.
Vea También:
5.31 SqlPrepare
SqlPrepare(cSQL, nDataSession) |
Parámetros:
cSQL: Consulta SQL a ejecutar en el servidor.
[nDataSession]: Session de datos donde crear el cursor, caso contrario,se crea en la session de datos Global.
Valor Retornado:
Lógico .T. Si fue realizada con éxito la operación.
.F. Ocurrió algún error al realizar la operación.
Vea También:
5.32 SqlUpdate
SqlUpdate(cSQL, nCommTimeout) |
Parámetros:
cSQL: Consulta SQL a ejecutar en el servidor
[nCommTimeout]: Tiempo de espera en segundos de respuesta al ejecutar la consulta
Valor Retornado:
Lógico .T. Si fue realizada con éxito la operación.
.F. Ocurrió algún error al realizar la operación.
Vea También:
5.33 SqlViewExecute
SqlViewExecute(nHwnd) |
Parámetros:
nHwnd: Manejador de la Consulta SQL a ejecutar en el servidor.
Valor Retornado:
Lógico .T. Si fue realizada con éxito la operación.
.F. Ocurrió algún error al realizar la operación.
Vea También:
5.34 SqlViewPrepare
SqlViewPrepare(cTabla, cCampos, cFiltro, cAlias, nBuffer, nDataSession, nMaxRecords, lExecute) |
Parámetros:
cTabla: Tabla del sistema a abrir.
[cCampos]: Lista de campos a traer de la tabla.
[cFiltro]: Filtro a aplicar a los datos antes de traer los datos.
cAlias: Alias a asignar a la vista.
[nBuffer]: Tipo de buffer a usar al momento de abrir la tabla.
[nDataSession]: Session de datos donde crear el cursor, caso contrario,se crea en la session de datos Global.
[nMaxRecords]: Cantidad de registros a traer como maximo.
[lExecute]: Ejecutar la vista luego de prepararla.
Valor Retornado:
Lógico .T. Si fue realizada con éxito la operación.
.F. Ocurrió algún error al realizar la operación.
Vea También:
5.35 UnLock
UnLock(cLicenseName,cLicenseKey) |
Parámetros:
cLicenseName: Nombre de la entidad para la cual fue entregada la licencia de uso.
cLicenseKey: Clave que fué otorgada para la entidad como la licencia de uso.
Valor Retornado:
Lógico .T. Si fue realizada con éxito la operación.
.F. El nombre o clave de registro no son válidos.
Vea También:
5.36 UpdateTable
UpdateTable(cAlias, nDataSession) |
Parámetros:
[cAlias]: Alias del cursor a actualizar los cambios.
[nDataSession]: Session de datos donde se encuentra el cursor, caso contrario, se toma la session de datos Global
Valor Retornado:
Lógico .T. Si fue realizada con éxito la operación.
.F. Ocurrió algún error al realizar la operación.
Vea También:
5.37 ValidBeforeFetch
ValidBeforeFetch(nRecordsCount, oRS) |
Parámetros:
[nRecordsCount]: Cantidad de registros que se van a recuperar desde el motor de base de datos.
[oRS]: Instancia de la clase "ADODB.RecordSet" que contiene los datos a recuperar.
Valor Retornado:
Lógico .T. Si fue realizada con éxito la operación.
.F. Ocurrió algún error al realizar la operación.
Vea También:
[TOP]
6. Ejemplos
Cabe señalar que en todos los ejemplos el objeto "oMotorDB" al cual se hace referencia, es una instancia de la clase DataAccess. Para ver un ejemplo de cómo crear una instancia y establer una conexión con el servidor de base de datos ir a: Establecer Conexión.
6.1 Abrir/Cerrar Tablas
* Abro la tabla
clientes completa con buffer de tablas.
IF
NOT oMotorDB.OpenTable("clientes",5)
RETURN
.F.
ENDIF
* Realizo los
cambios necesarios usando instrucciones nativas de
FOX.
SELECT clientes
REPLACE nombre WITH "Juan
Fernandez"
* Actualizo los
datos modificados en la tabla clientes.
RETURN
.F.
ENDIF
* Finalmente cierro
la tabla clientes.
oMotorDB.CloseTable("clientes") && Esta
instrucción puede reemplazarse por USE IN clientes
Vea También:
[TOP]
6.2 Establecer Conexión
PUBLIC oMotorDBLOCAL loMotorAdmin, lnProvider* Defino que voy a usar "MsSql Server 2000" como servidor de base de datos.lnProvider = 1* Creo una instancia del administrador de "dataAccess"loMotorAdmin = NEWOBJECT("motordb_admin","dataaccess.vcx","dataaccess.app")* Creo una instancia de la clase "dataAccess"oMotorDB = loMotorAdmin.CreateMotorDb(lnProvider)oMotorDB.Connect("IP-Servidor",Puerto,"Base de Datos","Usuario","Contraseña","Parámetros opcionales")
Vea También:
[TOP]
6.3 Transacciones
A continuación se
muestra como Iniciar, Finalizar y Deshacer una Transacción. Es importante
señalar que si existieran transacciones anidadas y dentro de alguna de ellas
ocurre un error y se hace un RollbackTrans() esto ocasionará que se deshagan
todas las transacciónes abiertas, sin importar el nivel de anidamiento, esto
será aplicado consecuentemente a las sesiones de datos involucradas.
* Defino el
inicio de la transaccion.
oMotorDB.BeginTrans()
*
Realizo instrucciones de actualización al servidor de
datos.
IF
NOT oMotorDB.SqlUpdate(“DELETE
FROM clientes WHERE codcli =
15 ”
)
*
En caso de error cierro la transacción
abierta.
oMotorDB.RollbackTrans()
RETURN
.F.
ENDIF
IF
NOT oMotorDB.SqlUpdate(“DELETE
FROM iva_vent WHERE codcli = 15 ”
)
*
En caso de error cierro la transacción
abierta.
RETURN
.F.
ENDIF
* Si no ocurrieron
erroes de actualización de datos.
* finalizo la
transacción haciendo un
commitTrans().
oMotorDB.CommitTrans()
Vea También:
[TOP]
6.4 Vistas de Tablas
* Preparo para traer
los campos apellido, nombre y cuit de la tabla clientes
* que lo voy a
filtrar por el campo apellido y que el resultado lo
almacene
* en el cursor
curCli.
lnHwnd = oMotorDB.SqlViewPrepare("clientes","apellido, nombre,
cuit","apellido LIKE
?"
,"curCli")
* Defino el valor
del parámetro de filtro.
IF
NOT o.SqlAddParam(lnHwnd,"Ape","C","FER%")
RETURN
.F.
ENDIF
* Finalmente ejecuto
la vista usando el manejador obtenido al
prepararla.
IF NOT o.SqlViewExecute(lnHwnd)
RETURN .F.
ENDIF
* Realizo los
cambios necesarios usando instrucciones nativas de
FOX.
SELECT curCli
REPLACE apellido WITH
"Fernandez" ALL
* Actualizo los
datos modificados en la tabla clientes.
IF
NOT oMotorDB.UpdateTable("curCli")
RETURN
.F.
ENDIF
* Finalmente cierro
el cursor.
USE IN curCli
Vea También:
[TOP]
7. Acerca De
En esta
sección encontrará información acerca del soporte técnico, copyright del
Data Access y links útiles de
descargas.
7.1 Contacto
Nombre del
Producto Data
Access.
Condiciones Los servicios de
soporte técnico de Data
Access están
sujetos a los términos y condiciones vigentes, y pueden cambiar sin aviso
previo.
![]() |
Obtenga
ayuda de un profesional de soporte a través del MSN Messenger o
E-Mail. Contactos MSN Messenger
E-Mail
Web
|
7.2 Copyright
La información contenida en este
documento está sujeta a modificaciones sin previo aviso. Es responsabilidad del
usuario el cumplimiento de todas las leyes de derechos de autor aplicables. Sin
limitar los derechos del copyright, ninguna parte de este documento puede ser
reproducida, almacenada o introducida en ningún sistema de recuperación,
transmitida de ninguna forma ni por ningún medio (ya sea electrónico, mecánico,
mediante fotocopias o grabaciones) con ningún propósito, sin la previa
autorización por escrito del autor.
7.3 Contrato de Licencia
El CREADOR otorga al usuario (en adelante el "LICENCIATARIO") esta licencia de uso de carácter exclusivo; la concede solamente para los componentes elaborados por el CREADOR y que son solo de carácter personal, siendo en todo caso para su utilización en una sóla estación de trabajo, y no pudiendo ser en manera alguna utilizada en forma distinta, ni tampoco transferida por el autorizado a terceros, si no es con el consentimiento expreso de EL CREADOR. El LICENCIATARIO es responsable de la instalación, uso y resultados que obtenga del mismo.
El SOFTWARE, incluyendo su documentación, presentación, estructura, organización, texto incorporado y la base de datos asociada, es propiedad de EL CREADOR y se encuentra protegido por la legislación de propiedad intelectual, y por las disposiciones de tratados internacionales, entre otras. Se prohibe intitularlo, copiarlo, modificarlo o combinar alguna de sus partes, salvo en lo específicamente permitido en esta y que licencia es facultad exclusiva de EL CREADOR.
1. Se garantizan estrictamente los siguientes derechos:
- a. Se licencia este SOFTWARE únicamente para desarrollo de programas y/o aplicaciones por parte del LICENCIATARIO.
- b. El LICENCIATARIO no está obligado a extender esta licencia o ningun otro tipo de autorización a los productos que EL LICENCIATARIO desarrolle con el SOFTWARE, pudiendo cobrar sumas de dinero o valores similares por el producto realizado en base a este SOFTWARE.
- c. El LICENCIATARIO está autorizado a modificar el código fuente del SOFTWARE indicando claramente que cambio realizó, en que fecha, lugar y que motivó dicho cambio.
2. Salvo consentimiento previo por escrito del CREADOR, queda prohibido:
- a. Incluir el SOFTWARE en cualquier medio de distribucion pago (Diskette, CD, DVD u otro formato mecanico o digital) que no sean los expresamente utilizados o autorizados por EL CREADOR.
- b. Reproducir, distribuir, alterar y/o enmendar en todo o en parte la documentación del SOFTWARE.
- c. Quitar cualquier identificación del SOFTWARE, notificaciones de derecho de autor, u otras notificaciones o restricciones de propiedad de EL SOFTWARE.
3. El CREADOR no garantiza que la información contenida en el SOFTWARE satisfará las necesidades del LICENCIATARIO ni que la operación de la misma estará completamente libre de error.
El CREADOR no asumirá responsabilidades por ninguna garantía, escrita o verbal, en relación con el SOFTWARE, efectuada por algún tercero a excepcion de las expresamente asumidas por EL CREADOR.
4. El LICENCIATARIO acepta que lo que se describe a continuación será eventualmente la única y suficiente reparación por todo concepto que podrá reclamar del CREADOR:
- a. Si el SOFTWARE no satisface sustancialmente sus funciones en concordancia con las especificaciones de contenido incluidas en su descripción. El LICENCIATARIO podrá, comunicar al CREADOR cualquier defecto relevante. El CREADOR por su parte sólo estará obligado a efectuar todas las gestiones a su alcance, a fin de solucionar el defecto propio de EL SOFTWARE.
- El CREADOR no será responsable por ningún perjuicio, lucro cesante, pérdidas económicas, ni por ningún otro perjuicio incidental o indirecto, resultante del uso o de la inhabilidad para el uso del software. EL CREADOR tampoco será responsable por los hechos, actos u omisiones de terceros, dependientes o no, a los que eventualmente el LICENCIATARIO encomendare la instalación del software.
5. EL LICENCIATARIO deberá en todos los casos en que utilice EL SOFTWARE para desarrollo de programas, aplicaciones o similares usos, mencionar el NOMBRE de EL CREADOR y la version de EL SOFTWARE UTILIZADA en los mismos programas, aplicaciones o similares que realice. El incumplimiento de esta clausula dará lugar a las acciones mencionadas en la clausula 2 último párrafo.
6. Si alguna previsión contenida en esta Licencia resulta inaplicable, ello no afectará ni menoscabará la observancia de las restantes.
El LICENCIATARIO acepta haber leído esta licencia y, que la sola instalación del software, implica la aceptación por su parte de todos y cada uno de sus términos y condiciones. El LICENCIATARIO también asume que, salvo lo específicamente asegurado mediante alguna otra licencia acordada con el CREADOR, esta licencia es el único y total acuerdo existente entre las partes e invalida cualquier otra información relativa al objeto de este acuerdo que el LICENCIATARIO pudiera haber recibido por cualquier medio.
7.4 Descargas
Aqui se encuentran algunos links
de descargas útiles.
Conectores ODBC necesarios
para el uso de la librería Data
Access, dependiendo del servidor de
base de datos.
Servidor de Base de Datos soportados por Data Access.
Documentos de Instalación o Archivos de ayuda de los motores de base de datos soportados por Data Access.
7.5 Versionado
Versión: 1.3
- Soporte para trabajar con bases de datos de Microsoft Access .
- Nuevo método validBeforeFetch() para enlazar al manejador de las aplicaciones y decidir si recuperar los datos desde el motor de base de datos.
- Nuevo método rs_moveComplete() para enlazar al manejador de las aplicaciones y mostrar barra de progreso al recuperar los registros desde el motor de base de datos.
- Nuevo método rs_endOfRecordset() para enlazar al manejador de las aplicaciones y cerrar barra de progreso al finalizar la recuperación de registros desde el motor de base de datos.
- Nueva propiedad lFetchRecords para indicar mediante el metodo enlazado validBeforeFetch() si se recuperarán los datos desde el motor de base de datos.
- Nueva propiedad nRecordCount_Progress para indicar la cantidad de registros minimo a partir del cual se comienza a mostrar el porcentaje de recuperación de la información.
- Nuevo método onAppError() para enlazar al manejador de errores de las aplicaciones y deshacer transacciones activas.
- Nueva propiedad cDriver para especificar el driver a usar para establecer la conexión con el motor de base de datos.
- Mensajes informativos más detallados para el desarrollador por problemas al abrir tabla o ejecutar consulta.