EXCLUIR DADOS BANCO DE DADOS

ALMIR2014 29/01/2015 15:02:41
#444109
Ola Pessoal, boa tarde.
Eu venho aqui com mais uma dúvida que pra muitos deve ser simples, mas que para mim, realmente não é
Eu tenho o seguinte código abaixo:
Private Sub btnExcluir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExcluir.Click
If MsgBox([Ô]Deseja Realmnte excluir este usuário?[Ô], MsgBoxStyle.Exclamation + MsgBoxStyle.YesNo, [Ô]Aviso[Ô]) = MsgBoxResult.Yes Then
If Excluir(txtCodigo.Text) Then
MsgBox([Ô]Registro excluido com sucesso![Ô], MsgBoxStyle.Information, [Ô]Aviso[Ô])
End If
End If
Situacaocampos(False)
SituacaoBotoes(1)
txtCodigo.Enabled = True
LimpaControles(Me)
txtCodigo.Focus()
PreencheDataGrid()
End Sub
Private Function Excluir(ByVal Codigo As Integer) As Boolean
Using Con As OleDbConnection = GetConection()
Try
Con.Open()
Sql = [Ô]Delete From TBBancos Where Codigo = [Ô] & Codigo
Cmd = New OleDbCommand(Sql, Con)
Cmd.ExecuteNonQuery()
Catch ex As Exception
MsgBox([Ô]Não foram encontrados registros com estes parâmetros.[Ô])
Return False
Finally
Con.Dispose()
Cmd.Dispose()
End Try
End Using
End Function
Trata-se de exclusão de dados do Banco de Dados, porém, trata-se de exclusão de um banco, mas existe conta correntes cadastradas utilizando este código de banco que está sendo excluído.
O que eu quero? Fazer com que o sistema faça esta verificação na tabela TBContas e me diga que o banco não pode ser excluído, pois existem contas cadastradas utilizando este banco.
Em uma época remota, tempos de VB6 eu até consegui fazer isso, mas no VB.Net, não tenho nem idéia.
Alguem me ajuda?
TUNUSAT 29/01/2015 15:15:26
#444111
Resposta escolhida
ALMIR2014,

Você NÃO pode deixar [Ô]registros órfãos[Ô] dentro do sistema. Isto é péssimo para o BD.
Você precisa avaliar a necessidade do negócio (regra de negócio).

Por exemplo:
- Você pode deletar tudo em [Ô]Cascata[Ô]?
Isto significa ... se encontrar uma ou muitas conta(s) corrente(s) associada(s) ao código do banco deve apagá-la(s) também?

+ Em caso de [Ô]SIM[Ô] ... Manda bala! Limpa tudo! Fica por conta e risco do usuário (espero sinceramente que ele tenha um sistema eficaz de backup, pois a possibilidade de dar encrenca é alta!)

+ Em caso de [Ô]NÃO[Ô] pode fazer outras coisas...

1 - Avisar ao usuário que você NÃO pode apagar aquele banco enquanto todas as contas correntes associadas não forem apagadas.

Uma solição que gosto muito...
2 - NÃO apagar o banco, mas colocar um campo novo dentro da tabela do banco. Uma FLAG booleana chamada [Ô]RegistroAtivo[Ô] (SIM ou NÃO) ... caso esteja [Ô]NÃO[Ô] este registro não pode aparecer em nenhuma consulta, combobox, relatório, etc. Ele fica lá só para que não seja perdida a [Ô]Integridade referencial[Ô] das tabelas. Em vez de apagar o registro do banco, você [Ô]seta[Ô] a variável boleana para INATIVO (NÃO).

[][ô]s,
Tunusat.
NICKOSOFT 29/01/2015 15:55:14
#444113
se o caso for apagar tudo em cascata, nada q um bom banco montado com relacoes bem definidas nao resolva.....

antes de vc dar o delete, faca um select na tabela de contas, onde o banco seja = o codigo q passou para a function (deve haver essa relacao), se o retorno desse select for mais q 0 linhas, significa q achou contas, entao da algum alerta, se for 0, nao achou contas relacionadas ao banco apaga...ou define como inativo, essa ideia é muito boa pq sempre depois de um bom tempo apagado algo o cidadao sempre fala q queria ver algo daqueles dados....
TUNUSAT 29/01/2015 16:27:37
#444116
NICKOSOFT,

Citação:

... essa ideia é muito boa pq sempre depois de um bom tempo apagado algo o cidadao sempre fala q queria ver algo daqueles dados....



KKKKK! Pode crer!

[][ô]s,
Tunusat.
ALMIR2014 29/01/2015 18:19:55
#444120
Sugestão muito bom a de inativar ao invés de deletar.
Gostei
Por isso estou aqui, aprendendo.
Obrigado amigos.
Tópico encerrado , respostas não são mais permitidas