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 accin asociada al cursor.
int FLSqlCursorInterface::at | ( | ) | [inline, slot] |
Devuelve la posicin del registro actual del cursor.
Ver QSqlCursor::at()
int FLSqlCursorInterface::atFrom | ( | ) | [inline, slot] |
Obtiene la posicin del registro actual, segn la clave primaria contenida en el buffer.
La posicin 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 mtodo es til, por ejemplo, para saber en que posicin dentro del cursor se ha insertado un registro.
int FLSqlCursorInterface::atFromBinarySearch | ( | const QString & | fN, |
const QString & | v, | ||
bool | orderAsc = true |
||
) | [inline, slot] |
Obtiene la posicin dentro del cursor del primer registro que en el campo indicado empieze con el valor solicitado. Supone que los registros estn ordenados por dicho campo, para realizar una bsqueda binaria.
La posicin 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 mtodo es til, por ejemplo, para saber en que posicin 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 automtico 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 seal se enva 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 dilogo 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 mtodo con 'terminate' activado o cuando el usuario cancele la operacin.
terminate | True terminar el bucle de comprobaciones si est activo |
void FLSqlCursorInterface::chooseRecord | ( | ) | [inline, slot] |
Realiza la accin asociada a elegir un registro del cursor, por defecto se abre el formulario de edicin de registro,llamando al mtodo FLSqlCursor::editRecord(), si la bandera FLSqlCursor::edition indica TRUE, si indica FALSE este mtodo no hace nada
void FLSqlCursorInterface::clearAcosCondition | ( | ) | [inline, slot] |
Limpia la condicion utilizada para aplicar el control de acceso.
Tras llamar a este mtodo no se evaluar la condicin y por lo tanto no se aplicar ninguna regla de acceso. Se debe utilizar FLSqlCursor::setAcosCondition() para habilitar de nuevo una condicion de evaluacin.
bool FLSqlCursorInterface::commit | ( | ) | [inline, slot] |
Hace efectiva la transaccin y la acaba.
notify | Si TRUE emite la seal cursorUpdated y pone el cursor en modo BROWSE, si FALSE no hace ninguna de estas dos cosas y emite la seal de autoCommit |
Manda el contenido del buffer al cursor, o realiza la accin oportuna para el cursor.
Todos los cambios realizados en el buffer se hacen efectivos en el cursor al invocar este mtodo. 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 mtodo FLSqlCursor::checkIntegrity().
Si existe un campo calculado se invoca a la funcin "calculateField" del script del contexto (ver FLSqlCursor::ctxt_) establecido para el cursor. A esta funcin 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 funcin "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 posiconndose 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 dilogo antes de terminar las transacciones. Si es vaca no muestra nada. |
QStringList FLSqlCursorInterface::concurrencyFields | ( | ) | [inline, slot] |
Comprueba si hay una colisin de campos editados por dos sesiones simultneamente.
QObject* FLSqlCursorInterface::context | ( | ) | const [inline, slot] |
Para obtener el contexto de ejecucin de scripts.
Ver FLSqlCursor::ctxt_.
void FLSqlCursorInterface::currentChanged | ( | int | ) | [signal] |
Indica que la posicin 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
Redefinicin del mtodo del() de QSqlCursor.
Este mtodo invoca al mtodo del() original de QSqlCursor() y comprueba si hay borrado en cascada, en caso afirmativo borrar tambin 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 automticamente. Estos campos son lo campos que estn en una relacin con otro cursor, por lo que su valor lo toman del campo forneo 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 automticamente el objeto FLReceiver.
fN | Nombre del campo a comprobar |
Devuelve el tipo de un campo de la tabla 100 - serial 200 - unlock
Redefinicin del mtodo first() de QSqlCursor.
Este mtodo simplemente invoca al mtodo first() original de QSqlCursor() y refresca el buffer con el metodo FLSqlCursor::refreshBuffer().
emit | Si TRUE emite la seal FLSqlCursor::currentChanged() |
void FLSqlCursorInterface::insertRecord | ( | ) | [inline, slot] |
Abre el formulario de insercin de registro definido en los metadatos (FLTableMetaData) listo para insertar el registro activo del cursor.
bool FLSqlCursorInterface::inTransaction | ( | ) | [inline, slot] |
Indica si hay una transaccin 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] |
Redefinicin del mtodo last() de QSqlCursor.
Este mtodo simplemente invoca al mtodo last() original de QSqlCursor() y refresca el buffer con el metodo FLSqlCursor::refreshBuffer().
emit | Si TRUE emite la seal 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
Redefinicin del mtedo next() de QSqlCursor.
Este mtodo simplemente invoca al mtodo next() original de QSqlCursor() y refresca el buffer con el metodo FLSqlCursor::refreshBuffer().
emit | Si TRUE emite la seal FLSqlCursor::currentChanged() |
FLSqlCursor* FLSqlCursorInterface::obj | ( | ) | [inline, slot] |
Redefinicin del mtodo prev() de QSqlCursor.
Este mtodo simplemente invoca al mtodo prev() original de QSqlCursor() y refresca el buffer con el metodo FLSqlCursor::refreshBuffer().
emit | Si TRUE emite la seal 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 relacin. Si se indica el nombre de un campo se considera que el buffer slo 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 segn 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 funcin "calculateCounter" del script del contexto (ver FLSqlCursor::ctxt_) establecido para el cursor. A esta funcin 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 transaccin 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 dilogo antes de deshacer las transacciones. Si es vaca no muestra nada. |
Redefinicin del mtodo seek() de QSqlCursor.
Este mtodo simplemente invoca al mtodo seek() original de QSqlCursor() y refresca el buffer con el metodo FLSqlCursor::refreshBuffer().
emit | Si TRUE emite la seal FLSqlCursor::currentChanged() |
bool FLSqlCursorInterface::select | ( | const QString & | filter, |
const QSqlIndex & | sort = QSqlIndex() |
||
) | [inline, slot] |
Redefinicin del mtodo select() de QSqlCursor
bool FLSqlCursorInterface::select | ( | ) | [inline, slot] |
Redefinicion del mtodo 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 funcin 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 accin 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 despus 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 atmica y fuera de transaccin.
Invoca a la funcin, cuyo nombre se pasa como parmetro, del script del contexto del cursor (ver FLSqlCursor::ctxt_) para obtener el valor del campo. El valor es establecido en el campo de forma atmica, bloqueando la fila durante la actualizacin. Esta actualizacin se hace fuera de la transaccin actual, dentro de una transaccin 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 funcin 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 ejecucin 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, saltndose las comprobacin
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 nmero 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 transaccin.
Si ya hay una transaccin en curso no hace nada. Si lock es igual a TRUE inicia un bloqueo de la tabla, el bloqueo termina cuando se termina la transaccin, 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] |