Cá estou com um prolema em que tenho um If Not...Else...End If...
O If Not é falso, mas ele não pula pro Else...ele continua na proxima linha...aí dá erro de Tipo de dados.....justamente porque não era pra continuar.....
Bem...vou colocar o código aqui e explicar melhor...
Eu faço um SELECT em que eu preciso selecionar, além de todos os campos da tabela FinanWin_Contas, a soma dos campos Con_ValorPgtoCP e Con_ValorPgtoCR ONDE nenhum desses campos pode ser nulo e que a data de pagamento [campo Con_DataPgto] esteja ENTRE a data inicial e a data final determinadas....
o que acontece é que quando eu informo um período em que não há registros nessas condições [if Not rs_relatorio.EOF Then], ao invés de ir pro Else e mostrar a MsgBox, o If Not que deveria ser falso, é tratado como verdadeiro e não vai pro Else....Então dá um erro de tipo de dados...o que já é esperado...
Dim Conex As New ADODB.Connection
Conex.Open StringDeConexao
With cmd_relatorio
.ActiveConnection = Conex
.CommandType = adCmdText
.CommandText = "SELECT Con_Venc, Con_NumDoc, Con_ContParc, Con_ValorCP, Con_ValorCR, Con_DataEmissao, Con_Boleto, Con_NomeFantasia, Con_Tipo, Con_DataPgto, FinanWin_Contas.Con_ValorPgtoCR, FinanWin_Contas.Con_ValorPgtoCP, (Select Sum(Con_ValorPgtoCR) as totalCR From FinanWin_Contas WHERE Not isNull(Con_ValorPgtoCR) AND Con_DataPgto BETWEEN #" & Format(txtDataInicial, "yyyy/mm/dd") & "# AND #" & Format(txtDataFinal, "yyyy/mm/dd") & "#) as totalCR, (select sum(Con_ValorPgtoCP) as totalCP from FinanWin_Contas WHERE Not isNull(Con_ValorPgtoCP) AND Con_DataPgto BETWEEN #" & Format(txtDataInicial, "yyyy/mm/dd") & "# AND #" & Format(txtDataFinal, "yyyy/mm/dd") & "#) as totalCP FROM FinanWin_Contas WHERE Not isNull(Con_ValorPgtoCP) OR Not isNull(Con_ValorPgtoCR) AND Con_DataPgto BETWEEN #" & Format(txtDataInicial, "yyyy/mm/dd") & "# AND #" & Format(txtDataFinal, "yyyy/mm/dd") & "# ORDER BY Con_Tipo, Con_DataPgto, Con_Venc"
Set rs_relatorio = .Execute
If Not rs_relatorio.EOF Then
rptBalConPPagasConRReceb.Sections("Section5").Controls("lblSomaCR").Caption = rs_relatorio!totalCR
rptBalConPPagasConRReceb.Sections("Section5").Controls("lblSomaCP").Caption = rs_relatorio!totalCP
Dim somaCR As Currency
Dim somaCP As Currency
Dim dif As Currency
somaCR = rs_relatorio!totalCR
somaCP = rs_relatorio!totalCP
dif = somaCR - somaCP
rptBalConPPagasConRReceb.Sections("Section5").Controls("lblDif").Caption = dif
rptBalConPPagasConRReceb.Sections("Section5").Controls("lblSomaCR").Caption = Format(rptBalConPPagasConRReceb.Sections("Section5").Controls("lblSomaCR").Caption, "##0.00")
rptBalConPPagasConRReceb.Sections("Section5").Controls("lblSomaCP").Caption = Format(rptBalConPPagasConRReceb.Sections("Section5").Controls("lblSomaCP").Caption, "##0.00")
rptBalConPPagasConRReceb.Sections("Section5").Controls("lblDif").Caption = Format(rptBalConPPagasConRReceb.Sections("Section5").Controls("lblDif").Caption, "##0.00")
If dif < 0 Then
rptBalConPPagasConRReceb.Sections("Section5").Controls("RS_Dif").ForeColor = vbRed
rptBalConPPagasConRReceb.Sections("Section5").Controls("lblDif").ForeColor = vbRed
Else
rptBalConPPagasConRReceb.Sections("Section5").Controls("RS_Dif").ForeColor = vbBlue
rptBalConPPagasConRReceb.Sections("Section5").Controls("lblDif").ForeColor = vbBlue
End If
With rptBalConPPagasConRReceb
Set .DataSource = rs_relatorio
.DataMember = ""
.Orientation = rptOrientLandscape
.Refresh
.Show
End With
Else
MsgBox "Não há registros neste período.", vbExclamation
txtDataInicial.SetFocus
End If
End With
End Sub
Utilizamos cookies e tecnologias semelhantes de acordo com a nossa Política de Privacidade, e ao continuar navegando, você concorda com estas condições.
Pergunta
Gabriel Cabral
Bom dia pessoal....
Cá estou com um prolema em que tenho um If Not...Else...End If...
O If Not é falso, mas ele não pula pro Else...ele continua na proxima linha...aí dá erro de Tipo de dados.....justamente porque não era pra continuar.....
Bem...vou colocar o código aqui e explicar melhor...
Eu faço um SELECT em que eu preciso selecionar, além de todos os campos da tabela FinanWin_Contas, a soma dos campos Con_ValorPgtoCP e Con_ValorPgtoCR ONDE nenhum desses campos pode ser nulo e que a data de pagamento [campo Con_DataPgto] esteja ENTRE a data inicial e a data final determinadas....
o que acontece é que quando eu informo um período em que não há registros nessas condições [if Not rs_relatorio.EOF Then], ao invés de ir pro Else e mostrar a MsgBox, o If Not que deveria ser falso, é tratado como verdadeiro e não vai pro Else....Então dá um erro de tipo de dados...o que já é esperado...
alguém conseguiria me ajudar??
Obrigado
Editado por Gabriel CabralLink para o comentário
Compartilhar em outros sites
18 respostass a esta questão
Posts Recomendados
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.