locked
Combos RRS feed

  • Pergunta

  • Olá

    Poderia fazer combos como no exemplo abaixo?

    Eu crio uma consulta com dois parametros para estado e região e crio um formulário com dois combos para selecionar os parametros desta consuta.


    Mas se eu quiser selecionar somente o combo de Estado e ter o retorno somente de Estado e vice-versa?

    O problema é que quando eu clico somente no combo de Estado a consulta não me retorna nada, só funciona quando eu clico nos dois.


    Maurício



    segunda-feira, 13 de abril de 2009 20:50

Respostas

  • O objeto consulta não é muito maleável com parâmetros opcionais. A solução que costumo usar neste caso é montar a cláusula WHERE no VBA, conforme os controles que estiverem preenchidos.

    Exemplo:

    Dim strSQL As String
    Dim strWhere As String
    
    strSQL = "SELECT * FROM TuaTabela" 
    
    If IsNull(Me.cboEstado)=False Then
       If Len(strWhere)=0 Then
          strWhere = " WHERE "
       Else
          strWhere = strWhere & " AND "
       End If
       strWhere=strWhere & "Estado='" & Me.cboEstado & "' "
    End If
    
    If IsNull(Me.cboCidade)=False Then
       If Len(strWhere)=0 Then
          strWhere = " WHERE "
       Else
          strWhere = strWhere & " AND "
       End If
       strWhere=strWhere & "Cidade='" & Me.cboCidade & "' "
    End If
    
    CurrentDB.QueryDefs("TuaConsulta").SQL = strSQL & strWhere


    Luiz Cláudio Cosenza Vieira da Rocha - http://msmvps.com/blogs/officedev - IT Lab www.itlab.com.br
    terça-feira, 14 de abril de 2009 01:58
    Moderador

Todas as Respostas

  • O objeto consulta não é muito maleável com parâmetros opcionais. A solução que costumo usar neste caso é montar a cláusula WHERE no VBA, conforme os controles que estiverem preenchidos.

    Exemplo:

    Dim strSQL As String
    Dim strWhere As String
    
    strSQL = "SELECT * FROM TuaTabela" 
    
    If IsNull(Me.cboEstado)=False Then
       If Len(strWhere)=0 Then
          strWhere = " WHERE "
       Else
          strWhere = strWhere & " AND "
       End If
       strWhere=strWhere & "Estado='" & Me.cboEstado & "' "
    End If
    
    If IsNull(Me.cboCidade)=False Then
       If Len(strWhere)=0 Then
          strWhere = " WHERE "
       Else
          strWhere = strWhere & " AND "
       End If
       strWhere=strWhere & "Cidade='" & Me.cboCidade & "' "
    End If
    
    CurrentDB.QueryDefs("TuaConsulta").SQL = strSQL & strWhere


    Luiz Cláudio Cosenza Vieira da Rocha - http://msmvps.com/blogs/officedev - IT Lab www.itlab.com.br
    terça-feira, 14 de abril de 2009 01:58
    Moderador
  • Olá

    Muito obrigado pela dica.



    Não conheço programação VBA, por isso gostaria de saber em que evento coloco este código acima?




    Maurício

    terça-feira, 14 de abril de 2009 12:32
  • Luiz


    Funcionou!!!

    Muito Obrigado
    quarta-feira, 15 de abril de 2009 16:37