Jump to content

Recommended Posts

Posted

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.
Posted

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)

Quando te pedirem peixe.... ensina-os a Pescar!!Hum..lálálálá!!

Posted

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)

Posted

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

Posted

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.

Quando te pedirem peixe.... ensina-os a Pescar!!Hum..lálálálá!!

Posted

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)

Posted

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

Posted

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.