• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

vasco16

Como deixar função retornar valor nulo?

12 mensagens neste tópico

Boas pessoal gostaria de saber como posso deixar esta função retornar um valor nulo?

Try
            Dim db As New OleDbConnection(Stand.My.Settings.ligacaoBD)
            db.Open()
            Dim cmd As New OleDbCommand

            With cmd
                .Connection = db
                .CommandType = CommandType.Text
                .CommandText = strSql
                Return .ExecuteScalar()
            End With
            cmd.Dispose()
        Catch ex As OleDbException
            Return " "
        End Try

dá erro neste linha

 Return .ExecuteScalar()

e diz :

A conversão do tipo 'DBNull' para o tipo 'String' não é válida.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

crias uma função para tratamento de erros...

Por exemplo....

''' <summary>

    ''' Função para testar variáveis

    ''' </summary>

    ''' <param name="p_test">Input a testar</param>

    ''' <param name="p_ret">Valor de Retorno</param>

    ''' <returns>Devolve um valor prédefinido</returns>

    ''' <remarks></remarks>

    Public Function nz(ByVal p_test, ByVal p_ret)

        If p_test Is Nothing Then

            Return p_ret

        ElseIf IsDBNull(p_test) Then

            Return p_ret

        ElseIf Len(p_test.ToString) = 0 Then

            Return p_ret

        Else

            Return p_test

        End If

    End Function

Depois é so aplicar qq coisa do genero

Return nz(.ExecuteScalar(),0)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

crias uma função para tratamento de erros...

Por exemplo....

''' <summary>

    ''' Função para testar variáveis

    ''' </summary>

    ''' <param name="p_test">Input a testar</param>

    ''' <param name="p_ret">Valor de Retorno</param>

    ''' <returns>Devolve um valor prédefinido</returns>

    ''' <remarks></remarks>

    Public Function nz(ByVal p_test, ByVal p_ret)

        If p_test Is Nothing Then

            Return p_ret

        ElseIf IsDBNull(p_test) Then

            Return p_ret

        ElseIf Len(p_test.ToString) = 0 Then

            Return p_ret

        Else

            Return p_test

        End If

    End Function

Depois é so aplicar qq coisa do genero

Return nz(.ExecuteScalar(),0)

sim isto mesmo.

obrigado B)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

procura enteder o que faz..esta função pode ter 1001 utilidades.... para mim tem...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

procura enteder o que faz..esta função pode ter 1001 utilidades.... para mim tem...

o meu objectivo é mesmo só que o programa nao reclame quando for buscar um campo vazio

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sim..mas situações dessas acontecem muitas vezes quando comparas objectos... era aí que queria chegar... por exemplo se te referires ao valor de uma textbox numa igualdade e ela estiver vazia... dá logo erro... com esta função evitas isso.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sim..mas situações dessas acontecem muitas vezes quando comparas objectos... era aí que queria chegar... por exemplo se te referires ao valor de uma textbox numa igualdade e ela estiver vazia... dá logo erro... com esta função evitas isso.

hum estou a ver B)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

neste procedimento posso usar essa tua função?

Sub encomendas()

        'Retorna os nomes dos produtos da tabela  produtos

        Dim strConn As New OleDb.OleDbConnection(Stand.My.Settings.ligacaoBD)

        strConn.Open()

        Dim DSet As New DataSet(), SQLStr As String

        Dim cmd As System.Data.OleDb.OleDbCommand

        Dim dbAdaptr As System.Data.OleDb.OleDbDataAdapter = New System.Data.OleDb.OleDbDataAdapter()

        'cria o objeto datarow e datatable

        Dim tRow As DataRow, tTbl As DataTable

        'intruções

        With dbAdaptr

            .TableMappings.Add("Table", "encomendas")

            SQLStr = "Select email from encomendas"

            cmd = New System.Data.OleDb.OleDbCommand(SQLStr, strConn)

            cmd.CommandType = CommandType.Text

            .SelectCommand = cmd

            .Fill(DSet)

            .Dispose()

        End With

        DSet.AcceptChanges()

        tTbl = DSet.Tables.Item(0)

        DSet.Dispose()

        strConn.Close()

        ' preenche a combo combobox

        encomendasCombo.Text = ""

        encomendasCombo.Items.Clear()

        encomendasCombo.BeginUpdate()

        ' carrega a combo com o nome dos fornecedores

        For Each tRow In tTbl.Rows

            encomendasCombo.Items.Add(tRow("email").ToString)

        Next

        encomendasCombo.EndUpdate()

    End Sub

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

neste caso..nao me parece ter qualquer utilidade...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

neste caso..nao me parece ter qualquer utilidade...

mas se eu nao tiver dados aqui

SQLStr = "Select email from encomendas"

ele da-me este erro:

InvalidArgument=Valor de '4' inválido para 'index'. Nome do parâmetro: index

por ter este código

    For i As Integer = 0 To clientescombo.Items.Count - 1

            If String.IsNullOrEmpty(destino.Text) = True Then

                destino.Text = encomendasCombo.Items(i).ToString.Trim

            Else

                destino.Text &= ", " & encomendasCombo.Items(i).ToString.Trim

            End If

        Next

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

isso nao tem nada a ver..tem a ver com a forma como estas a carregar provavelmente isto: encomendasCombo.Items(i).ToString.Trim

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora