首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >视觉基本警告

视觉基本警告
EN

Stack Overflow用户
提问于 2016-01-25 15:00:12
回答 1查看 41关注 0票数 0

我收到了这3条警告。我想知道有什么办法能修好它,谢谢!

警告:

警告1变量'Id_Utilizador‘在被赋值之前被使用。在运行时可能会产生空引用异常。C:\Users\tiago\Desktop\Portaria\Portaria_Programa\Portaria_Programa\frmAdmin_NewEdit.vb 332 37 Portaria_Programa

警告2变量'Id_Modulo‘在被赋值之前被使用。在运行时可能会产生空引用异常。C:\Users\tiago\Desktop\Portaria\Portaria_Programa\Portaria_Programa\frmAdmin_NewEdit.vb 332 60 Portaria_Programa

警告3变量'DadosSai‘在被赋值之前被使用。在运行时可能会产生空引用异常。C:\Users\tiago\Desktop\Portaria\Portaria_Programa\Portaria_Programa\frmRel_EntradasSaidas.vb 222 37 Portaria_Programa

代码:

代码语言:javascript
复制
Private Sub NovoAcesso()

    Dim Id_Utilizador
    Dim Id_Modulo

    Dim Count

    If (cmbUtilizadores.Text <> "") Then

        If (cmbModulos.Text <> "") Then

            Cn.Open(cStringCon)
            Rs.Open("Select count(id_utilizador), id_utilizador from acessos_utilizadores where nome_utilizador like '" & cmbUtilizadores.Text & "'", Cn)

            Count = Rs.GetRows

            Rs.Close()

            If (Count(0, 0) > 0) Then

                Id_Utilizador = Count(1, 0)

                Rs.Open("Select count(id_modulo), id_modulo from acessos_modulos where nome_modulo like '" & cmbModulos.Text & "'", Cn)

                Count = Rs.GetRows

                Rs.Close()

                If (Count(0, 0) > 0) Then

                    Id_Modulo = Count(1, 0)

                    Rs.Open("Select count(id_acesso) from acessos_acessos where id_utilizador = " & Id_Utilizador & "", Cn)

                    Count = Rs.GetRows

                    Rs.Close()

                    If (Count(0, 0) > 0) Then

                        Msg = "O utilizador seleccionado já dispõe de um acesso."

                    End If

                Else

                    Msg = "Seleccione um módulo da lista."

                End If

            Else

                Msg = "Seleccione um utilizador da lista."

            End If

            Cn.Close()

        Else

            Msg = "Seleccione um módulo da lista."

        End If

    Else

        Msg = "Seleccione um utilizador da lista."

    End If

    If (Msg = "") Then

        Cn.Open(cStringCon)

        Cn.Execute("Insert into acessos_acessos(id_utilizador,id_modulo) " & _
                   "values (" & Id_Utilizador & ", " & Id_Modulo & ")")

        Cn.Close()

        ActGrid = 1

    End If

    Count = Nothing

End Sub
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-25 15:04:33

当您使用Id_UtilizadorId_Modulo值时,它们可能没有值。( DadosSai值不在这段代码中,尽管听起来它具有相同的风险。)

这是因为你并不总是给他们分配一个值。为了举例说明,请考虑以下简化版本:

代码语言:javascript
复制
Dim SomeValue
If SomethingElse = True Then
    SomeValue = SomeOtherValue
End If
UseTheValue(SomeValue)

如果SomethingElse不是True,这段代码会做什么?任何东西都不会分配给这个变量,而且它可以很容易地破坏使用它的函数。

要么用默认值初始化变量,要么确保所有逻辑路径在使用变量之前将值分配给它们。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34995631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档