Als code probeert de hoofding van een document in het commercieel beheer bij te werken tijdens het opslaan, kan de volgende SQL-fout optreden:
Un ou plusieurs enregistrements de PIEDS_V sont en cours de modification par un autre utilisateur !
Een of meer records van PIEDS_V worden momenteel gewijzigd door een andere gebruiker!
One or more records of PIEDS_V are currently used by another SPID !
Om deze fout te voorkomen, moet u dit patroon volgen:
private void BillingEngine_AfterSave(object sender, EventArgs e)
{
MercatorUi.Engine.Gescom.BillingEngine billingEngine = (MercatorUi.Engine.Gescom.BillingEngine)sender;
using (SqlCommand sqlCom = new SqlCommand())
{
sqlCom.CommandText = @"
update DOCLOCK set spid = @@SPID where (ident = @IDENT) and (spid = @SPID)
update PIEDS_V set ...
update DOCLOCK set spid = @SPID where (ident = @IDENT) and (spid = @@SPID) ".UnIndent(5);
sqlCom.Parameters.AddWithValue("@SPID", MercatorUi.Globals.CurrentSpId);
sqlCom.Parameters.AddWithValue("@IDENT", billingEngine.DocLockIdent).SqlDbType = SqlDbType.Char;
sqlCom.Parameters.AddWithValue("@ID", billingEngine.Id).SqlDbType = SqlDbType.Char;
sqlCom.Parameters.AddWithValue("@JOURNAL", billingEngine.Journal).SqlDbType = SqlDbType.Char;
sqlCom.Parameters.AddWithValue("@PIECE", billingEngine.Piece);
Api.SqlExec(MercatorUi.Globals.RepData, sqlCom);
}
}
Hetzelfde principe is van toepassing op
- CRM-acties
- Boekhoudkundige registraties
- Transferen van magazijnen
- Inventarissen