Ir para conteúdo
Fórum Script Brasil
  • 0

Pesquisa por mais de um atributo simultaneamente


Alfandangos

Pergunta

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 para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...