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

Filtros


AlexMunhoz

Pergunta

Ola galerra sou eu novamente... rolleyes.gif

Eu gostaria que criar um filtro para um DataGrid....

Ex.:

Eu tenho um text chamado código, e esse codigo vai filtrar o conteúdo do meu Grid. entenderam...

Fico grato dês de já

unsure.gif Obs. C puderem me postar com urgência eu agradeço, pois o meu expediente já acabou e em casa eu não tenho net... unsure.gif

Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 0

Não se filtra o DataGrid e sim o ADODB.Recordset que está ligado ao mesmo. Por exemplo:

rs.Open "SELECT * FROM tabela WHERE campo=50;", cn, 2, 3
set datagrid1.datasource = rs

O código acima só retornará os registros da tabela "tabela" cujo campo "campo" seja igual a 50. Você também pode fazer isso pela propriedade Filter do objeto ADODB.Recordset.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
Não se filtra o DataGrid e sim o ADODB.Recordset que está ligado ao mesmo. Por exemplo:

rs.Open "SELECT * FROM tabela WHERE campo=50;", cn, 2, 3
set datagrid1.datasource = rs

O código acima só retornará os registros da tabela "tabela" cujo campo "campo" seja igual a 50. Você também pode fazer isso pela propriedade Filter do objeto ADODB.Recordset.

Abraços,

Graymalkin

huh.gif Amigão, Não estou conseguindo usar, você pode me dar um ex: huh.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Bom, eu preciso saber como você abre a tabela e exibe os dados na DataGrid para poder te dar um exemplo equivalente (basicamente, existem dois meios para se fazer isso). Explique detalhamente o que você faz para exibir o conteúdo de uma tabela em um DataGrid.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
Explique detalhamente o que você faz para exibir o conteúdo de uma tabela em um DataGrid.

cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=VCDS.mdb"

rs.CursorLocation = adUseClient

rs.Open "SELECT * FROM cds", cn, adOpenDynamic, adLockOptimistic

Set DataGrid1.DataSource = rs

Uso esse procedimento amigão...

Link para o comentário
Compartilhar em outros sites

  • 0

Então, bastaria você trocar a linha...

rs.Open "SELECT * FROM cds", cn, adOpenDynamic, adLockOptimistic
... por:
rs.Open "SELECT * FROM cds WHERE codigo=" & txtCódigo.text, cn, adOpenDynamic, adLockOptimistic

Isso, supondo que o campo "código" seja numérico. Caso ele seja texto você deverá colocar uma ' (aspa simples) antes e uma depois do valor.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
Então, bastaria você trocar a linha...

rs.Open "SELECT * FROM cds", cn, adOpenDynamic, adLockOptimistic
... por:
rs.Open "SELECT * FROM cds WHERE codigo=" & txtCódigo.text, cn, adOpenDynamic, adLockOptimistic

ola, eu troquei a linha que você falou mas ela não está filtrando. olha só

o campo código está em numero sim...

quando eu coloca a linha assim

rs.Open "SELECT * FROM cds WHERE codigo=" & txtCodigo.Text, cn, adOpenDynamic, adLockOptimistic

ela da o seguinte erro: Run-tima error '-2147217900(80040e14)':

Systax error(missing operator) in inquery expression 'codigo='.

se eu coloco a (aspa simples)

rs.Open "SELECT * FROM cds WHERE 'codigo='" & txtCodigo.Text, cn, adOpenDynamic, adLockOptimistic

ele executa normal mas não filtra, o que será isso? blink.gif

o meu codigo ficou assim depois que coloquei a linha

Private Sub Form_Load()

cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=VCDS.mdb"

rs.CursorLocation = adUseClient

' rs.Open "SELECT * FROM cds", cn, adOpenDynamic, adLockOptimistic

rs.Open "SELECT * FROM cds WHERE 'codigo='" & txtCodigo.Text, cn, adOpenDynamic, adLockOptimistic

Set DataGrid1.DataSource = rs

Preenche

End Sub

Link para o comentário
Compartilhar em outros sites

  • 0

Não, não tem aspas ali. O correto é o código sem as aspas, ou seja:

 rs.Open "SELECT * FROM cds WHERE codigo=" & txtCodigo.Text, cn, adOpenDynamic, adLockOptimistic

Mas, o código que você colocou, não deve ser colocado no evento Load e sim em um botão, por exemplo. Afinal de contas, o evento Load é executado quando o form é carregador, portanto você não tem tempo para escrever na caixa de texto. Salvo a abertura do Connection (cn) o resto deveria ficar em um evento ativado pelo usuário.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
 rs.Open "SELECT * FROM cds WHERE codigo=" & txtCodigo.Text, cn, adOpenDynamic, adLockOptimistic

Amigão, sei que já to te enchendo mas fiz exatamente como você me falou, Mas está dando um outro erro agora..

Eu coloquei um outro campo chamado filtro e um botão que ativa o comando

Private Sub cmdFiltro_Click()

rs.Open "SELECT * FROM cds WHERE Codigo=" & txtFiltro.Text, cn, adOpenDynamic, adLockOptimistic

Set DataGrid1.DataSource = rs

End Sub

mas ainda esta dando erro... olha só

Run-time error '3705':

Operation is not allowed when the object is open.

sem querer ser chato, mas você pode me ajudar outra vez? sad.gif

Link para o comentário
Compartilhar em outros sites

  • 0
mas ainda esta dando erro... olha só

Run-time error '3705':

Operation is not allowed when the object is open.

sem querer ser chato, mas você pode me ajudar outra vez? sad.gif

Veja a mensagem de erro: "Operation is not allowed when the object is open." Traduzindo: "Operação não permitida quando objeto está aberto.". Ou seja, você não pode fazer um Open e um ADODB.Recordset que já foi aberto anteriormente. Para isso você deve primeiro fechá-lo com:

rs.Close

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Amigão deu certo, o problema todo era no rs que estava aberto...

Ficou assim.

rs.Close

rs.Open "SELECT * FROM cds WHERE codigo=" & txtFiltro.Text, cn, adOpenDynamic, adLockOptimistic"

Set DataGrid1.DataSource = rs

vou tentar com texto e números pré definidos, c não der conta posso te incomodar mais um pouco?.

Obrigado pela paciência...

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,3k
    • Posts
      652,3k
×
×
  • Criar Novo...