• No results found

The transference of conserved quantities and the problem of relevance

Chapter 2: Kim’s causal exclusion argument against non-reductivism

2.5 A hidden premise in the exclusion argument

2.5.4 The transference of conserved quantities and the problem of relevance

Después de crear un DataTable en un DataSet, se pueden realizar las mismas actividades que al utilizar una tabla de una base de datos. Se puede agregar, ver, modificar y eliminar datos en la tabla, supervisar los errores y eventos y consultar los datos de la tabla. Al modificar los datos de una DataTable, se puede comprobar si los cambios son precisos y determinar si aceptarlos o rechazarlos mediante programación.

4.1 ADICIÓN DE UNA FILA A UN DATATABLE

Creado el DataTable, se le pueden agregar nuevas filas de datos. Para agregar una nueva fila, declare una nueva variable como tipo DataRow. Se devuelve un nuevo objeto DataRow cuando se llama al método NewRow. En el ejemplo siguiente se muestra cómo se crea una nueva fila llamando al método NewRow.

4.2 BÚSQUEDA UNA FILA EN UN DATATABLE

Para ubicar una Fila en una tabla, utilice el método Find. Éste retorna la fila especificada por el valor de la clave primaria.

El siguiente ejemplo muestra cómo se realiza una búsqueda por el código; si existe, se muestra los datos; sino, se muestra un mensaje.

4.3 ELIMINACIÓN DE UNA FILA EN UN DATATABLE

Existen dos métodos:

Metodo Descripción

Remove Elimina una fila del DataRowCollection

Delete Marca la fila para su eliminación. La eliminación propiamente se

produce al ejecutar el método AcceptChanges

Si se usa Delete, se puede comprobar mediante programación qué filas están marcadas para eliminación antes de eliminarlas. Cuando una fila está marcada para eliminación, su propiedad RowState está establecida en Deleted.

Cuando el DataAdapter encuentra una fila marcada como Deleted, ejecuta el método DeleteCommand para eliminar la fila en el origen de datos. A continuación se puede quitar la fila permanentemente utilizando el método AcceptChanges.

Dim Row As DataRow = dt.NewRow Row(0) = txtcodigo.Text

dt.Rows.Add(Row)

Dim Row As DataRow = dt.Rows.Find(txtcodigo.Text) If Not Row Is Nothing Then

txtdescripcion.Text = Row(1) txtunidad.Text = Row(2) Else

MessageBox.Show("No Existe") End If

92 92 92 92

En el siguiente ejemplo, se muestra cómo se realiza la eliminación de una fila por el método Remove

4.4 ESTADOS Y VERSIONES DE UNA FILA

ADO .NET administra las filas de las tablas mediante:

o Estado de fila indica el estado de una fila.

o Versiones de fila mantienen los valores almacenados en una fila en cuanto se modifica, incluyendo los valores actuales, originales y predeterminados.

Cada objeto DataRow cuenta con la propiedad RowState que puede examinar para determinar el estado actual de la fila. En la tabla siguiente, se describen brevemente los valores de la enumeración RowState.

Estado Descripción

UnChanged No se han hecho cambios desde la última llamada a AcceptChanges.

Added Se ha agregado la fila a la tabla, pero no se ha llamado a AcceptChanges.

Modified Se ha cambiado algún elemento de la fila.

Deleted Se ha eliminado la fila de una tabla y no se ha llamado a AcceptChanges.

Detached

La fila no forma parte de ninguna DataRowCollection. El RowState de una fila recién creada se establece en Detached. Una vez que se ha agregado la nueva DataRow a la DataRowCollection llamando al método Add, el valor de la propiedad RowState se establece en

Added.

Cuando se llama a AcceptChanges en DataSet, DataTable o DataRow, se quitan todas las filas con el estado de fila Deleted. Las filas que quedan reciben el estado de fila Unchanged y los valores de la versión de fila

Original se sobrescriben con los valores de la versión de fila Current. Si

se llama a RejectChanges, se quitan todas las filas con el estado de fila

Added. Las filas que quedan reciben el estado de fila Unchanged y los

valores de la versión de fila Current se sobrescriben con los valores de la versión de fila Original.

El siguiente ejemplo muestra los registros añadidos, no modificacdos y eliminados (Delete) en un DataTable.

'capturo el indice de la Fila Actual(CurrentRow) del DataGrid Dim i As Integer = Me.DGArticulos.CurrentRow.Index

Dim row As DataRow = dt.Rows(i) dt.Rows.Remove(row)

Dim tabla As DataTable = dt.GetChanges(DataRowState.Added) Dim tabla1 As DataTable = dt.GetChanges(DataRowState.Deleted) Dim tabla2 As DataTable = dt.GetChanges(DataRowState.Unchanged)

Las distintas versiones de una fila se pueden ver pasando un parámetro

DataRowVersion con la referencia de la columna, como se muestra en el

ejemplo siguiente.

Versión Descripción

Current Valores actuales de la fila.

Default

Es la versión de fila predeterminada para una determinada fila. La versión de fila predeterminada para una fila Added, Modified o

Unchanged es Current. Original Valores originales de la fila.

Proposed Valores propuestos para la fila.

Se puede comprobar si una DataRow tiene una versión de fila concreta llamando al método HasVersion y pasando una DataRowVersion como argumento. Ejemplo, DataRow.HasVersion (DataRowVersion.Original) devolverá false para las filas recién agregadas antes de que se llame a

AcceptChanges.

4.5 MÉTODO PARA ACEPTAR O RECHAZAR LOS CAMBIOS EN LA FILAS

Después de comprobar la exactitud de los cambios realizados en un

DataTable, se pueden aceptar con el método AcceptChanges de DataRow, DataTable o DataSet, que configurará los valores de fila Current de modo que sean los valores Original y establecerá la propiedad RowState en Unchanged.

Si se aceptan o se rechazan los cambios, se elimina la información de

RowError y se establece la propiedad HasErrors en false. Aceptar o

rechazar cambios también puede afectar a la actualización de datos en el origen de datos. Si hay restricciones de clave externa en la DataTable, los cambios que se acepten o se rechacen con AcceptChanges y

RejectChanges se propagan a las filas secundarias de la DataRow de

acuerdo con la ForeignKeyConstraint.AcceptRejectRule

En el siguiente ejercicio, si los registros actualizados han generado errores, HasErrors visualizamos el conjunto de errores y deshacemos la actualización RehectChanges, si no hay errores, se procede a actualizar

AcceptChanges.

If dt.HasErrors Then

Dim str As String = ""

For Each row As DataRow In dt.GetErrors str = str + row.RowError + vbCrLf Next MessageBox.Show(str) dt.RejectChanges() End If dt.AcceptChanges()

94 94 94 94

LABORATORIO 5.1