Bijwerken van de hoofding van een document uit het commercieel beheer in AfterSave

0000003273     -      16-01-2025

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:

Zoom
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


Functionele cookies: Cookies die nodig zijn voor het gebruik van de website en voorkeurscookies. Ze bevatten geen persoonsgegevens. (Meer informatie)

Analytische cookies: Verzamelen van statistieken met betrekking tot het gedrag van internetgebruikers. (Meer informatie)

Marketingcookies: Om bezoekers op verschillende websites te volgen voor advertentiedoeleinden. (Meer informatie)