Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Modelo de Aplicativo de Cadastro - ListView - Não retorna os valores da consulta que tem zeros depois da vírgula

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
Diovanino Cassio
Colaborador
Colaborador
Mensagens: 53
Registrado em: Qua Mar 15, 2017 11:31 am

Modelo de Aplicativo de Cadastro - ListView - Não retorna os valores da consulta que tem zeros depois da vírgula

Mensagem por Diovanino Cassio »

Senhores,

Tenho os meus aplicativos, baseados quase todos, no Modelo de Aplicativos de Cadastro, desenvolvido por Tomás Vasquez e aprimorado por Mauro Coutinho.

Em um destes formulários de pesquisa, tenho um campo texto para consultar os dados de um teor de carbono, que está gravado na minha planilha de dados, da seguinte forma: XX,XX (93,36), por exemplo.

Nesta minha base de dados, tenho valores gravados do tipo: 94,70, 77,20, 95,05 etc.

Quando faço a consulta de um determinado valor, onde possui zero depois da vírgula, é me retornado a seguinte mensagem: "A variável do objeto ou a variável do bloco with não foi definida 91 VBA Project"

Veja abaixo, o código utilizado na MontaClausulaWhere:

Código: Selecionar todos

Private Sub MontaClausulaWhere(ByVal NomeControle As String, ByVal NomeCampo As String, ByRef sqlWhere As String) 'NomeDoContato 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(Me.txtDataIni.Text, "mm/dd/yyyy") & "#" Case 1 'Procura entre duas Datas sqlWhere = sqlWhere & " (" & NomeCampo & ") BETWEEN #" & Format(data1.Text, "mm/dd/yyyy") & "# AND #" & Format(data2.Text, "mm/dd/yyyy") & "#" End Select Else sqlWhere = sqlWhere & " UCASE(" & NomeCampo & ") LIKE UCASE('" & Trim(Me.Controls(NomeControle).Text) & "')" End If End If End Sub


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
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Modelo de Aplicativo de Cadastro - ListView - Não retorna os valores da consulta que tem zeros depois da vírgula

Mensagem por Reinaldo »

Dificil entender/determinar o problema apenas pelo informado; pois nem sempre o "erro" está onde o interpretador para.
Contudo o trecho disponibilizado aparente ter um end if "solto"; verifique se conforme abaixo resolve, caso não e melhor se dispor seu modelo.

Código: Selecionar todos

Private Sub MontaClausulaWhere(ByVal NomeControle As String, ByVal NomeCampo As String, ByRef sqlWhere As String)
'NomeDoContato
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(Me.txtDataIni.Text, "mm/dd/yyyy") & "#"
        Case 1 'Procura entre duas Datas
            sqlWhere = sqlWhere & " (" & NomeCampo & ") BETWEEN #" & Format(Data1.Text, "mm/dd/yyyy") & "# AND #" & Format(Data2.Text, "mm/dd/yyyy") & "#"
    End Select
Else
    sqlWhere = sqlWhere & " UCASE(" & NomeCampo & ") LIKE UCASE('" & Trim(Me.Controls(NomeControle).Text) & "')"
End If
End Sub


Diovanino Cassio
Colaborador
Colaborador
Mensagens: 53
Registrado em: Qua Mar 15, 2017 11:31 am

Re: Modelo de Aplicativo de Cadastro - ListView - Não retorna os valores da consulta que tem zeros depois da vírgula

Mensagem por Diovanino Cassio »

Reinaldo,
Segue o formulário de pesquisa, como solicitado, pois não deu certo!
Na verdade, seu eu rodar o código proposto, dá erro, pois está faltando fechar um dos IFs.
Os dois arquivos, devem ser baixados na pasta C:\Temp
Anexos
Temp.7z
(235.28 KiB) Baixado 207 vezes


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Modelo de Aplicativo de Cadastro - ListView - Não retorna os valores da consulta que tem zeros depois da vírgula

Mensagem por Reinaldo »

A priori creio que o erro é gerado pela chamada consecutiva da rotina "" pela function "PreecheRecordSetData"

Código: Selecionar todos

   'Data Inicial e Final
    Call MontaClausulaWhereData(Me.txtDataIni.Name, "Dtlanc", sqlWhere)
    Call MontaClausulaWhereData(Me.txtDataFin.Name, "Dtlanc", sqlWhere)
    Call MontaClausulaWhereData(Me.txtCarbIni.Name, "C_Enc", sqlWhere)
