Hallo,
<br>
ich wollte in meinem Programm ein Datensatz löschen.
<br>
Der 1.Weg den ich probiert habe:
<br><br>
<pre>
//Deklarationen
private TDSFirmaPersonal dsFirmaPersonal;
private CurrencyManager aCM;
public ucListSDPersonal()
{
InitializeComponent();
//Singleton
dmPersonal = TdmPersonal.GetDataModuleInstance();
//liefert TypedDataSet
dsFirmaPersonal = dmPersonal.GetData();
aCM = (CurrencyManager)BindingContext[dsFirmaPersonal.SD_FIRMA_PERSONAL];
}
private void miDelete_Click(object sender, System.EventArgs e)
{
int CurrentPosition = aCM.Position;
aCM.RemoveAt(CurrentPosition);
if(dsFirmaPersonal.HasChanges())
{
dmPersonal.SaveData(dsFirmaPersonal);
}
}
</pre>
<br><br>
Bei dieser Version erhalte ich eine DBConcurrencyException.<br>
Dies ist jedoch unmöglich, da ich der einzige bin, der in diesem Moment auf das Programm zugreift<br>
Der 2.Weg den ich probiert habe:
<br><br>
<pre>
private void miDelete_Click(object sender, System.EventArgs e)
{
int CurrentPosition = aCM.Position;
dsFirmaPersonal.SD_FIRMA_PERSONAL.Rows[CurrentPosition].Delete();
if(dsFirmaPersonal.HasChanges())
{
dmPersonal.SaveData(dsFirmaPersonal);
}
}
</pre>
<br><br>
hier ist allerdings der Fall, das dsFirmaPersonal.HasChanges() False zurückliefert und somit SaveData nicht<br>
aufgerufen wird.<br><br>
<pre>
public void SaveData(TDSFirmaPersonal aDS)
{
sqlCon.Open();
try
{
sqlDA_SDFirmaPersonal.Update(aDS);
}
catch(System.Data.SqlClient.SqlException e)
{
string s = TSQLFormatEx.FormatSQLException(e);
MessageBox.Show(s);
}
catch(System.Data.DBConcurrencyException e)
{
MessageBox.Show("Kein Datensatz zum löschen gefunden!");
}
finally
{
sqlCon.Close();
}
}
</pre>
<br>
Kennt jemand eine Lösung dafür?
Kann es sein, das dies an einer TimeStamp-Spalte in der DB liegen kann?
<br>
ich wollte in meinem Programm ein Datensatz löschen.
<br>
Der 1.Weg den ich probiert habe:
<br><br>
<pre>
//Deklarationen
private TDSFirmaPersonal dsFirmaPersonal;
private CurrencyManager aCM;
public ucListSDPersonal()
{
InitializeComponent();
//Singleton
dmPersonal = TdmPersonal.GetDataModuleInstance();
//liefert TypedDataSet
dsFirmaPersonal = dmPersonal.GetData();
aCM = (CurrencyManager)BindingContext[dsFirmaPersonal.SD_FIRMA_PERSONAL];
}
private void miDelete_Click(object sender, System.EventArgs e)
{
int CurrentPosition = aCM.Position;
aCM.RemoveAt(CurrentPosition);
if(dsFirmaPersonal.HasChanges())
{
dmPersonal.SaveData(dsFirmaPersonal);
}
}
</pre>
<br><br>
Bei dieser Version erhalte ich eine DBConcurrencyException.<br>
Dies ist jedoch unmöglich, da ich der einzige bin, der in diesem Moment auf das Programm zugreift<br>
Der 2.Weg den ich probiert habe:
<br><br>
<pre>
private void miDelete_Click(object sender, System.EventArgs e)
{
int CurrentPosition = aCM.Position;
dsFirmaPersonal.SD_FIRMA_PERSONAL.Rows[CurrentPosition].Delete();
if(dsFirmaPersonal.HasChanges())
{
dmPersonal.SaveData(dsFirmaPersonal);
}
}
</pre>
<br><br>
hier ist allerdings der Fall, das dsFirmaPersonal.HasChanges() False zurückliefert und somit SaveData nicht<br>
aufgerufen wird.<br><br>
<pre>
public void SaveData(TDSFirmaPersonal aDS)
{
sqlCon.Open();
try
{
sqlDA_SDFirmaPersonal.Update(aDS);
}
catch(System.Data.SqlClient.SqlException e)
{
string s = TSQLFormatEx.FormatSQLException(e);
MessageBox.Show(s);
}
catch(System.Data.DBConcurrencyException e)
{
MessageBox.Show("Kein Datensatz zum löschen gefunden!");
}
finally
{
sqlCon.Close();
}
}
</pre>
<br>
Kennt jemand eine Lösung dafür?
Kann es sein, das dies an einer TimeStamp-Spalte in der DB liegen kann?
Comment