ATENÇÃO NOVOS USUÁRIOS

Se registrou recentemente? Seu cadastro será avaliado e mendiante aprovação, a conta será ativada e você poderá usufruir do fórum. O tempo de avaliação gira em torno de 24 a 48 horas.

Esqueceu sua senha?

Você pode usar o mecanismo de lembrete neste link: Recuperar senha

Você receberá um link de reativação no email cadastrado.

Não recebeu o email? Lembre-se checar o Lixo Eletrônico.

MontaClausulaWhere usando DATAS ?

Esclarecimentos e dúvidas sob o Modelo de Aplicativo de Cadastro em VBA no Microsoft Excel publicado no site e blog http://www.tomasvasquez.com.br
fabricio_sp30
Colaborador
Colaborador
Mensagens: 90
Registrado em: Ter Ago 03, 2010 9:40 pm

Re: MontaClausulaWhere usando DATAS ?

Mensagem por fabricio_sp30 » Sáb Ago 14, 2010 8:59 pm

Calizmo escreveu:Caros Tomas e Mauro,

Fiz algumas adpatações no projeto Cadastro (utilizo o v2), pois tbém tenho necessidade de pesquisar a base de dados (planilha de movimentos CtasPagar) por data.
E como precisava buscar os dados por intervalo, utilizei uma variante da rotina, porém, colocando no bloco SQL : campoData >= #data_inicial# e campoData <= #data_inicial# , que funcionou corretamente.

Sds,
Cássio Motta

ps. o código não ficou aquela "belesura" mas antende ;) (sou iniciante em VBA).

E Parabéns ! pela seriedade com que os assuntos são abordados/tratados.

Cássio Motta
Cassio,
voce usou a clausula where



Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
Mauro Coutinho
Jedi
Jedi
Mensagens: 1559
Registrado em: Sáb Mar 13, 2010 8:10 pm
Localização: São José dos Pinhais - Pr

Re: MontaClausulaWhere usando DATAS ?

Mensagem por Mauro Coutinho » Qui Ago 19, 2010 1:44 am

fabricio, isso é uma pergunta ? Voce quer dizer a rotina MontaClausulaWhere do form Pesquisa ?
Cassio,
voce usou a clausula where
Se sim, segue a adaptação que fiz com rotina MontaClausulaWhere para se localizar entre Datas adicionando um CheckBox e um Case com a cláusula BETWEEN conforme dica do Tomas ficando assim :

Na Declaração coloquei :
Private LocEntreDatas As Long

No Botão Filtrar defini a variavel LocEntreDatas:

Código: Selecionar todos

Private Sub cmbFiltrar_Click()
    If chkEntreDatas.Value = True Then
        LocEntreDatas = 1
    Else
        LocEntreDatas = 0
    End If
    Call PopulaListBox(txtDtIniP.Text, txtDtFimP.Text, txtProtocP.Text, txtEndP.Text, txtSolicitP.Text, txtServP.Text, txtRgDisinP.Text, txtNRgDsP.Text)

End Sub
Criei um ChkBox :

Código: Selecionar todos

Private Sub chkEntreDatas_Click()
    If chkEntreDatas.Value = True Then
        cboOrdenarPor.Value = "DATA" 'Forçar classificação por Data
    Else
        cboOrdenarPor.Value = ""
    End If
End Sub
E na rotina coloquei um Case :

Código: Selecionar todos

Private Sub MontaClausulaWhere(ByVal NomeControle As String, ByVal NomeCampo As String, ByRef sqlWhere As String)

    If Trim(Me.Controls(NomeControle).Text) <> vbNullString Then
        If sqlWhere <> vbNullString Then
            sqlWhere = sqlWhere & " AND"
        End If
   
    If IsDate(Me.Controls(NomeControle).Text) Then 'Verifica se é Data
        Select Case LocEntreDatas
            Case 0 'Procura por uma unica Data
                sqlWhere = sqlWhere & " (" & NomeCampo & ") = #" & Format(txtDtIniP, "m/d/yyyy") & "#"
            Case 1 'Procura entre duas Datas
                sqlWhere = sqlWhere & " (" & NomeCampo & ") BETWEEN #" & Format(txtDtIniP, "mm/dd/yyyy") & "# AND #" & Format(txtDtFimP, "mm/dd/yyyy") & "#"
        End Select
            
        Else
           sqlWhere = sqlWhere & " UCASE(" & NomeCampo & ") LIKE UCASE('%" & Trim(Me.Controls(NomeControle).Text) & "%')"
        End If
        
    End If

End Sub
Nas rotinas abaixo alterei:
Na rotina PopulaListBox usei a chamada a Função RecordSet
Set rst = RecordSet(DataInicio, DataFim, Protocolo, Endereco, Solicitante, Servico, RegiaoDisin, NumRgDisin)

Na Function RecordSet acrescentei :
Call MontaClausulaWhere(txtDtIniP.Name, "DATA", sqlWhere)

Está meio grosseiro, falta um pouco mais de estudo em cima para melhorar, mas pelos meus conhecimentos em SQL acho que já melhorei bastante, e comecei a entender um pouco mais as Clausulas, nas adaptações estão com os nomes dos controles que estou usando, seria só o caso de adaptar de acordo com os seus.
Estou quase finalizando essas adaptações do Form Pesquisa para a finalidade que preciso, e assim que terminar coloco um exemplo aqui no Forun, veja se essas dicas ajudam, qq duvida poste novamente.

[]s


Mauro Coutinho - Exemplos Somente em Office 2003
São José dos Pinhais - Pr
Se sua Duvida foi solucionada . . . .Acrescente [RESOLVIDO] ao título.
Ficou satisfeito com o FORUM ? Divulgue, indicando-o aos colegas !