Iniba/comente as duas ultimas "chamadas' (inclusive a terceira, não tem haver com data
e experimente.
Caso seja, eventualmente, utilizado uma ou outra data e/ou ambas provavelmente e necessário uma revisão da função "Private Sub MontaClausulaWhereData


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
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Modelo de Aplicativo de Cadastro - ListView - Não retorna os valores da consulta que tem zeros depois da vírgula

Mensagem por Reinaldo »

A priori creio que o erro é gerado pela chamada consecutiva da rotina "" pela function "PreecheRecordSetData"

Código: Selecionar todos

   'Data Inicial e Final
    Call MontaClausulaWhereData(Me.txtDataIni.Name, "Dtlanc", sqlWhere)
    Call MontaClausulaWhereData(Me.txtDataFin.Name, "Dtlanc", sqlWhere)
    Call MontaClausulaWhereData(Me.txtCarbIni.Name, "C_Enc", sqlWhere)
Iniba/comente as duas ultimas "chamadas' (inclusive a terceira, não tem haver com data
e experimente.
Caso seja, eventualmente, utilizado uma ou outra data e/ou ambas provavelmente e necessário uma revisão da função "Private Sub MontaClausulaWhereData


Diovanino Cassio
Colaborador
Colaborador
Mensagens: 53
Registrado em: Qua Mar 15, 2017 11:31 am

Re: Modelo de Aplicativo de Cadastro - ListView - Não retorna os valores da consulta que tem zeros depois da vírgula

Mensagem por Diovanino Cassio »

Reinaldo,

Até que a consulta por um período de data, não é muito importante para mim, mas a terceira chamada é imprescindível, pois preciso consultar valores entre um teor de carbono e outro (teor inicial e teor final).
Comecei a fazer esta sub, baseada na MontaClausulaWhereData, mas esbarrei na mensagem de erro, quando comecei a buscar valores, com zero depois da vírgula, como relatei no início. Quanto a consulta por data, ela funciona perfeitamente, tanto quando busca uma única data ou entre datas.


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Modelo de Aplicativo de Cadastro - ListView - Não retorna os valores da consulta que tem zeros depois da vírgula

Mensagem por Reinaldo »

Como disse, dependendo do que espera/deseja a rotina deve ser revisada/reconstruida.
Porem a Sub "MontaClausulaWhereData" deve ser utilizada apenas para campo tipo Data, onde normalmente e um valor inteiro; veja o formato efetuado na rotina (mm/dd/yyyy).
Pelo que pude notar o campo "C_Enc" (da terceira chamada) não se refere a uma data, mas um valor tipo decimal; creio que essa pesquisa deva ser inclusa na criação da string do "sqlWhere"
mas fica dificil propor algo sem entender a dinamica/necessidade


Diovanino Cassio
Colaborador
Colaborador
Mensagens: 53
Registrado em: Qua Mar 15, 2017 11:31 am

Re: Modelo de Aplicativo de Cadastro - ListView - Não retorna os valores da consulta que tem zeros depois da vírgula

Mensagem por Diovanino Cassio »

Reinaldo,

Na verdade, concordo contigo quando você diz que a pesquisa deve ser incluída na criação da string do sqlWhere.
Poderia me orientar em como criar esta nova rotina?
Pois preciso pesquisar valores de alguns campos da tabela, entre intervalos (campo com valor inicial e final).

Sds,


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Modelo de Aplicativo de Cadastro - ListView - Não retorna os valores da consulta que tem zeros depois da vírgula

Mensagem por Reinaldo »

Para isso a sintaxe pode ser semelhante a utilizada para sqlwheredata, porem e preciso que saibamos a dinamica a ser utilizada, qual/quais filtros, sozinhos ou combinados, somente um valor por campo ou combinacao de valores....


Diovanino Cassio
Colaborador
Colaborador
Mensagens: 53
Registrado em: Qua Mar 15, 2017 11:31 am

Re: Modelo de Aplicativo de Cadastro - ListView - Não retorna os valores da consulta que tem zeros depois da vírgula

Mensagem por Diovanino Cassio »

Preciso consultar no frame carbono, valores entre um intervalo, por exemplo:
CarbIni: 93,69 a CarbFin: 96,16.
Este filtro pode ser combinado com qualquer um dos filtros dos outros frames também!

Sds,


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