Boa tarde,
Estou pedindo a ajuda em um comando que encontrei neste Forum e adaptei ao meu projeto (em anexo).
O comando consiste em um formulário pesquisa.
Gostaria que quando no formulário pesquisa (F-10-PESQUISA PERFIL):
1ª Consulta: Eu inserir 2010 no campo ano retornasse todos os carros de 2010 para baixo
2ª Consulta: Eu inserir R$ 20.000,00 no campo valor, retornasse todos os carros de R$ 20.000,00 para baixo.
Obs.: 1ª Consulta e 2ª Consulta são independentes, podendo ser feitas separadas ou simultânea.
Acontece que se eu usar o comando abaixo, na 1ª Consulta retornar apenas os carros de 2010 e na 2ª Consulta retornar apenas os carros que custam exatamente R$ 20.000,00
Eu não sei, mais talvez a resposta esteja no destaque em vermelho no comando em que usei.
Grato.
Private Sub AdicionarAWhere(FieldValue As Variant, FieldName As String, MyCriteria As String, ArgCount As Integer)
' Cria critério para a cláusula WHERE.
If FieldValue <> "" Then
' Adiciona "and" se existir outro critério.
If ArgCount > 0 Then
MyCriteria = MyCriteria & " and "
End If
' Anexa o critério ao critério já existente.
' Coloca FieldValue e o asterisco entre aspas.
MyCriteria = (MyCriteria & FieldName & " Like " & Chr(39) & FieldValue & Chr(42) & Chr(39))
' Aumenta a contagem de argumentos.
ArgCount = ArgCount + 1
End If
End Sub
Private Sub cmdFechar_Click()
On Error GoTo Err_cmdFechar_Click
Dim mysql As String
Dim Tmp As Variant
mysql = "SELECT * FROM C02CADASTROSDOSCARROS WHERE False"
' Limpa caixas de texto de procura.
Me![ProcurarNomeDoCarro] = Null
Me![QualAno] = Null
Me![QualValor] = Null
DoCmd.Close
Exit_cmdFechar_Click:
Exit Sub
Err_cmdFechar_Click:
MsgBox Error$
Resume Exit_cmdFechar_Click
End Sub
Private Sub DesativarControle()
' Se ativado, desativa o controle na seção detalhe depois de alterar o critério de procura.
Dim Tmp As Variant
If Me![F-10-PESQUISA PERFIL - SUB].enabled Then
Tmp = AtivarControles("Detail", False)
End If
End Sub
Private Sub Form_Open(Cancel As Integer)
' Move o ponto de inserção para a caixa de texto Procurar por nome do imóvel quando o formulário é aberto.
Me![ProcurarNomeDoCarro].SetFocus
End Sub
Private Sub Limpar_Click()
' Limpa controles no cabeçalho do formulário e remove registros do subformulário.
'
Dim mysql As String
Dim Tmp As Variant
mysql = "SELECT * FROM C02CADASTROSDOSCARROS WHERE False"
' Limpa caixas de texto de procura.
Me![ProcurarNomeDoCarro] = Null
Me![QualAno] = Null
Me![QualValor] = Null
' Reinicia a propriedade OrigemDoRegistro do subformulário para remover registros.
Me![F-10-PESQUISA PERFIL - SUB].Form.RecordSource = mysql
' Move o ponto de inserção para a caixa de texto Procurar por cliente.
Me![ProcurarNomeDoCarro].SetFocus
End Sub
Private Sub Mostrar_clientes_Click()
' Cria uma cláusula WHERE usando critérios de procura inseridos pelo usuário e
' define a propriedade OrigemDoRegistro do subformulário Pesquisa nome do imóvel.
Dim mysql As String, MyCriteria As String, MyRecordSource As String
Dim ArgCount As Integer
Dim Tmp As Variant
' Inicializa a contagem de argumentos.
ArgCount = 0
' Inicializa instrução SELECT.
mysql = "SELECT * FROM [C02CADASTROSDOSCARROS] WHERE "
MyCriteria = ""
' Usa valores inseridos nas caixas de texto do cabeçalho do formulário para criar critérios para a cláusula WHERE.
AdicionarAWhere [ProcurarNomeDoCarro], "[NOME]", MyCriteria, ArgCount
AdicionarAWhere [QualAno], "[ANO]", MyCriteria, ArgCount
AdicionarAWhere [QualValor], "[VALOR]", MyCriteria, ArgCount
' Se não há critério especificado, retorna todos os registros.
If MyCriteria = "" Then
MyCriteria = "True"
End If
' Cria instrução SELECT.
MyRecordSource = mysql & MyCriteria
' Define a propriedade OrigemDoRegistro de Subformulário Encontrar Imóveis.
Me![F-10-PESQUISA PERFIL - SUB].Form.RecordSource = MyRecordSource
' Se nenhum registro corresponder ao critério, exibe mensagem.
' Move o foco para o botão Limpar.
If Me![F-10-PESQUISA PERFIL - SUB].Form.RecordsetClone.RecordCount = 0 Then
MsgBox "Nenhum registro corresponde ao(s) critério(s) que você inseriu.", vbInformation, "N E N H U M R E G I S T R O E N C O N T R A D O!"
Me!Limpar.SetFocus
Else
' Ativa controle na seção detalhe.
Tmp = AtivarControles("Detail", True)
' Move o ponto de inserção para o Subformulário Encontrar Produtos.
Me![F-10-PESQUISA PERFIL - SUB].SetFocus
End If
End Sub
Estou pedindo a ajuda em um comando que encontrei neste Forum e adaptei ao meu projeto (em anexo).
O comando consiste em um formulário pesquisa.
Gostaria que quando no formulário pesquisa (F-10-PESQUISA PERFIL):
1ª Consulta: Eu inserir 2010 no campo ano retornasse todos os carros de 2010 para baixo
2ª Consulta: Eu inserir R$ 20.000,00 no campo valor, retornasse todos os carros de R$ 20.000,00 para baixo.
Obs.: 1ª Consulta e 2ª Consulta são independentes, podendo ser feitas separadas ou simultânea.
Acontece que se eu usar o comando abaixo, na 1ª Consulta retornar apenas os carros de 2010 e na 2ª Consulta retornar apenas os carros que custam exatamente R$ 20.000,00
Eu não sei, mais talvez a resposta esteja no destaque em vermelho no comando em que usei.
Grato.
Private Sub AdicionarAWhere(FieldValue As Variant, FieldName As String, MyCriteria As String, ArgCount As Integer)
' Cria critério para a cláusula WHERE.
If FieldValue <> "" Then
' Adiciona "and" se existir outro critério.
If ArgCount > 0 Then
MyCriteria = MyCriteria & " and "
End If
' Anexa o critério ao critério já existente.
' Coloca FieldValue e o asterisco entre aspas.
MyCriteria = (MyCriteria & FieldName & " Like " & Chr(39) & FieldValue & Chr(42) & Chr(39))
' Aumenta a contagem de argumentos.
ArgCount = ArgCount + 1
End If
End Sub
Private Sub cmdFechar_Click()
On Error GoTo Err_cmdFechar_Click
Dim mysql As String
Dim Tmp As Variant
mysql = "SELECT * FROM C02CADASTROSDOSCARROS WHERE False"
' Limpa caixas de texto de procura.
Me![ProcurarNomeDoCarro] = Null
Me![QualAno] = Null
Me![QualValor] = Null
DoCmd.Close
Exit_cmdFechar_Click:
Exit Sub
Err_cmdFechar_Click:
MsgBox Error$
Resume Exit_cmdFechar_Click
End Sub
Private Sub DesativarControle()
' Se ativado, desativa o controle na seção detalhe depois de alterar o critério de procura.
Dim Tmp As Variant
If Me![F-10-PESQUISA PERFIL - SUB].enabled Then
Tmp = AtivarControles("Detail", False)
End If
End Sub
Private Sub Form_Open(Cancel As Integer)
' Move o ponto de inserção para a caixa de texto Procurar por nome do imóvel quando o formulário é aberto.
Me![ProcurarNomeDoCarro].SetFocus
End Sub
Private Sub Limpar_Click()
' Limpa controles no cabeçalho do formulário e remove registros do subformulário.
'
Dim mysql As String
Dim Tmp As Variant
mysql = "SELECT * FROM C02CADASTROSDOSCARROS WHERE False"
' Limpa caixas de texto de procura.
Me![ProcurarNomeDoCarro] = Null
Me![QualAno] = Null
Me![QualValor] = Null
' Reinicia a propriedade OrigemDoRegistro do subformulário para remover registros.
Me![F-10-PESQUISA PERFIL - SUB].Form.RecordSource = mysql
' Move o ponto de inserção para a caixa de texto Procurar por cliente.
Me![ProcurarNomeDoCarro].SetFocus
End Sub
Private Sub Mostrar_clientes_Click()
' Cria uma cláusula WHERE usando critérios de procura inseridos pelo usuário e
' define a propriedade OrigemDoRegistro do subformulário Pesquisa nome do imóvel.
Dim mysql As String, MyCriteria As String, MyRecordSource As String
Dim ArgCount As Integer
Dim Tmp As Variant
' Inicializa a contagem de argumentos.
ArgCount = 0
' Inicializa instrução SELECT.
mysql = "SELECT * FROM [C02CADASTROSDOSCARROS] WHERE "
MyCriteria = ""
' Usa valores inseridos nas caixas de texto do cabeçalho do formulário para criar critérios para a cláusula WHERE.
AdicionarAWhere [ProcurarNomeDoCarro], "[NOME]", MyCriteria, ArgCount
AdicionarAWhere [QualAno], "[ANO]", MyCriteria, ArgCount
AdicionarAWhere [QualValor], "[VALOR]", MyCriteria, ArgCount
' Se não há critério especificado, retorna todos os registros.
If MyCriteria = "" Then
MyCriteria = "True"
End If
' Cria instrução SELECT.
MyRecordSource = mysql & MyCriteria
' Define a propriedade OrigemDoRegistro de Subformulário Encontrar Imóveis.
Me![F-10-PESQUISA PERFIL - SUB].Form.RecordSource = MyRecordSource
' Se nenhum registro corresponder ao critério, exibe mensagem.
' Move o foco para o botão Limpar.
If Me![F-10-PESQUISA PERFIL - SUB].Form.RecordsetClone.RecordCount = 0 Then
MsgBox "Nenhum registro corresponde ao(s) critério(s) que você inseriu.", vbInformation, "N E N H U M R E G I S T R O E N C O N T R A D O!"
Me!Limpar.SetFocus
Else
' Ativa controle na seção detalhe.
Tmp = AtivarControles("Detail", True)
' Move o ponto de inserção para o Subformulário Encontrar Produtos.
Me![F-10-PESQUISA PERFIL - SUB].SetFocus
End If
End Sub
- Anexos
- PROJETO-CARROS.zip
- Você não tem permissão para fazer download dos arquivos anexados.
- (448 Kb) Baixado 11 vez(es)