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
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.