none
Query utilizando IN RRS feed

  • Pergunta

  • Pessoal,

    estou quebrando a cabeça a alguns dias e nao cosigo resolver este problema. tenho uma query que recebe um parametro (@uf) que será um ou mais estados. Estou filtrando isso utilizando um listbox + gridview.

    O problema é que quando eu executo a consulta a query está incluindo aspas duplas no meu parametro ao inves de aspas simples como estou passando.

     

    Dim filtro As String = ""

     

    For Each item As ListItem In ListBox1.Items

     

    If item.Selected = True Then

     

    If filtro = "" Then

    filtro = filtro & item.Value

     

    Else

    filtro =

    "'" + filtro + "'" + "," + "'" + item.Value + "'"

     

    End If

     

    End If

     

    Next

    Me.Label1.Text = filtro
    SqlDataSource4.SelectParameters.Item(

    "UF").DefaultValue = filtro

     

    End Sub

    resultado na query pelo sql profile
    N'@uf nvarchar(10),@ativ nvarchar(16)',@uf=N'''AC'',''AM''',@ativ=N'MAPEAMENTO & GIS'

    O que eu preciso é que a query seja criada usando ''AC','AM''

    Att.,


    Valmir Lima
    segunda-feira, 18 de janeiro de 2010 18:02

Respostas

  • Fala Valmir, blz?

    Cara tente isso no seu for:

    Dim filtro As String = ""

     

    For Each item As ListItem In ListBox1.Items

     

     

    If item.Selected Then

     

    filtro = filtro & "'" & item.Value & "',"

     

     

     

    End If

     

    Next

    filtro = filtro.Substring(0, filtro.lenght - 1)

    Att. Alan

     




     


    Se esta resposta solucionou sua dúvida, “Marque como Resposta”
    segunda-feira, 18 de janeiro de 2010 18:18
  • Olá Vlamir blz?

    Estranho cara ele só ter colocado o primeiro. A lógica do que te passe é o seguinte: Inicializa a variável filtro com uma string vazia, depois varre todo o listbox, verificando se o item está selecionado. Se estiver concatena na variável filtro com uma aspa simples, o item outra aspa simples seguido de uma virgula. ao final do for each usa o comando substring para retirar a ultima virgula do listbox.

    Com isso era para funcionar. Sugiro que você coloque um break point para debuggar a aplicação e ver o que ocorre de errado.

    Qualquer dúvida poste novamente.

    Grande abraço.

    Att. Alan
    Se esta resposta solucionou sua dúvida, “Marque como Resposta”
    • Sugerido como Resposta Alan Cossari terça-feira, 19 de janeiro de 2010 18:55
    • Não Sugerido como Resposta Valmir.lima sexta-feira, 29 de janeiro de 2010 17:52
    • Marcado como Resposta AndreAlvesLimaModerator quinta-feira, 14 de julho de 2011 13:10
    terça-feira, 19 de janeiro de 2010 10:15

Todas as Respostas

  • Fala Valmir, blz?

    Cara tente isso no seu for:

    Dim filtro As String = ""

     

    For Each item As ListItem In ListBox1.Items

     

     

    If item.Selected Then

     

    filtro = filtro & "'" & item.Value & "',"

     

     

     

    End If

     

    Next

    filtro = filtro.Substring(0, filtro.lenght - 1)

    Att. Alan

     




     


    Se esta resposta solucionou sua dúvida, “Marque como Resposta”
    segunda-feira, 18 de janeiro de 2010 18:18
  • Opa, tudo bem Alan.
    Obrigado pela rapida resposta.

    Com a sua sugestão, ele apenas colocou no IN o primeiro parametro escolhido no listbox. Ex. eu inclui  AL e AM, mas a query apenas recebeu um parametro (AL)

    ,N'@uf nvarchar(10),@ativ nvarchar(30)',@uf=N'AL',@ativ=N'MAPEAMENTO & GIS'

    Obrigado pela ajuda!

    Valmir
    Valmir Lima
    segunda-feira, 18 de janeiro de 2010 18:29
  • Olá Vlamir blz?

    Estranho cara ele só ter colocado o primeiro. A lógica do que te passe é o seguinte: Inicializa a variável filtro com uma string vazia, depois varre todo o listbox, verificando se o item está selecionado. Se estiver concatena na variável filtro com uma aspa simples, o item outra aspa simples seguido de uma virgula. ao final do for each usa o comando substring para retirar a ultima virgula do listbox.

    Com isso era para funcionar. Sugiro que você coloque um break point para debuggar a aplicação e ver o que ocorre de errado.

    Qualquer dúvida poste novamente.

    Grande abraço.

    Att. Alan
    Se esta resposta solucionou sua dúvida, “Marque como Resposta”
    • Sugerido como Resposta Alan Cossari terça-feira, 19 de janeiro de 2010 18:55
    • Não Sugerido como Resposta Valmir.lima sexta-feira, 29 de janeiro de 2010 17:52
    • Marcado como Resposta AndreAlvesLimaModerator quinta-feira, 14 de julho de 2011 13:10
    terça-feira, 19 de janeiro de 2010 10:15