Witam!
Mam problem z "wykrywaniem" zmian w datasecie: mianowicie zrobilem cos takiego na swoje potrzeby:
http://msdn2.microsoft.com/en-us/library/4esb49b4(VS.80).aspx
No i jak wykasuje wiersz z dataseta to jest to wykrywane, natomiast zmiana, dodatnie nowego niestety nie. Idąc dalej probujac zrobic update (zapis do bazy danych) zadne zmiany nie sa zapisywane :/
moj kod:
AGCCarsDataSet.CarsDataTable deletedCars = (AGCCarsDataSet.CarsDataTable)aGCCarsDataSet.Cars.GetChanges(DataRowState.Deleted);
if (deletedCars != null)
{
Debug.WriteLine("deletedCars: " + deletedCars.Count.ToString() + ", FCode: ");
}
AGCCarsDataSet.CarsDataTable newCars = (AGCCarsDataSet.CarsDataTable)aGCCarsDataSet.Cars.GetChanges(DataRowState.Added);
if (newCars != null) Debug.WriteLine("newCars: " + newCars.Count.ToString());
AGCCarsDataSet.CarsDataTable modifiedCars = (AGCCarsDataSet.CarsDataTable)aGCCarsDataSet.Cars.GetChanges(DataRowState.Modified);
if (modifiedCars != null) Debug.WriteLine("modifiedCars: " + modifiedCars.Count.ToString());
AGCCarsDataSet.CarsDataTable unchangedCars = (AGCCarsDataSet.CarsDataTable)aGCCarsDataSet.Cars.GetChanges(DataRowState.Unchanged);
if (unchangedCars != null) Debug.WriteLine("unchangedCars: " + unchangedCars.Count.ToString());
try
{
// Remove all deleted records.
if (deletedCars != null)
{
carsTableAdapter.Update(deletedCars);
}
// Add new records.
if (newCars != null)
{
carsTableAdapter.Update(newCars);
}
// Update all modified records.
if (modifiedCars != null)
{
carsTableAdapter.Update(modifiedCars);
}
}
catch (System.Exception ex)
{
MessageBox.Show("Update failed: " + ex);
}
finally
{
if (deletedCars != null)
{
deletedCars.Dispose();
}
if (newCars != null)
{
newCars.Dispose();
}
if (modifiedCars != null)
{
modifiedCars.Dispose();
}
}
aGCCarsDataSet.AcceptChanges();
}
Co jest nie tak? majac 4 wiersze zmieniajac np 3 i kasujac ostatni dostaje w wyniku 1 usuniety, 3 niezmodyfikowane :/ Niestety nawet ten jeden usuniety nie jest usowany z bazy...
Nigdzie bledow kompilator nie zglasza.
Gdzie szukac przyczyny ?