Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rodrigo1

DataAdapter - Access e Parametro

Recommended Posts

e ae pessoal, to tentando preencher um dataset com um OleDbDataAdapter, e nao consigo passa um simples parametro, como posso arrumar isso por favor, perdi umas 4 horas de trampo já nesse problema, agradeço se puderem me ajudar

 

    Dim da As New OleDbDataAdapter("SELECT * FROM Produtos WHERE Segmento=@Segmento", Dados.StringConexao)
        da.SelectCommand.Parameters("@Segmento").Value = vSegmento

Ja tentei com new oledbparameter e de vaaaarios outros jeitos, n sei mais o q fazer, mto obrigado pela atencao

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, valeu a resposta, mto bom o tutorial, até entendi algumas coisas a mais

 

porem ainda nao consigo receber o valor do parametro

 

        Dim vSegmento As String = Request.QueryString("Segmento")
        If vSegmento = Nothing Or vSegmento = "" Then vSegmento = "8"


        Dim oConn As New OleDbConnection(Dados.StringConexao)

        Dim vSql As String = "SELECT * FROM Produtos WHERE Segmento = ?"
        Dim da As OleDbDataAdapter = New OleDbDataAdapter
        Dim oCmd As OleDbCommand = New OleDbCommand(vSql, oConn)

        da.SelectCommand = oCmd

        oCmd.Parameters.Add("@Segmento", OleDbType.VarChar, 3).Value = vSegmento

        Dim ds As DataSet = New DataSet
        da.Fill(ds)

Erro : Nenhum valor foi fornecido para um ou mais parâmetros necessários.

 

 

nao sei mais o q tentar aqui, mto obrigado pela atencao

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já tentei assim tbm e nao deu, tá dificil

  Dim oConn As New OleDbConnection(Dados.StringConexao)

        Dim vSql As String = "SELECT * FROM Produtos WHERE Segmento=@Segmento"
        Dim da As OleDbDataAdapter = New OleDbDataAdapter
        Dim oCmd As OleDbCommand = New OleDbCommand(vSql, oConn)



        oCmd.Parameters.Add("@Segmento", OleDbType.varchar, 3).Value = vSegmento

        da.SelectCommand = oCmd

        Dim ds As DataSet = New DataSet
        da.Fill(ds)


Compartilhar este post


Link para o post
Compartilhar em outros sites

A minha variavel pega o querystring Segmento,

e o banco de dados q estou usando é access.

 

segue o codigo com a atribuicao da variavel

        Dim vSegmento As String = Request.QueryString("Segmento")
        If vSegmento = Nothing Then vSegmento = "8"


        Dim oConn As New OleDbConnection(Dados.StringConexao)

        Dim vSql As String = "SELECT * FROM Produtos WHERE Segmento=@Segmento"
        Dim da As OleDbDataAdapter = New OleDbDataAdapter
        Dim oCmd As OleDbCommand = New OleDbCommand(vSql, oConn)



        oCmd.Parameters.Add("@Segmento", OleDbType.VarChar, 3).Value = vSegmento

        da.SelectCommand = oCmd

        Dim ds As DataSet = New DataSet
        da.Fill(ds)

Eu testei atribuir o valor direto no parametro e me retornou todos os dados do BD como se estivesse ignorando o where:

  oCmd.Parameters.Add("@Segmento", OleDbType.VarChar, 3).Value = "8"

Mto obrigado pelas respostas

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloque o:

oCmd.Parameters.Add("@Segmento", OleDbType.VarChar, 3).Value = vSegmen

Depois do:

da.SelectCommand = oCmd

Continue alimentando os parâmetro de forma fixa para testes.

Abraços...

 

 

Continua ignorando a clausula WHERE da minha query,

 

e qdo tento com a seguinte linha de codigo ele diz q faltou atribuir um valor ao parametro

Dim vSql As String = "SELECT * FROM Produtos WHERE Segmento=?"

Esta maneira com a interrogacao estava no forum MSDN do link que você me passou Quintelab, mais nem 1 das 2 funciona,nao consigo entender o problema

 

 

Vou postar minha sub page_load para q possa visualizar meu codigo inteiro, peguei a base do codigo da net

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        Dim vSegmento As String = Request.QueryString("Segmento")
        If vSegmento = Nothing Then vSegmento = "8"


        Dim oConn As New OleDbConnection(Dados.StringConexao)

        Dim vSql As String = "SELECT * FROM Produtos WHERE Segmento=@Segmento"
        Dim da As OleDbDataAdapter = New OleDbDataAdapter
        Dim oCmd As OleDbCommand = New OleDbCommand(vSql, oConn)

        da.SelectCommand = oCmd

        oCmd.Parameters.Add("@Segmento", OleDbType.VarChar, 3).Value = vSegmento

        Dim ds As DataSet = New DataSet
        da.Fill(ds)


        Dim objPds As PagedDataSource = New PagedDataSource()
        Dim CurPage As Integer


        Dim intCount As Integer = ds.Tables(0).Rows.Count



        If intCount = 0 Then

            panelCategorias.Visible = False

            lblNoCategorias.Text = "<br><font>Não ha registros</font>"

            lblNoCategorias.Visible = True

        Else

            lblNoCategorias.Visible = False

        End If



        objPds.DataSource = ds.Tables(0).DefaultView

        objPds.AllowPaging = True

        objPds.PageSize = 8



        If Not Request.QueryString("p") Is Nothing Then

            CurPage = CInt(Request.QueryString("p"))

        Else

            CurPage = 0

        End If



        objPds.CurrentPageIndex = CurPage ''-1

        lblCurrentPage.Text = "Page: " + CurPage.ToString()



        If Not objPds.IsFirstPage Then

            lnkPrev.NavigateUrl = Request.CurrentExecutionFilePath + "?p=" + Convert.ToString(CurPage - 1)

        End If

        For i = 1 To objPds.PageCount
            PaginacaoLiteral.Text = PaginacaoLiteral.Text & "<a href='" + Request.CurrentExecutionFilePath + "?p=" + Convert.ToString(i) + "'>" & i & "</a> | "
        Next


        If Not objPds.IsLastPage Then

            lnkNext.NavigateUrl = Request.CurrentExecutionFilePath + "?p=" + Convert.ToString(CurPage + 1)

        End If



        gridCategorias.DataSource = objPds

        gridCategorias.DataBind()

    End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.