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;
}