Consulta Rapida

Páginas: 215 (53738 palabras) Publicado: 2 de mayo de 2013
Actualizaciones 399

Pesimistas y optimistas
La explicación es, en este caso, más complicada. Acabamos de ver en acción un mecanismo optimista de control de edición. En contraste, a la técnica utilizada con las
bases de datos locales se le denomina pesimista. Ya hemos visto que un sistema de
control pesimista asume, al intentar editar un registro, que cualquier otro usuario
puede estareditando este registro, por lo que para iniciar la edición “pide permiso”
para hacerlo. Pedir permiso es el símil de colocar un bloqueo (lock): si hay realmente
otro usuario editando esta fila se nos denegará dicho permiso.
C++ Builder transforma la negación del bloqueo en una excepción. Antes de lanzar
la excepción, se nos avisa mediante el evento OnEditError de la tabla. En la respuesta
a esteevento tenemos la posibilidad de reintentar la operación, fallar con la excepción o fallar silenciosamente, con una excepción EAbort. En la lejana época en la que
los Flintstones hacían de las suyas y la mayor parte de las aplicaciones funcionaban
en modo batch, era de suma importancia decidir cuándo la aplicación que no obtenía
un bloqueo se cansaba de pedirlo. Ahora, sencillamente, se lepuede dejar la decisión
al usuario. He aquí una simple respuesta al evento OnEditError, que puede ser compartido por todas las tablas locales de una aplicación:
void __fastcall TForm1::Table1EditError(TDataSet *DataSet,
EDatabaseError *E, TDataAction &Action)
{
if (MessageDlg(E->Message, mtWarning,
TMsgDlgButton() Cancel();

404 La Cara Oculta de C++ Builder

Es necesario llamar a Cancelpara restaurar la tabla al modo dsBrowse.

Eliminando registros
La operación de actualización más sencilla sobre tablas y consultas es la eliminación
de filas. Esta operación se realiza con un solo método, Delete, que actúa sobre la fila
activa del conjunto de datos:
void TDataSet::Delete();

Después de eliminar una fila, se intenta dejar como fila activa la siguiente. Si ésta no
existe, seintenta activar la anterior. Por ejemplo, para borrar todos los registros que
satisfacen cierta condición necesitamos este código:
void __fastcall TForm1::BorrarTodosClick(TObject *Sender)
{
Table1->First();
while (! Table1->Eof)
if (Condicion(Table1))
Table1->Delete();
// No se llama a Next() en este caso
else
Table1->Next();
}

Recuerde que eliminar una fila puede provocar lapropagación de borrados, si existen
restricciones de integridad referencial definidas de este modo.
Puede ser útil, en ocasiones, el método EmptyTable, que elimina todos los registros de
una tabla. La tabla no tiene que estar abierta; si lo está, debe haberse abierto con la
propiedad Exclusive igual a True.
dBase utiliza marcas lógicas cuando se elimina un registro. Paradox no las usa,
pero dejaun “hueco” en el sitio que ocupaba un registro borrado. Es necesaria
una operación posterior para recuperar el espacio físico ocupado por estos registros. En el capítulo sobre programación con el BDE explicaremos cómo hacerlo.

Actualización directa vs variables en memoria
En la programación tradicional para bases de datos locales lo común, cuando se leen
datos del teclado para altas oactualizaciones, es leer primeramente los datos en variables de memoria y, posteriormente, transferir los valores leídos a la tabla. Esto es
lo habitual, por ejemplo, en la programación con Clipper. El equivalente en C++
Builder sería ejecutar un cuadro de diálogo “normal”, con controles TEdit, TCombo-

Actualizaciones 405

Box y otros extraídos de la página Standard y, si el usuario acepta losdatos tecleados,
poner la tabla en modo de edición o inserción, según corresponda, asignar entonces
el resultado de la edición a las variables de campo y terminar con un Post:
if (DialogoEdicion->ShowModal() == mrOk)
{
Table1->Insert();
Table1Nombre->Value = DialogoEdicion->Edit1->Text;
Table1Edad->Value = StrToInt(DialogoEdicion->Edit2->Text);
Table1->Post();
}

Esta técnica es...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Manual Consulta Rápida Word
  • Guia rapida de consulta para el ietu
  • Manual Consulta Rápida Pestaña Inicio
  • Manuel De Consulta Rapida Pestaña Insertar Word 2007
  • Consulta Rapida Para Word 2007 Inicio
  • Guía Rápida Para Reportar Consultas O Problemáticas Relativas A Comprobantes Fiscales.
  • rapido
  • el rap

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS