none
Business Connector .NET -> Problemas com DELETE RRS feed

  • Pergunta

  • Prezados amigos,

     

    Incluí algumas dúvidas nos fóruns microsoft.public.axapta.database e microsoft.public.axapta.programming sobre o Business Connector .NET. Caso tenham disponibilidade gostaria de pedir-lhes que deem uma passadinha por lá...

     

    Minha principal dúvida é com relação ao comando DELETE, que vou resumir aqui:

     

    Durante a execução de meu processo eu posso perceber através do Sql Profiler e através do próprio debug do Visual Studio que o comando delete apaga vários registros. Entretanto após o último commit e término do processo os registros ainda continuam por lá !!! É como se fosse executado um Rollback no final de tudo.

     

    Interessante que durante esse mesmo processo eu executo vários inserts e updates, e estes funcionam perfeitamente bem.

     

    E esse mesmo processo quando executado em um banco de dados Sql Server através da utilização de ADO.NET funciona perfeitamente bem, incluindo os tais comandos DELETES, o que exclui a possibilidade de erro de lógica de meu processo.

     

    Gostaria de saber se existe algum trace ou log no AX que me permita ver o resultado dos comandos executados via Business Connector .NET dentro do próprio Dynamics.

     

    Ou então os senhores teriam alguma sugestão para me dar sobre o que pesquisar ???

     

    Agradeço antecipadamente qualquer ajuda.

     

    Obrigado,

    Marcos Tito.

     

    Já tentei assim:

    ============

     

    public override int Update(SqlDelete sqlDelete)
            {
                sqlDelete.Sql = this;
                string qry = sqlDelete.GetAXClause(); // retorna comando DELETE_FROM...
                try
                {
                    this.BeginTransaction();
                    AxaptaRecord axRecord = axObject.CreateAxaptaRecord(sqlDelete.Table);
                    try
                    {
                        axRecord.ExecuteStmt(qry); 
                        this.Commit();
                    }
                    finally
                    {
                        axRecord.Dispose();
                    }
                }
                catch (Exception ex)
                {
                    this.Rollback();
                    throw new ApplicationException("Erro ao gravar alterações no banco para tabela " + sqlDelete.Table + " " + GetExceptionMessage(ex), ex);
                }

                return 1;
            }

     

    E Já tentei assim:

    ==============

     

            public override int Update(SqlDelete sqlDelete)
            {
                bool at = false;
                sqlDelete.Sql = this;
                string qry = sqlDelete.GetAXClause(); // Retornava SELECT FORUPDATE
                try
                {
                    AxaptaRecord axRecord = axObject.CreateAxaptaRecord(sqlDelete.Table);
                    axRecord.ExecuteStmt(qry);
                    this.BeginTransaction();
                    axObject.TTSBegin();
                    while (axRecord.Found)
                    {
                        axRecord.DoDelete();
                        axRecord.Next();
                    }
                    this.Commit();
                    axObject.TTSCommit();
                }
                catch (Exception ex)
                {
                    this.Rollback();
                    axObject.TTSAbort();
                    throw new ApplicationException("Erro ao gravar alterações no banco para tabela " + sqlDelete.Table + " " + GetExceptionMessage(ex), ex);
                }

                return 1;
            }

    terça-feira, 12 de junho de 2007 02:27