EXCLUIR DADOS E ALTERAR

JOHNHEY 17/09/2010 21:10:44
#353271
ola pessoal fiz duas funçoes, excluir e alterar, antes de ter salvo e fechado o projecto estava tudo otimo, mas depois quando abri novamente da dois avisos.

1º aviso
Variable [ô]excluirbd[ô] is used before it has been assigned a value. A null reference exception could result at runtime. E:\PRGTIAL\TIAL\TIAL\Cadastro.vb 58 16 TIAL

2º aviso
Variable [ô]alteraregbd[ô] is used before it has been assigned a value. A null reference exception could result at runtime. E:\PRGTIAL\TIAL\TIAL\Cadastro.vb 100 16 TIAL

na função excluir coloquei da seguinte forma:
Function excluirbd(ByVal identificador As Integer) As Boolean
Dim sqlexcluir As String = [Ô]Delete from TBUsuario where Registo = [Ô] & identificador
Dim conexcluir As New SqlConnection(strconcad)
Dim comandoexcluir As New SqlCommand(sqlexcluir, conexcluir)
Try
conexcluir.Open()
comandoexcluir.ExecuteNonQuery()
Catch ex As SqlException
MessageBox.Show(ex.Message, ex.Number.ToString)
Finally
conexcluir.Close()
End Try
Return excluirbd
End Function

no botao excluir coloquei assim:
Private Sub cmdexcluir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdexcluir.Click
[ô]verifica se o não foi localizado nenhum registo antes da alteração
If txtreg.Text = [Ô][Ô] Then
MsgBox([Ô]Para excluir, é necessário localizar um registo antes[Ô], vbInformation, [Ô]Erro excluir...[Ô])
Else
conexaodados.excluirbd(txtreg.Text)
MessageBox.Show([Ô]Utilizador excluído com sucesso[Ô])
End If
End Sub

na função alterar:
Function alteraregbd(ByVal identificador As Integer, ByVal Nome As String, ByVal Senha As String, ByVal confsenha As String, ByVal incluir As String, ByVal novo As String, ByVal excluir As String, ByVal salvar As String, ByVal alterar As String, ByVal pesquisar As String, ByVal utilizador As String, ByVal datainclusao As String) As Boolean
Dim sqlalterar As String = [Ô]update tbusuario set Nome = @Nome, senha = @Senha, confsenha = @confsenha,incluir = @incluir, novo = @novo, excluir = @excluir, salvar = @salvar, alterar = @alterar, pesquisar = @pesquisar,utilizador = @utilizador,datainclusao = @datainclusao where registo = @identificador[Ô]
Dim conalterar As New SqlConnection(strconcad)
Dim comandoalterar As New SqlCommand(sqlalterar, conalterar)

comandoalterar.Parameters.Add([Ô]@Nome[Ô], SqlDbType.VarChar, 25)
comandoalterar.Parameters([Ô]@Nome[Ô]).Value = Nome
comandoalterar.Parameters.Add([Ô]@Senha[Ô], SqlDbType.VarChar, 25)
comandoalterar.Parameters([Ô]@Senha[Ô]).Value = Senha
comandoalterar.Parameters.Add([Ô]@confsenha[Ô], SqlDbType.VarChar, 25)
comandoalterar.Parameters([Ô]@confsenha[Ô]).Value = confsenha
comandoalterar.Parameters.Add([Ô]@incluir[Ô], SqlDbType.Bit)
comandoalterar.Parameters([Ô]@incluir[Ô]).Value = incluir
comandoalterar.Parameters.Add([Ô]@novo[Ô], SqlDbType.Bit)
comandoalterar.Parameters([Ô]@novo[Ô]).Value = novo
comandoalterar.Parameters.Add([Ô]@excluir[Ô], SqlDbType.Bit)
comandoalterar.Parameters([Ô]@excluir[Ô]).Value = excluir
comandoalterar.Parameters.Add([Ô]@salvar[Ô], SqlDbType.Bit)
comandoalterar.Parameters([Ô]@salvar[Ô]).Value = salvar
comandoalterar.Parameters.Add([Ô]@alterar[Ô], SqlDbType.Bit)
comandoalterar.Parameters([Ô]@alterar[Ô]).Value = alterar
comandoalterar.Parameters.Add([Ô]@pesquisar[Ô], SqlDbType.Bit)
comandoalterar.Parameters([Ô]@pesquisar[Ô]).Value = pesquisar
comandoalterar.Parameters.Add([Ô]@utilizador[Ô], SqlDbType.Char, 10)
comandoalterar.Parameters([Ô]@utilizador[Ô]).Value = utilizador
comandoalterar.Parameters.Add([Ô]@datainclusao[Ô], SqlDbType.Char, 10)
comandoalterar.Parameters([Ô]@datainclusao[Ô]).Value = datainclusao
comandoalterar.Parameters.Add([Ô]@identificador[Ô], SqlDbType.Int)
comandoalterar.Parameters([Ô]@identificador[Ô]).Value = identificador

Try
conalterar.Open()
comandoalterar.ExecuteNonQuery()

Catch ex As SqlException
MessageBox.Show(ex.Message, ex.Number.ToString)
Finally
conalterar.Close()
End Try
Return alteraregbd
End Function

no botão alterar:

Private Sub cmdalterar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdalterar.Click
[ô]verifica se o não foi localizado nenhum registo antes da alteração
Dim alterou As Boolean
If txtreg.Text = [Ô][Ô] Then
MsgBox([Ô]Para alterar, é necessário localizar um registo antes[Ô], vbInformation, [Ô]Erro excluir...[Ô])
Else
Dim vdata As String
vdata = Format(Today, [Ô]dd/MM/yyyy[Ô])
alterou = conexaodados.alteraregbd(txtreg.Text, txtusuario.Text, txtsenha.Text, txtconfsenha.Text, CheckBox2.Enabled, CheckBox2.Enabled, CheckBox3.Enabled, CheckBox4.Enabled, CheckBox5.Enabled, CheckBox6.Enabled, registo1, vdata)
If alterou = True Then
MessageBox.Show([Ô]Utilizador alterado com sucesso[Ô])
Else
MessageBox.Show([Ô]Erro ao alterar[Ô])
End If

End If
End Sub

o que tenho de errado? como corrigir? desde ja agradeço a todos pelo apoio.
FOXMAN 18/09/2010 19:22:39
#353339
Resposta escolhida
Function excluirbd(ByVal identificador As Integer) As Boolean
Dim sqlexcluir As String = [Ô]Delete from TBUsuario where Registo = [Ô] & identificador
Dim conexcluir As New SqlConnection(strconcad)
Dim comandoexcluir As New SqlCommand(sqlexcluir, conexcluir)
Try
conexcluir.Open()
comandoexcluir.ExecuteNonQuery()
Catch ex As SqlException
Return False
MessageBox.Show(ex.Message, ex.Number.ToString)
Finally
conexcluir.Close()
End Try
Return True
End Function


Essa sua função retorna um valor boolean, e vc estava retornando ela sem setar valores para ela, qdo uma função for do tipo boolean ou vc seta um valor para ela e depois retorna ela(já sendo True ou False) ou vc retorna True ou False dependendo do resultado da função.

Para a segunda é a mesma situação.

.....
Try
conalterar.Open()
comandoalterar.ExecuteNonQuery()

Catch ex As SqlException
Return False
MessageBox.Show(ex.Message, ex.Number.ToString)
Finally
conalterar.Close()
End Try
Return True
End Function


Veja se resolve ...
Tópico encerrado , respostas não são mais permitidas