Aquí seguimos peleándonos con el C# y el acceso a datos.
Tengo un DataSet sobre el que estoy navegando (con mi BindingSource,
TableAdapter, AdapterManager, BindingNavigator, ...).
La base de datos es SQL Express. En un momento dado lanzo un Stored
Procedure que modifica el registro actual (p.e. recalcula el total de
una factura).
El problema es que no encuentro la forma correcta de refrescar los datos.
Tengo un código parecido a este:
DSEjemplo.FacturasRow row =
DSEjemplo.Facturas[facturasBindingSource.Position];
facturasTableAdapter.RecalculaFactura(row.PK);
tableAdapterManager.UpdateAll(dSEjemplo);
Si abro una nueva ventana veo el total de la factura actualizado (la
llamada a RecalculaFactura funciona ok), pero en la ventana original, da
igual que salga del registro y vuelva a entrar, la tabla en memoria no
se ha enterado del cambio realizado en la base de datos.
¿como haría para obligarle a releer ese registro en concreto?
Al hilo de esto, si yo quiero poner un botón "refrescar" una solución
sería almacenar la posición actual (clave primaria del registro), llamar
al método Fill ( facturasTableAdapter.Fill(dSEjemplo.Facturas); ) y
volver a posicionarme en el registro original. ¿alguna forma mejor de
hacerlo?
Leer las respuestas