|
Eneboo - Documentación para desarrolladores
|
Acceso a un cursor sobre la base de datos. Más...
#include <FLObjectFactory.h>
Acceso a un cursor sobre la base de datos.
Es la principal clase de acceso a la base de datos. Permite leer o establecer valores de las tablas, filtrar, editar o eliminar registros, etc.
| FLSqlCursorInterface::FLSqlCursorInterface | ( | const QString & | n = QString::null, |
| const QString & | connName = "default" |
||
| ) | [inline] |
Constructor
| FLSqlCursorInterface::FLSqlCursorInterface | ( | QObject * | obj | ) | [inline] |
Constructor
| FLSqlCursorInterface::~FLSqlCursorInterface | ( | ) | [inline] |
Destructor
| QString FLSqlCursorInterface::action | ( | ) | [inline, slot] |
Para obtener la acción asociada al cursor.
| int FLSqlCursorInterface::at | ( | ) | [inline, slot] |
Devuelve la posición del registro actual del cursor.
Ver QSqlCursor::at()
| int FLSqlCursorInterface::atFrom | ( | ) | [inline, slot] |
Obtiene la posición del registro actual, según la clave primaria contenida en el buffer.
La posición del registro actual dentro del cursor se calcula teniendo en cuenta el filtro actual ( FLSqlCursor::curFilter() ) y el campo o campos de ordenamiento del mismo ( QSqlCursor::sort() ). Este método es útil, por ejemplo, para saber en que posición dentro del cursor se ha insertado un registro.
| int FLSqlCursorInterface::atFromBinarySearch | ( | const QString & | fN, |
| const QString & | v, | ||
| bool | orderAsc = true |
||
| ) | [inline, slot] |
Obtiene la posición dentro del cursor del primer registro que en el campo indicado empieze con el valor solicitado. Supone que los registros están ordenados por dicho campo, para realizar una búsqueda binaria.
La posición del registro actual dentro del cursor se calcula teniendo en cuenta el filtro actual ( FLSqlCursor::curFilter() ) y el campo o campos de ordenamiento del mismo ( QSqlCursor::sort() ). Este método es útil, por ejemplo, para saber en que posición dentro del cursor se encuentra un registro con un cierto valor en un campo.
| fN | Nombre del campo en el que buscar el valor |
| v | Valor a buscar ( mediante like 'v%' ) |
| orderAsc | TRUE (por defecto) si el orden es ascendente, FALSE si es descendente |
| void FLSqlCursorInterface::autoCommit | ( | ) | [signal] |
Indica que se ha realizado un commit automático para evitar bloqueos
| void FLSqlCursorInterface::browseRecord | ( | ) | [inline, slot] |
Abre el formulario de edicion de registro definido en los metadatos (FLTableMetaData) listo para visualizar el registro activo del cursor.
| void FLSqlCursorInterface::bufferChanged | ( | const QString & | ) | [signal] |
Indica si ha cambiado un campo del buffer, junto con la señal se envía el nombre del campo que ha cambiado.
| void FLSqlCursorInterface::bufferCommited | ( | ) | [signal] |
Indica que se ha realizado un commit
Realiza comprobaciones de intregidad.
Se comprueba la integridad referencial al intentar borrar, tambien se comprueba la no duplicidad de claves primarias y si hay nulos en campos que no lo permiten cuando se inserta o se edita. Si alguna comprobacion falla muestra un cuadro de diálogo con el tipo de fallo encontrado y el metodo devuelve FALSE.
| showError | Si es TRUE muestra el cuadro de dialogo con el error que se produce al no pasar las comprobaciones de integridad |
| void FLSqlCursorInterface::checkRisksLocks | ( | bool | terminate = false | ) | [inline, slot] |
Entra en un bucle de comprobacion de riesgos de bloqueos para esta tabla y el registro actual
El bucle continua mientras existan bloqueos, hasta que se vuelva a llamar a este método con 'terminate' activado o cuando el usuario cancele la operación.
| terminate | True terminará el bucle de comprobaciones si está activo |
| void FLSqlCursorInterface::chooseRecord | ( | ) | [inline, slot] |
Realiza la acción asociada a elegir un registro del cursor, por defecto se abre el formulario de edición de registro,llamando al método FLSqlCursor::editRecord(), si la bandera FLSqlCursor::edition indica TRUE, si indica FALSE este método no hace nada
| void FLSqlCursorInterface::clearAcosCondition | ( | ) | [inline, slot] |
Limpia la condicion utilizada para aplicar el control de acceso.
Tras llamar a este método no se evaluará la condición y por lo tanto no se aplicará ninguna regla de acceso. Se debe utilizar FLSqlCursor::setAcosCondition() para habilitar de nuevo una condicion de evaluación.
| bool FLSqlCursorInterface::commit | ( | ) | [inline, slot] |
Hace efectiva la transacción y la acaba.
| notify | Si TRUE emite la señal cursorUpdated y pone el cursor en modo BROWSE, si FALSE no hace ninguna de estas dos cosas y emite la señal de autoCommit |
Manda el contenido del buffer al cursor, o realiza la acción oportuna para el cursor.
Todos los cambios realizados en el buffer se hacen efectivos en el cursor al invocar este método. La manera de efectuar estos cambios viene determinada por el modo de acceso establecido para el cursor, ver FLSqlCursor::Mode, si el modo es editar o insertar actualiza con los nuevos valores de los campos del registro, si el modo es borrar borra el registro, y si el modo es navegacion no hace nada. Antes de nada tambien comprueba la integridad referencial invocando al método FLSqlCursor::checkIntegrity().
Si existe un campo calculado se invoca a la función "calculateField" del script del contexto (ver FLSqlCursor::ctxt_) establecido para el cursor. A esta función se le pasa como argumento el nombre del campo calculado y debe devolver el valor que debe contener ese campo, p.e. si el campo es el total de una factura y de tipo calculado la función "calculateField" debe devolver la suma de lineas de las facturas mas/menos impuestos y descuentos.
| checkLocks | True para comprobar riesgos de bloqueos para esta tabla y el registro actual |
| bool FLSqlCursorInterface::commitBufferCursorRelation | ( | ) | [inline, slot] |
Manda el contenido del buffer del cursor relacionado a dicho cursor.
Hace efectivos todos los cambios en el buffer del cursor relacionado posiconándose en el registro correspondiente que recibe los cambios.
| void FLSqlCursorInterface::commitOpened | ( | int | count = -1, |
| const QString & | msg = QString::null |
||
| ) | [inline, slot] |
Termina transacciones abiertas por este cursor.
| count | Cantidad de transacciones a terminar, -1 todas. |
| msg | Cadena de texto que se muestra en un cuadro de diálogo antes de terminar las transacciones. Si es vacía no muestra nada. |
| QStringList FLSqlCursorInterface::concurrencyFields | ( | ) | [inline, slot] |
Comprueba si hay una colisión de campos editados por dos sesiones simultáneamente.
| QObject* FLSqlCursorInterface::context | ( | ) | const [inline, slot] |
Para obtener el contexto de ejecución de scripts.
Ver FLSqlCursor::ctxt_.
| void FLSqlCursorInterface::currentChanged | ( | int | ) | [signal] |
Indica que la posición del registro activo dentro del cursor ha cambiado
| FLSqlCursorInterface* FLSqlCursorInterface::cursorRelation | ( | ) | [inline, slot] |
Devuelve el cursor relacionado con este.
| void FLSqlCursorInterface::cursorUpdated | ( | ) | [signal] |
Indica que se ha actualizado el cursor
Redefinición del método del() de QSqlCursor.
Este método invoca al método del() original de QSqlCursor() y comprueba si hay borrado en cascada, en caso afirmativo borrar también los registros relacionados en cardinalidad 1M.
| void FLSqlCursorInterface::editRecord | ( | ) | [inline, slot] |
Abre el formulario de edicion de registro definido en los metadatos (FLTableMetaData) listo para editar el registro activo del cursor.
| void FLSqlCursorInterface::emitAutoCommit | ( | ) | [inline, slot] |
| void FLSqlCursorInterface::emitBufferChanged | ( | const QString & | v | ) | [inline, slot] |
| void FLSqlCursorInterface::emitBufferCommited | ( | ) | [inline, slot] |
| void FLSqlCursorInterface::emitCurrentChanged | ( | int | v | ) | [inline, slot] |
| void FLSqlCursorInterface::emitCursorUpdated | ( | ) | [inline, slot] |
| void FLSqlCursorInterface::emitNewBuffer | ( | ) | [inline, slot] |
Uso interno. Obsoleto
| void FLSqlCursorInterface::emitRecordChoosed | ( | ) | [inline, slot] |
Dice si un campo está deshabilitado.
Un campo estará deshabilitado, porque está clase le dará un valor automáticamente. Estos campos son lo campos que están en una relación con otro cursor, por lo que su valor lo toman del campo foráneo con el que se relacionan. El objeto FLReceiver pasa a ser propiedad del objeto FLSqlCursor, por lo tanto al destruir el objeto FLSqlCursor se borrará automáticamente el objeto FLReceiver.
| fN | Nombre del campo a comprobar |
Devuelve el tipo de un campo de la tabla 100 - serial 200 - unlock
Redefinición del método first() de QSqlCursor.
Este método simplemente invoca al método first() original de QSqlCursor() y refresca el buffer con el metodo FLSqlCursor::refreshBuffer().
| emit | Si TRUE emite la señal FLSqlCursor::currentChanged() |
| void FLSqlCursorInterface::insertRecord | ( | ) | [inline, slot] |
Abre el formulario de inserción de registro definido en los metadatos (FLTableMetaData) listo para insertar el registro activo del cursor.
| bool FLSqlCursorInterface::inTransaction | ( | ) | [inline, slot] |
Indica si hay una transacción en curso.
Devuelve si el contenido de un campo en el bufferCopy en nulo.
| name | Nombre del campo en el bufferCopy |
| bool FLSqlCursorInterface::isLocked | ( | ) | [inline, slot] |
Para comprobar si el registro actual del cursor está bloqueado.
| bool FLSqlCursorInterface::isModifiedBuffer | ( | ) | [inline, slot] |
Indica si el contenido actual del buffer difiere de la copia guardada.
Ver FLSqlCursor::bufferCopy_ .
Devuelve si el contenido de un campo en el buffer en nulo.
| name | Nombre del campo en el buffer |
| bool FLSqlCursorInterface::isValid | ( | ) | const [inline, slot] |
Redefinición del método last() de QSqlCursor.
Este método simplemente invoca al método last() original de QSqlCursor() y refresca el buffer con el metodo FLSqlCursor::refreshBuffer().
| emit | Si TRUE emite la señal FLSqlCursor::currentChanged() |
| QString FLSqlCursorInterface::mainFilter | ( | ) | const [inline, slot] |
Obtiene el filtro principal del cursor.
| int FLSqlCursorInterface::modeAccess | ( | ) | const [inline, slot] |
Obtiene el modo de acceso actual del cursor.
| QString FLSqlCursorInterface::msgCheckIntegrity | ( | ) | [inline, slot] |
Se comprueba la integridad referencial al intentar borrar, tambien se comprueba la no duplicidad de claves primarias y si hay nulos en campos que no lo permiten cuando se inserta o se edita. Si alguna comprobacion falla devuelve un mensaje describiendo el fallo.
| void FLSqlCursorInterface::newBuffer | ( | ) | [signal] |
Indica que se ha cargado un nuevo buffer
Redefinición del métedo next() de QSqlCursor.
Este método simplemente invoca al método next() original de QSqlCursor() y refresca el buffer con el metodo FLSqlCursor::refreshBuffer().
| emit | Si TRUE emite la señal FLSqlCursor::currentChanged() |
| FLSqlCursor* FLSqlCursorInterface::obj | ( | ) | [inline, slot] |
Redefinición del método prev() de QSqlCursor.
Este método simplemente invoca al método prev() original de QSqlCursor() y refresca el buffer con el metodo FLSqlCursor::refreshBuffer().
| emit | Si TRUE emite la señal FLSqlCursor::currentChanged() |
| QString FLSqlCursorInterface::primaryKey | ( | ) | const [inline, slot] |
Devuelve la clave primaria de la tabla asociada al cursor
| void FLSqlCursorInterface::recordChoosed | ( | ) | [signal] |
Indica que se ha elegido un registro, mediante doble clic sobre él o bien pulsando la tecla Enter
| void FLSqlCursorInterface::refresh | ( | const QString & | fN = QString::null | ) | [inline, slot] |
Refresca el contenido del cursor.
Si no se ha indicado cursor relacionado obtiene el cursor completo, segun la consulta por defecto. Si se ha indicado que depende de otro cursor con el que se relaciona, el contenido del cursor dependerá del valor del campo que determina la relación. Si se indica el nombre de un campo se considera que el buffer sólo ha cambiado en ese campo y así evitar repeticiones en el refresco.
| fN | Nombre del campo de buffer que ha cambiado |
| bool FLSqlCursorInterface::refreshBuffer | ( | ) | [inline, slot] |
Refresca el buffer según el modo de acceso establecido.
Lleva informacion del cursor al buffer para editar o navegar, o prepara el buffer para insertar o borrar.
Si existe un campo contador se invoca a la función "calculateCounter" del script del contexto (ver FLSqlCursor::ctxt_) establecido para el cursor. A esta función se le pasa como argumento el nombre del campo contador y debe devolver el valor que debe contener ese campo.
| bool FLSqlCursorInterface::rollback | ( | ) | [inline, slot] |
Deshace las operaciones de una transacción y la acaba.
| void FLSqlCursorInterface::rollbackOpened | ( | int | count = -1, |
| const QString & | msg = QString::null |
||
| ) | [inline, slot] |
Deshace transacciones abiertas por este cursor.
| count | Cantidad de transacciones a deshacer, -1 todas. |
| msg | Cadena de texto que se muestra en un cuadro de diálogo antes de deshacer las transacciones. Si es vacía no muestra nada. |
Redefinición del método seek() de QSqlCursor.
Este método simplemente invoca al método seek() original de QSqlCursor() y refresca el buffer con el metodo FLSqlCursor::refreshBuffer().
| emit | Si TRUE emite la señal FLSqlCursor::currentChanged() |
| bool FLSqlCursorInterface::select | ( | const QString & | filter, |
| const QSqlIndex & | sort = QSqlIndex() |
||
| ) | [inline, slot] |
Redefinición del método select() de QSqlCursor
| bool FLSqlCursorInterface::select | ( | ) | [inline, slot] |
Redefinicion del método select() de QSqlCursor
| void FLSqlCursorInterface::setAcosCondition | ( | const QString & | condName, |
| int | cond, | ||
| const QVariant & | condVal | ||
| ) | [inline, slot] |
Establece la condicion que se debe cumplir para aplicar el control de acceso.
Para cada registro se evalua esta condicion y si se cumple, aplica la regla de control de acceso establecida con FLSqlCursor::setAcTable y FLSqlCursor::setAcosTable.
Ejemplos:
setAcosCondition( "nombre", VALUE, "pepe" ); // valueBuffer( "nombre" ) == "pepe" setAcosCondition( "nombre", REGEXP, "pe*" ); // QRegExp( "pe*" ).exactMatch( valueBuffer( "nombre" ).toString() ) setAcosCondition( "sys.checkAcos", FUNCTION, true ); // call( "sys.checkAcos" ) == true
| cond | Tipo de evaluacion; VALUE compara con un valor fijo REGEXP compara con una expresion regular FUNCTION compara con el valor devuelto por una funcion de script |
| condName | Si es vacio no se evalua la condicion y la regla no se aplica nunca. Para VALUE y REGEXP nombre de un campo. Para FUNCTION nombre de una funcion de script. A la función se le pasa como argumento el objeto cursor. |
| condVal | Valor que hace que la condicion sea cierta |
| void FLSqlCursorInterface::setAcosTable | ( | const QStringList & | acos | ) | [inline, slot] |
Establece la lista de control de acceso (ACOs) para los campos de la tabla, , ver FLSqlCursor::setAcosCondition().
Esta lista de textos deberá tener en sus componentes de orden par los nombres de los campos, y en los componentes de orden impar el permiso a aplicar a ese campo, p.e.: "nombre", "r-", "descripcion", "--", "telefono", "rw",...
Los permisos definidos aqui sobreescriben al global.
| acos | Lista de cadenas de texto con los nombre de campos y permisos. |
| void FLSqlCursorInterface::setAcTable | ( | const QString & | ac | ) | [inline, slot] |
Establece el acceso global para la tabla, ver FLSqlCursor::setAcosCondition().
Este será el permiso a aplicar a todos los campos por defecto
| ac | Permiso global; p.e.: "r-", "-w" |
| void FLSqlCursorInterface::setAction | ( | const QString & | action | ) | [inline, slot] |
Establece la acción asociada al cursor.
| a | Objeto FLAction |
| void FLSqlCursorInterface::setActivatedCheckIntegrity | ( | bool | a | ) | [inline, slot] |
Activa o desactiva los chequeos de integridad referencial.
| a | TRUE los activa y FALSE los desactiva |
| void FLSqlCursorInterface::setActivatedCommitActions | ( | bool | a | ) | [inline, slot] |
Activa o desactiva las acciones a realizar antes y después de un commit
| a | TRUE las activa y FALSE las desactiva |
| void FLSqlCursorInterface::setAskForCancelChanges | ( | bool | a | ) | [inline, slot] |
Establece el valor de FLSqlCursor::askForCancelChanges_ .
| a | Valor a establecer (TRUE o FALSE) |
| void FLSqlCursorInterface::setAtomicValueBuffer | ( | const QString & | fN, |
| const QString & | functionName | ||
| ) | [inline, slot] |
Establece el valor de un campo del buffer de forma atómica y fuera de transacción.
Invoca a la función, cuyo nombre se pasa como parámetro, del script del contexto del cursor (ver FLSqlCursor::ctxt_) para obtener el valor del campo. El valor es establecido en el campo de forma atómica, bloqueando la fila durante la actualización. Esta actualización se hace fuera de la transacción actual, dentro de una transacción propia, lo que implica que el nuevo valor del campo está inmediatamente disponible para las siguientes transacciones.
| fN | Nombre del campo |
| functionName | Nombre de la función a invocar del script |
| void FLSqlCursorInterface::setBrowse | ( | bool | b | ) | [inline, slot] |
Establece el valor de FLSqlCursor::browse.
| b | TRUE o FALSE |
| void FLSqlCursorInterface::setContext | ( | QObject * | c | ) | [inline, slot] |
Establece el contexto de ejecución de scripts
Ver FLSqlCursor::ctxt_.
| c | Contexto de ejecucion |
| void FLSqlCursorInterface::setCopyNull | ( | const QString & | name | ) | [inline, slot] |
Establece que el contenido de un campo en el bufferCopy sea nulo.
| name | Nombre del campo en el bufferCopy |
| void FLSqlCursorInterface::setEdition | ( | bool | b | ) | [inline, slot] |
Establece el valor de FLSqlCursor::edition.
| b | TRUE o FALSE |
| bool FLSqlCursorInterface::setEditMode | ( | ) | [inline, slot] |
Pasa el cursor a modo Edit
| void FLSqlCursorInterface::setForwardOnly | ( | bool | forward | ) | [inline, slot] |
| void FLSqlCursorInterface::setMainFilter | ( | const QString & | f | ) | [inline, slot] |
Establece el filtro principal del cursor.
| f | Cadena con el filtro, corresponde con una clausura WHERE |
| void FLSqlCursorInterface::setModeAccess | ( | const int | m | ) | [inline, slot] |
Establece el modo de acceso para el cursor.
| m | Constante FLSqlCursorInterface::Mode que indica en que modo de acceso se quiere establecer el cursor |
| void FLSqlCursorInterface::setNull | ( | const QString & | name | ) | [inline, slot] |
Establece que el contenido de un campo en el buffer sea nulo.
| name | Nombre del campo en el buffer |
| void FLSqlCursorInterface::setObj | ( | FLSqlCursor * | obj | ) |
Establece el correspondiente objeto FLSqlCursor
| obj | Objeto FLSqlCursor |
Establece los campos unlock de un registro, saltándose las comprobación
| fN | Nombre del campo |
| v | Valor para el campo unlock |
Establece el valor de un campo del buffer con un valor.
| fN | Nombre del campo |
| v | Valor a establecer para el campo |
| void FLSqlCursorInterface::setValueBuffer | ( | const QString & | fN, |
| double | v | ||
| ) | [inline, slot] |
| int FLSqlCursorInterface::size | ( | ) | [inline, slot] |
Devuelve el número de filas seleccionadas en el cursor
| FLSqlCursorInterface * FLSqlCursorInterface::sqlCursorInterface | ( | FLSqlCursor * | c | ) | [static] |
Uso interno
| QString FLSqlCursorInterface::table | ( | ) | const [inline, slot] |
Devuelve el nombre de la tabla asociada al cursor
Inicia una transacción.
Si ya hay una transacción en curso no hace nada. Si lock es igual a TRUE inicia un bloqueo de la tabla, el bloqueo termina cuando se termina la transacción, con commit() o rollback()
| int FLSqlCursorInterface::transactionLevel | ( | ) | [inline, slot] |
| QStringList FLSqlCursorInterface::transactionsOpened | ( | ) | [inline, slot] |
Devuelve el valor de un campo del buffer.
| fN | Nombre del campo |
Devuelve el valor de un campo del buffer copiado antes de sufrir cambios.
| fN | Nombre del campo |
friend class FLObjectFactory [friend] |
1.7.4