Jump to content
Fórum Script Brasil
  • 0

Pesquisa por mais de um atributo simultaneamente


Alfandangos

Question

Estou tentando desenvolver um sistema onde o usuário fornece um ou mais dados para serem pesquisados no banco de dados e exibidos em um datagrid, porém, se os campos estiverem vazios a pesquisa irá ignorá-los...

ex: nome: joão

idade: "em branco"

cidade: são paulo

Então o programa me retornaria as pessoas com nome joão que moram em são paulo e ignoraria o campo idade que ficou em branco.

A única maneira que consegui pensar foi com muuuuitos ifs, um pra cada possibilidade, porém, gostaria de saber se tem um jeito mais fácil antes de começar a fazer asssim...

Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0

O usuário pode preencher vários TextBox, mas não necessariamente todos, e você quer que a busca só considere os TextBox que estejam preenchidos e ignore os demais??

Se for o caso, você pode usar um For Each pra pesquisar todos os TextBox do formulário e verificar se estão preenchidos e adicionar ou não no Select conforme o caso.

Ficaria mais fácil ainda se os TextBox usados na busca fossem um array de TextBox.

Aí pra identificar a qual campo do banco de dados se refere cada TextBox, você pode usar a propriedade .Tag do TextBox.

Link to comment
Share on other sites

  • 0
Pode usar o "IIF" também...

posta o código que você iniciou...dentro da Tag "CODE" (última opção dos botões acima) :) fica mais fácil de entender .

VALEU !

Então, eu não cheguei a começar a tentar, eu apenas criei um código para pesquisar apenas um atributo e planejava usar os if's para mudar o comando select pra cada textbox que estivesse preenchida.

Private Sub BotaoPesquisa_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BotaoPesquisa.Click
        Try
            Me.datagrid.Rows.Clear()
            Dim strsql As String = "SELECT * From tabela where " + comboboxpesquisa.SelectedItem.ToString + " like '%" + txtPesquisa.Text + "%'"
            Dim cm As New OleDb.OleDbCommand(strsql, con)
            con.Open()
            dr = cm.ExecuteReader
            If dr.HasRows Then
                While dr.Read
                    Me.datagrid.Rows.Add(dr.Item("atributo1"), dr.Item("atributo2"), dr.Item("atributo3")
                End While
            End If
            con.Close()
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Registro não encontrado", MessageBoxButtons.OK, MessageBoxIcon.Error)
            con.Close()

        End Try
    End Sub

Link to comment
Share on other sites

  • 0

Então pessoal, voltei...

É que eu consegui fazer a pesquisa do jeito que eu queria, porém, agora tem outro detalhe...

Eu gostaria de um jeito para pesquisar um registro em uma tabela, através de um atributo de uma outra tabela, sem que este atributo seja uma chave estrangeira...

Mais ou menos isso:

serviço: cod_serviço, cod_cliente(estrangeira)

cliente: cod_cliente, nome

Então estou tentando encontrar um serviço, através do nome do cliente...Mas não consegui pensar em nada, tentei usar o comando sql "join", mas vi que não ia conseguir o resultado que procuro...

Alguém tem alguma sugestão?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...