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

Pesquisa Avançada (com Vários Critérios Simultâneamente)


Elber Carretoni

Pergunta

Gracias galera!

boa noite!

Estou pensando em criar um formulário em que o usuário possa efetuar uma filtragem de dados de determinada tabela selecionando critérios simultâneamente e digitando seus respectivos valores procurados.

Portanto, pensei na seguinte hipótese:

Criaria um formulário (FormPesquisa) independente, com objetos checkbox (critérios) e campos não acoplados a fim de solicitar as informações ao usuário para efetuar uma filtragem avançada de dados!

O usuário pode efetuar a filtragem de dados através de vários critérios assinalados simultaneamente...a verificação de quais critérios o usuário assinalou e à determinação da instrução SQL já tenho em mente através de VB.

Criaria uma consulta com todos os campos da tabela (ConsultaPesquisa) e esta colocaria como subformulário não ativado no formulário 'FomPesquisa', a fim de gerar um efeito apenas de visualização de dados filtrados (DBGrid).

Porém, tenho dúvidas de como mandar a instrução sql gerada por progamação (armazenada em uma variável string) para a ConsultaPesquisa.

A idéia planejada daria certo?

Além disso, tenho dúvidas de como determinar por VBA quando uma checkbox está checada ou não. Em DELPHI a instrução era CHECKBOX.CHECKED. Fiz os testes e, portanto, no VBA não consigo determinar tal propriedade. Alguém poderia ainda me dar uma luz sobre as propriedades de uma checkbox?

Sou fraco em consultas através de access. Mas acredito que a idéia dê certo!

Só gostaria de umas dicas, alguns procedimentos, ressalvas...enfim...AJUDA aí?

desde já agradeço a força...

Abraços! :blink:

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

galera,

sobre as propriedades da checkbox já consegui uma solução...

em vez de checkbox.checked (conforme delphi), em vb se usa apenas checkbox.value = True/False!

a dúvida agora é mandar uma instrução em sql (determinada por uma variável string do vb) para uma consulta do access!!! Alguém sabe aí??? :unsure:

Link para o comentário
Compartilhar em outros sites

  • 0

Do ponto de vista do vba, uma sql é na realidade uma string.

Strings devem necessariamente ser delimitadas por aspas, simples ou duplas.

Então, se há a possibilidade dos dados apresentarem no seu conteúdo aspas simples, necessariamente o delimitador para a string de sql deve ser aspas duplas.

Quando a construção da sql se dá em tempo de execução, concatenando sequências com o conteúdo de variáveis, devemos ainda prestar atenção para inserir aspas em torno de literais. Por exemplo:

Dim nome as string

dim sql as string

nome = "Caixa d'agua"

sql = "SELECT * FROM tabela "

sql = sql & "WHERE nome = " & nome

deste jeito, o conteúdo da variável sql sera:

SELECT * FROM tabela WHERE nome = Caixa d'agua

Para o "motor" de sql do access, nome, caixa, d'agua serão tratados como a mesma coisa. O access irá tentar comparar o conteúdo do campo nome com o conteúdo do campo caixa (peraí, não encontrei nenhum campo com nome caixa! ... e d'agua, o que será que é pra fazer com isto?).

Para não dar um nó no interpretador de sql é que se limitam literais entre aspas, simples ou duplas.

Então, como estamos usando aspas duplas para delimitar o conteúdo de nossa variável, para não complicar, vamos usar aspas simples para delimitar valores dentro desta variável. O primeiro exemplo ficará assim:

sql = "SELECT * FROM tabela "

sql = sql & "WHERE nome = '" & nome & "'"

Se o conteudo da variavel fosse "Roberto", o conteúdo da variável sql ficaria assim:

SELECT * FROM tabela WHERE nome = 'Roberto'

Perfeito. Se houver um campo nome com conteúdo igual a "Roberto", será encontrado.

MAs para

nome = "Caixa d'agua", nossa sql resultaria neste conteúdo:

SELECT * FROM tabela WHERE nome = 'Caixa d'agua'

com aspas obviamente não balanceadas, causando um erro semelhante ao primeiro exemplo.

Então, corrigindo o segundo exemplo, trocando as aspas simples como delimitador de literais por aspas duplas, e prestando atenção para que estas aspas duplas não sejam confundidas com as aspas duplas que delimitam a sql, chegamos a mais um exemplo:

sql = "SELECT * FROM tabela "

sql = sql & "WHERE nome = """ & nome & """"

O que aparentemente parece um exagero de aspas, criará como conteúdo para a variável sql, assumindo de novo "caixa d'agua" como o conteúdo da variável nome a seguinte expressão:

SELECT * FROM tabela WHERE nome = "Caixa d'agua"

uma expressão correta!

_____________________________

Créditos para Roberto Spier, através de pesquisa achei essa explicação e acho que deve resolver seu problema!

Link para o comentário
Compartilhar em outros sites

  • 0

ótimo post...perfeito ao entendimento...

quando estava lendo sobre o mesmo lembrei-me que em Delphi também colocava-se quatro aspas seguidas...

pra ser bem sincero não lembrava-me o porque das 4 aspas seguidas...agora tá jóia!rsrs

vlw a força mrMalj!!

mas ainda tenho um problema principal...

após determinar uma instrução sql conforme os exemplos e tals, enfim, como eu mando essa variável string com a instrução sql para a consulta? entendeu? mandar o critério de pesquisa e fazer executar a pesquisa....

estive pensando, e reparei que em vba existe a função docmd.RunSQL...se eu executar uma instrução sql indicando a própria tabela principal e não a consulta, e no meu formulário colocasse um subformulário com a determinada tabela, daria certo?

ainda não fiz os testes...mas to trabalhando nisso...

de qualquer forma, se você tiver um parecer ou alguma outra dica, por favor...

abração! fique com Deus...

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
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...