none
Vários parâmetros em consulta sql RRS feed

  • Pergunta

  • Olá pessoal, eu tenho uma consulta com 2 parametros, mas quando executo o visual studio 2010 ele só me compara com o ultimo parametro, neste exemplo o EmpID

    SelectCommand="SELECT EmployeeID, LastName, FirstName, Address, City, Region, PostalCode
        FROM Employees WHERE @CAIXATEXTO like @EmpID", se eu trocasse a ordem o parametro comparado seria apenas o CAIXATEXTO
    
    <SelectParameters> <asp:ControlParameter ControlID="EmployeesDropDownList" PropertyName="SelectedValue" Name="EmpID" Type="Int32" DefaultValue="0" />


    <asp:ControlParameter ControlID="textbox1" Name="CAIXATEXTO" " />

     </SelectParameters>

    Obrigado pessoal pelo vosso tempo

    • Editado Bairos quinta-feira, 21 de abril de 2011 02:04 erro no codigo, sorry
    quinta-feira, 21 de abril de 2011 02:02

Respostas

  • Amigo, como voce e iniciante, acho que estas a pedir coisa que voce vai ter dificuldade em entender.

    pra voce fazer isto vais ter de criar parametros. 

    Vais te encher uma combobox com os campos da sua tabela.

    por exemplo:

    nome

    classe

    turma

    datadenascimento

     

    depois adapta assim

    select case Combobox

    case "nome"

    select * from tabela Where +combobox.text = "@pesquizar"

    case "classe"

    select * from tabela Where +combobox.text = "@pesquizar"

    end select

    assim voce consegue fazer. 


    One word frees us of all the weight and pain of life: that word is love.
    • Marcado como Resposta Bairos quinta-feira, 28 de abril de 2011 22:43
    sexta-feira, 22 de abril de 2011 15:25
  • Ok.. vamos por partes:

    Dim comando As String = String.Format("SELECT nome,ultimo From registo where @campo like Textbox1.text")
    voce não pode usar parametros para definir o campo... somente para o valor do campo... e vc tambem não deve informar o componente (Textbox1.text) na sua query, nesse ponto é que vc tem que usar o paramentro...

    Como voce disse que o campo de consulta é variavel... o certo é voce montar a sua query dinamicamente...

    Dim campo As String = "Estado"
    Dim
    comando As String = String.Format("SELECT nome, ultimo From registo where {0} like @valor", campo)
    Dim con As MySqlConnection = New MySqlConnection("database=bdfaltas;username=root;password=bdutilizador;server=localhost")
    Dim executa As MySqlCommand = New MySqlCommand(comando, con)
    executa.Parameters.AddWithValue("@valor", Textbox1.Text)

    [...]

    • Marcado como Resposta Bairos quinta-feira, 28 de abril de 2011 22:43
    terça-feira, 26 de abril de 2011 18:38
    Moderador

Todas as Respostas

  • Ola,

    acredito que vc quer fazer algo paressido com isso na verdade:

    SelectCommand="SELECT EmployeeID, LastName, FirstName, Address, City, Region, PostalCode
      FROM Employees WHERE EmployeeID = @EmpID and FirstName like @CAIXATEXTO"

    • Sugerido como Resposta Levi Domingos quinta-feira, 21 de abril de 2011 19:52
    quinta-feira, 21 de abril de 2011 19:24
    Moderador
  • Ola Rui,

     

    eu quero eque a seguir ao where ele mude o campo conforme a esclha do utilizador, se o radiobutonlist tiver o slectedvalue=data owhere pesquisa segundo o campo data, se tiver o valor id, ele pesquisa pelo campo ID, exemplo,

    exemplo se o rblistselected.value=DAta

    Select...where @data  like @textbox

    --exemplo se o rblistselected.value=data

     

    Select...where @ID like @textbox

    --exemplo se o rblistselected.value=ID

    os parametros veem do rabiobuttonlist e caixa de texto

     

     

     

    sexta-feira, 22 de abril de 2011 13:24
  • Amigo, como voce e iniciante, acho que estas a pedir coisa que voce vai ter dificuldade em entender.

    pra voce fazer isto vais ter de criar parametros. 

    Vais te encher uma combobox com os campos da sua tabela.

    por exemplo:

    nome

    classe

    turma

    datadenascimento

     

    depois adapta assim

    select case Combobox

    case "nome"

    select * from tabela Where +combobox.text = "@pesquizar"

    case "classe"

    select * from tabela Where +combobox.text = "@pesquizar"

    end select

    assim voce consegue fazer. 


    One word frees us of all the weight and pain of life: that word is love.
    • Marcado como Resposta Bairos quinta-feira, 28 de abril de 2011 22:43
    sexta-feira, 22 de abril de 2011 15:25
  • Eu tenho uma gridView que tem o nome d gridview1, como e que actualizo a gridview apos o query?É esta a questão!

     

     

    sexta-feira, 22 de abril de 2011 17:21
  • Você poderia entao gerar a sua query dinamicamente....

    SelectCommand= String.Format("SELECT EmployeeID, LastName, FirstName, Address, City, Region, PostalCode FROM Employees WHERE {0} = @ID", radiogroup.Value);

    segunda-feira, 25 de abril de 2011 22:25
    Moderador
  • Caro Rui, desde já obrigado pela ajuda, eu estou a utilizar VB.NET e continuo sem saber como posso gerar a gridiew, o problema está no local onde o texto está seleccionado:

    Dim comando As String = String.Format("SELECT nome,ultimo From registo where @campo like Textbox1.text)

    Dim con As MySqlConnection = New MySqlConnection("database=bdfaltas;username=root;password=bdutilizador;server=localhost")

            Dim executa As MySqlCommand = New MySqlCommand(comando, con)

            con.Open()

            Dim myreader As MySqlDataReader

            myreader = executa.ExecuteReader

            While myreader.Read()           

    Me.GridView1.Columns.Add(“Estado”) ‘ESTE  DA ERRO (nao pode converter string em datavaluefield)

                 ‘O que posso colocar aqui para gerar a gridview?

            End While

            myreader.Close()

            con.Close()

    Cumprimentos.

    terça-feira, 26 de abril de 2011 17:55
  • Ok.. vamos por partes:

    Dim comando As String = String.Format("SELECT nome,ultimo From registo where @campo like Textbox1.text")
    voce não pode usar parametros para definir o campo... somente para o valor do campo... e vc tambem não deve informar o componente (Textbox1.text) na sua query, nesse ponto é que vc tem que usar o paramentro...

    Como voce disse que o campo de consulta é variavel... o certo é voce montar a sua query dinamicamente...

    Dim campo As String = "Estado"
    Dim
    comando As String = String.Format("SELECT nome, ultimo From registo where {0} like @valor", campo)
    Dim con As MySqlConnection = New MySqlConnection("database=bdfaltas;username=root;password=bdutilizador;server=localhost")
    Dim executa As MySqlCommand = New MySqlCommand(comando, con)
    executa.Parameters.AddWithValue("@valor", Textbox1.Text)

    [...]

    • Marcado como Resposta Bairos quinta-feira, 28 de abril de 2011 22:43
    terça-feira, 26 de abril de 2011 18:38
    Moderador
  • Pessoal, obrigado a todos pelo vosso tempo, o problema está resolvido, foi colocado um "or" no comando SQL, desta maneira já consegui efectuar um select com dois campos.

     

    Mais uma vez obrigado,  vocês foram 5 estrelas!

    quinta-feira, 28 de abril de 2011 22:42