Storing DataView values in a List [closed]

0

I'm maintaining a discount system for a customer, it was ready but not functional, I just applied discount validation if there was a single item.

What I need is to build a list that will be used by a query to query the database.

  Dim produtoID As New List(Of Integer)()
  Dim ProdutoBandeira As New List(Of Boolean)()

  While (reader3.Read())
                produtoID.Add(reader3.Item("ID"))
                ProdutoBandeira.Add(reader3.Item("BandeiraProduto"))
  End While

That's when I need to create this list, unfortunately it only exists if there is a single element

This is the complete code

Protected Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click


        Dim MyConnection = New OleDbConnection(CONEXAO)
        MyConnection.Open()
        Dim comando2 As New OleDbCommand
        comando2.Connection = MyConnection
        comando2.CommandText = "SELECT * from loja_codigo WHERE codigo = '" & cupomDesconto.Text & "'"
        Dim reader2 As OleDbDataReader = comando2.ExecuteReader()
        Dim desconto As Integer
        Dim TipoCupom As Boolean

        While reader2.Read
            desconto = reader2.Item("Desconto")
            TipoCupom = reader2.Item("BandeiraProduto")
        End While

        Dim MyConnection2 = New OleDbConnection(CONEXAO)
        MyConnection2.Open()
        Dim comando3 As New OleDbCommand
        comando3.Connection = MyConnection

        Dim listaProdutos As New List(Of String)()

        For Each ObterProduto As String In Session("Produtos")
            listaProdutos.Add(ObterProduto)
        Next

        comando3.CommandText = "SELECT * from Loja_Produtos WHERE Nome = '" & String.Join(",", listaProdutos.ToArray()) & "'"


        Dim reader3 As OleDbDataReader = comando3.ExecuteReader()
        Dim produtoID As New List(Of Integer)()
        Dim ProdutoBandeira As New List(Of Boolean)()

        While (reader3.Read())
                produtoID.Add(reader3.Item("ID"))
                ProdutoBandeira.Add(reader3.Item("BandeiraProduto"))
        End While

            Dim precoItem = FormatCurrency(CDec(RTotalPedido.Value))

            Dim valorDesconto As Double
            valorDesconto = precoItem - desconto

            If desconto > 0 Then
                If LValorPedido.Text.Contains("Desconto Aplicado") Then
                    Response.Write("<script language='javascript'>alert('Cupom Aplicado!');</script>")
                End If
                If Not LValorPedido.Text.Contains("Desconto Aplicado") Then
                    If (ProdutoBandeira.Contains(TipoCupom)) Then
                        LValorPedido.Text = "Desconto Aplicado! Desconto obtido: " & FormatCurrency(CDec(desconto)) & "<br /> Valor total do pedido: " & FormatCurrency(CDec(valorDesconto))
                    Else
                        LValorPedido.Text = "O desconto é aplicável para outra categoria de produtos"
                    End If
                End If

            ElseIf cupomDesconto.Text = "" Then
                LValorPedido.Text = "Valor total do pedido: " & precoItem
            Else
                Response.Write("<script language='javascript'>alert('Cupom Inválido!');</script>")
                Response.Write("<script language='javascript'>window.location='/carrinho.aspx';</script>")
            End If
            RTotalPedido.Value = precoItem - desconto
            Session("valorDesconto") = -desconto
    End Sub
    
asked by anonymous 27.10.2014 / 18:03

1 answer

0

Resolved as follows:

        Protected Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        'Obtem Códigos
        Dim MyConnection = New OleDbConnection(Conexao)
        MyConnection.Open()
        Dim comando2 As New OleDbCommand
        comando2.Connection = MyConnection
        comando2.CommandText = "SELECT * from loja_codigo WHERE codigo = '" & cupomDesconto.Text & "'"
        Dim reader2 As OleDbDataReader = comando2.ExecuteReader()
        Dim desconto As Integer
        Dim TipoCupom As Boolean

        While reader2.Read
            desconto = reader2.Item("Desconto")
            TipoCupom = reader2.Item("BandeiraProduto")
        End While

        'Obtem Produtos
        Dim MyConnection2 = New OleDbConnection(Conexao)
        MyConnection2.Open()
        Dim comando3 As New OleDbCommand
        comando3.Connection = MyConnection

        Dim listaProdutos As New List(Of String)()

        For Each ObterProduto As String In Session("Produtos")
            listaProdutos.Add(ObterProduto)
        Next

        Dim produtoID As New List(Of Integer)()
        Dim ProdutoBandeira As New List(Of Boolean)()

        Dim QueryList As New List(Of String)()

        'Gera Query
        For Each item As String In listaProdutos
            QueryList.Add("Nome='" + item + "' OR")
        Next

        'Transforma Query em uma string e remove o ultimo OR
        Dim Query = "SELECT * from Loja_Produtos WHERE " & String.Join(" ", QueryList.ToArray()).ToString()
        Dim AjusteQuery = Query.Remove(Query.Length - 2)

        'Executa 
        comando3.CommandText = AjusteQuery

        'Adiciona ID, Bandeira do Produto em uma Lista
        Dim reader3 As OleDbDataReader = comando3.ExecuteReader()

        While (reader3.Read())
            produtoID.Add(Integer.Parse(reader3.Item("ID")))
            ProdutoBandeira.Add(Boolean.Parse(reader3.Item("BandeiraProduto")))
        End While

        Dim precoItem = FormatCurrency(CDec(RTotalPedido.Value))

        Dim valorDesconto As Double
        valorDesconto = precoItem - desconto

        If desconto > 0 Then
            If LValorPedido.Text.Contains("Desconto Aplicado") Then
                Response.Write("<script language='javascript'>alert('Cupom Aplicado!');</script>")
            End If
            If Not LValorPedido.Text.Contains("Desconto Aplicado") Then
                'Compara se o carrinho possui produto bandeira = cupom bandeira
                If (ProdutoBandeira.Contains(TipoCupom)) Then
                    LValorPedido.Text = "Desconto Aplicado! Desconto obtido: " & FormatCurrency(CDec(desconto)) & "<br /> Valor total do pedido: " & FormatCurrency(CDec(valorDesconto))
                ElseIf (TipoCupom = False) Then
                    LValorPedido.Text = "Desconto aplicável a compras que possuem produtos TIPO X"
                ElseIf (TipoCupom = True) Then
                    LValorPedido.Text = "Desconto aplicável a compras que possuem produtos TIPO Y"
                End If
            End If

        ElseIf cupomDesconto.Text = "" Then
            LValorPedido.Text = "Valor total do pedido: " & precoItem
        Else
            Response.Write("<script language='javascript'>alert('Cupom Inválido!');</script>")
            Response.Write("<script language='javascript'>window.location='/carrinho.aspx';</script>")
        End If
        RTotalPedido.Value = precoItem - desconto
        Session("valorDesconto") = -desconto
        End Sub
    
27.10.2014 / 19:18