Fórum Problema em obter último Id da tabela #12740
08/12/2009
0
Eu estou tendo um problema em buscar o MAX(Id) de uma tabela no Access. Na minha camada BLL eu chamo um método de inserção na camada DAL, e quando retorno para a BLL, eu chamo um método para buscar o último Id da tabela, na camada DAL. O problema é que neste último método, ele executa o SELECT (utiliza ExecuteScalar do OleDbCommand), porém o retorno do método para o objeto tem problemas.
Quando tem um registro na tabela, o objeto fica em branco (não nulo, mas fica assim a propriedade Value: Value{}) e quando tem mais de um, ao invés de trazer o último pela função MAX do SELECT, ele traz o penúltimo Id.
Algumas vezes, ao debugar passo a passo o código, o problema não ocorre, mas se deixar executando normal e pegar pelas exceções, que se identifica esse problema.
É estranho dizer, mas é como se ao executar normalmente, fosse muito "rápido" para pegar o Id que acabou de ser inserido na tabela. Você saberiam me informar, que problema seria esse ou como poderia solucionar?
Carlos Nogueira
Curtir tópico
+ 0Posts
09/12/2009
Luiz Maia
Gostei + 0
09/12/2009
Carlos Nogueira
Eu entendi. Já fiz algo similar ao que você fez, mas acho que eu já consegui solucionar o problema e identificar o que estava acontecendo. Vou só me certificar amanhã para ver se é isso mesmo, e se for, eu comento contigo.
Apenas adiantando, por descuidos meus, alguns comandos executados na camada DAL (como insert, update) estavam sendo executados pelo ExecuteNonQuery() mas depois que passava desse método do OleDbCommand, saia dessa camada e eu não havia colocado para fechar a conexão. Só estava fazendo isso quando usava o método ExecuteReader.
Ai o que decidi fazer. Nesses caras que tem insert e update, decidi colocar um finally para verificar se o status da conexão está aberto, e se estiver, que efetuasse o fechamento. Me parece que depois disso, não ocorreu mais problema, nem mesmo um problema de fazer inserção ou alteração na tabela que exibia uma mensagem de vez em quando que o "recurso estava bloqueado".
Se for isso mesmo, descuidos da minha parte., rsrs... Mas vou confirmar e depois te informo, beleza?
Até mais!!
Gostei + 0
10/12/2009
Luiz Maia
Gostei + 0
15/12/2009
Luiz Maia
Gostei + 0
15/12/2009
Carlos Nogueira
Obrigado pela sua atenção!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)