vasco16 Posted May 24, 2009 at 10:23 PM Report #266987 Posted May 24, 2009 at 10:23 PM 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.
José Lopes Posted May 24, 2009 at 10:28 PM Report #266988 Posted May 24, 2009 at 10:28 PM 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á!!
vasco16 Posted May 24, 2009 at 10:32 PM Author Report #266990 Posted May 24, 2009 at 10:32 PM 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)
José Lopes Posted May 24, 2009 at 10:33 PM Report #266991 Posted May 24, 2009 at 10:33 PM procura enteder o que faz..esta função pode ter 1001 utilidades.... para mim tem... Quando te pedirem peixe.... ensina-os a Pescar!!Hum..lálálálá!!
vasco16 Posted May 24, 2009 at 10:41 PM Author Report #266994 Posted May 24, 2009 at 10:41 PM 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
José Lopes Posted May 24, 2009 at 10:45 PM Report #266996 Posted May 24, 2009 at 10:45 PM 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á!!
vasco16 Posted May 24, 2009 at 11:06 PM Author Report #266999 Posted May 24, 2009 at 11:06 PM 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)
vasco16 Posted May 25, 2009 at 05:45 PM Author Report #267191 Posted May 25, 2009 at 05:45 PM 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
José Lopes Posted May 25, 2009 at 08:26 PM Report #267216 Posted May 25, 2009 at 08:26 PM neste caso..nao me parece ter qualquer utilidade... Quando te pedirem peixe.... ensina-os a Pescar!!Hum..lálálálá!!
vasco16 Posted May 25, 2009 at 08:47 PM Author Report #267220 Posted May 25, 2009 at 08:47 PM 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
José Lopes Posted May 25, 2009 at 08:51 PM Report #267221 Posted May 25, 2009 at 08:51 PM isso nao tem nada a ver..tem a ver com a forma como estas a carregar provavelmente isto: encomendasCombo.Items(i).ToString.Trim Quando te pedirem peixe.... ensina-os a Pescar!!Hum..lálálálá!!
vasco16 Posted May 25, 2009 at 08:55 PM Author Report #267223 Posted May 25, 2009 at 08:55 PM sim é isso mesmo.. ha volta a dar ?
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now