Ermesinde
Acabou de chegar
Acabou de chegar
Mensagens: 4
Registrado em: Dom Dez 19, 2010 4:27 pm

Re: MontaClausulaWhere usando DATAS ?

Mensagem por Ermesinde » Dom Dez 19, 2010 4:38 pm

Boa tarde,

Sou iniciante em VBA. Estou adaptando o Modelo de Cadastro V2 para utilização. Necessitava no form pesquisa de efectuar pesquisa entre datas juntamente com os outrs critérios. Utilizei a cláusula BETWEEN mas não funcionou só aparece a data inicio e data fim ( e tem que corresponder a alguma data na folha de dados senão já não funciona). Seria possivel ajudar... disponibilizando um exemplo

Muito obrigado pela urgência.

Ermesinde



Avatar do usuário
webmaster
Administrador
Mensagens: 2796
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: MontaClausulaWhere usando DATAS ?

Mensagem por webmaster » Dom Dez 19, 2010 8:17 pm

Ermesinde,

Os código já colocados pelo colega Mauro não são exatamente a resposta do seu problema?

Abraços


Tomás
https://www.tomasvasquez.com.br/blog
https://www.tomasvasquez.com.br/cursocsharp
https://twitter.com/tomamais
Se sua dúvida foi solucionada, acrescente [RESOLVIDO] ao título.

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Ermesinde
Acabou de chegar
Acabou de chegar
Mensagens: 4
Registrado em: Dom Dez 19, 2010 4:27 pm

Re: MontaClausulaWhere usando DATAS ?

Mensagem por Ermesinde » Dom Dez 19, 2010 9:20 pm

Tomás,

Infelizmente, não consegui aplicar o código, por isso se conseguissem disponibilizar o ficheiro eu ficaria muito grato para poder estudar e compreender... estou iniciando em VBA.

Abraço



Avatar do usuário
webmaster
Administrador
Mensagens: 2796
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: MontaClausulaWhere usando DATAS ?

Mensagem por webmaster » Seg Dez 20, 2010 2:28 pm

Ermesinde,

Neste caso, é mais simples você nos enviar seu arquivo para aplicarmos tais modificações, não acha?

Abraços


Tomás
https://www.tomasvasquez.com.br/blog
https://www.tomasvasquez.com.br/cursocsharp
https://twitter.com/tomamais
Se sua dúvida foi solucionada, acrescente [RESOLVIDO] ao título.

Avatar do usuário
Mauro Coutinho
Jedi
Jedi
Mensagens: 1559
Registrado em: Sáb Mar 13, 2010 8:10 pm
Localização: São José dos Pinhais - Pr

Re: MontaClausulaWhere usando DATAS ?

Mensagem por Mauro Coutinho » Seg Dez 20, 2010 6:32 pm

Reforçoa as palavras do Tomas, e acrescento que as rotinas acima foram efetudas utilizando o Modelo Cadastro V3, mas neste caso especifico seria só seguir o passo a passo que utilizei para poder utiliza-la na V2, outra observação é que quando lidamos com adaptações em qualquer uma das versões do Modelo cadastro devemos ficar atentos aos nomes dos controles.
De uma olhada no Tópico TUTORIAIS, que disponibilizei algumas dicas e arquivos sobre alterações e implementações nos Modelos.

[]s


Mauro Coutinho - Exemplos Somente em Office 2003
São José dos Pinhais - Pr
Se sua Duvida foi solucionada . . . .Acrescente [RESOLVIDO] ao título.
Ficou satisfeito com o FORUM ? Divulgue, indicando-o aos colegas !

Ermesinde
Acabou de chegar
Acabou de chegar
Mensagens: 4
Registrado em: Dom Dez 19, 2010 4:27 pm

Re: MontaClausulaWhere usando DATAS ?

Mensagem por Ermesinde » Ter Dez 21, 2010 9:13 pm

Oi,
Anexo o ficheiro para por favor vocês me ajudarem. Aproveito também para pedir que vejam se conseguem somar automaticamente a coluna 10 "Tempo Gasto" pois penso que não faz a soma correctamente.

Agradeço muito a vossa ajuda e disponibilidade.

Obrigado
Anexos
ModeloPesquisa.zip
(86.32 KiB) Baixado 390 vezes



Avatar do usuário
webmaster
Administrador
Mensagens: 2796
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: MontaClausulaWhere usando DATAS ?

Mensagem por webmaster » Qua Dez 22, 2010 9:35 am

Ermesinde,

A rotina funciona perfeitamente. O problema é que os dados da coluna Data na sua planilha "não são datas". As datas estão guardadas como texto. Formatei a coluna, redigitei os dados e funcionou perfeitamente. Vai o arquivo anexo. A macros não sofreram mudança alguma.

Abraços
Anexos
ModeloPesquisa.zip
(36.14 KiB) Baixado 369 vezes


Tomás
https://www.tomasvasquez.com.br/blog
https://www.tomasvasquez.com.br/cursocsharp
https://twitter.com/tomamais
Se sua dúvida foi solucionada, acrescente [RESOLVIDO] ao título.

Ermesinde
Acabou de chegar
Acabou de chegar
Mensagens: 4
Registrado em: Dom Dez 19, 2010 4:27 pm

Re: MontaClausulaWhere usando DATAS ? (RESOLVIDO)

Mensagem por Ermesinde » Qua Dez 22, 2010 8:34 pm

Tomás,

Muito obrigado pela ajuda... são pessoas como vocês que fazem a união...

Abraço



Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder