Array
(
)

Tratamento de erro - registro duplicado

Galenosf
   - 27 mai 2008

Boa tarde a todos!

Tenho uma tabela onde cadastrarei sobre a passagem do nosso produto entre fases da montagem final.
Nessa tabela tenho os campo n/s do produto; tipo de passagem, estes dois campos são chave primaria, e não podem ser cadastrados em duplicidade...

A questão é, ao cadastrar em duplicidade é retornado um erro gigantesco pelo navegador e eu gostaria de tratar esse erro e informar o usuário que o registro não foi cadastrado pois esta duplicado. Como faço isso?

Burnbr
   - 30 mai 2008

Boa tarde,

coloque seu bloco de insert dentro de um bloco
try/catch e trate o erro.

quando é insert duplicado ele retorna sempre o mesmo tipo de erro.
Ai vc manda uma msg para o usuario.

Att

Galenosf
   - 30 mai 2008

BurnBr, estou usando essa rotina, veja abaixo:

Try
cmd.ExecuteNonQuery()
limpa_campos(´a´)
Me.MessageBox1.ShowMessage(´Cadastro realizado com sucesso!!!´)
´lbl_info.Text = ´Cadastro realizado com sucesso!!!´
´MsgBox(´Cadastro realizado com sucesso!!!´, MsgBoxStyle.Information, ´Embraer´)
Catch ex As Exception
´If system.Data.OleDb.OleDbException. = -217467259 Then

´End If
Response.Write(ex.ToString())
Finally

End Try

A questão é, como incluir um tratamento de erro que me retorne qual o codigo do erro, que com issso poderei enviar avisos de acordo com a situação ocorrida.

No VB eu uso, o err.number e no .NET?

Abraços

Burnbr
   - 30 mai 2008

a exception de duplicar a chave é um tipo

Catch ex As Exception
´If system.Data.OleDb.OleDbException. = -217467259 Then
vc poe mais um cath

Catch ex As DuplicateIndex ´nao eh esse nome, mas é assim que se faz
´Faz uma coisa
Catch ex As Exception
´Faz outra coisa