cintiadel 0 Denunciar post Postado Junho 26, 2009 tenho uma função mostrar boleto onde tenho o reader com o select do banco, e outra função onde eu calculo o quinto dia util do proximo mes. preciso pegar o campo data de vencimento do select que esta na função mostrar boleto e jogar o valor dele na funçao quinto dia util, mas ja tentei atraves de variavel, session e n consigo fazer com que ele reconheça por estar em funçao diferente o que faço? Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Junho 26, 2009 Basta criar um parâmetro de entrada na sua função do quinto dia útil. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
cintiadel 0 Denunciar post Postado Junho 27, 2009 Basta criar um parâmetro de entrada na sua função do quinto dia útil. Abraços... Esta dando esse erro agoraArgument not specified for parameter 'vdtvcto' of 'Private Shared Function RetornaQuintoDiaUtil(Data As Date, vdtvcto As Integer) As String'. Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Junho 27, 2009 envie o segundo parâmetro da função Compartilhar este post Link para o post Compartilhar em outros sites
cintiadel 0 Denunciar post Postado Junho 27, 2009 envie o segundo parâmetro da função segue o codigo para me ajudarem: Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load MostrarBoleto(Request.Params("al_codigo"), Request.Params("pa"), Request.Params("nnumerobco"), Request.Params("tipo")) End Sub Protected Sub MostrarBoleto(ByVal al_codigo As String, ByVal pa As String, ByVal nnumerobco As String, ByVal tipo As String) Dim conexao As New Data.SqlClient.SqlConnection("conexao") Dim comando As New Data.SqlClient.SqlCommand Dim situacao As Data.SqlClient.SqlDataReader conexao.Open() comando.Connection = conexao comando.CommandText = "select * from boleto where al_codigo = '" & al_codigo & "' and pa='" & pa & "' and nnumerobco= '" & nnumerobco & "' and tipo= '" & tipo & "'" 'Response.Write(comando.CommandText) 'Exit Sub With comando.Parameters .Add(New Data.SqlClient.SqlParameter("@ra", Request.Params("al_codigo"))) .Add(New Data.SqlClient.SqlParameter("@pa", Request.Params("pa"))) .Add(New Data.SqlClient.SqlParameter("@nnum", Request.Params("nnumerobco"))) .Add(New Data.SqlClient.SqlParameter("@tp", Request.Params("tipo"))) End With situacao = comando.ExecuteReader() situacao.Read() Dim vdtvcto As Integer = situacao("dtvcto").AddMonths(1).Month Dim dt As String dt = RetornaQuintoDiaUtil(New Date(2009, vdtvcto, 1)) lbl_msg_superior.Text = "- O vencimento do próximo boleto será em " & dt & ".<br> " End Sub Private Shared Function RetornaQuintoDiaUtil(ByVal Data As DateTime, ByVal vdtvcto As Integer) As String Dim primeiroDiaUtil As Int32 = RetornaPrimeiroDiaUtil(Data) Dim auxDiasUteisLocalizados As Int32 = 1 Dim auxContadorDiaVerificados As Int32 = 1 Dim mes As Int32 = vdtvcto Dim quintoDiaUtil As DateTime = DateTime.Now Dim dataPrimeiroDiaUtil As New DateTime(Data.Year, vdtvcto, primeiroDiaUtil) While auxDiasUteisLocalizados < 5 quintoDiaUtil = dataPrimeiroDiaUtil.AddDays(auxContadorDiaVerificados) If VerificaDiaUtil(quintoDiaUtil) Then auxDiasUteisLocalizados += 1 End If auxContadorDiaVerificados += 1 End While Return quintoDiaUtil.ToString("dd/MM/yyyy") End Function 'RetornaQuintoDiaUtil Private Shared Function RetornaPrimeiroDiaUtil(ByVal Data As DateTime) As Integer 'Dim primeiroDiaMes As New DateTime(Data.Year, Now.Month, 1) Dim primeiroDiaMes As New DateTime(Data.Year, Now.AddMonths(1).Month, 1) While Not VerificaDiaUtil(primeiroDiaMes) primeiroDiaMes = primeiroDiaMes.AddDays(1.0F) End While Return primeiroDiaMes.Day End Function 'RetornaPrimeiroDiaUtil Private Shared Function VerificaDiaUtil(ByVal DiaMes As DateTime) As Boolean If DiaMes.DayOfWeek = DayOfWeek.Saturday Or DiaMes.DayOfWeek = DayOfWeek.Sunday Or VerificaFeriado(DiaMes) Then Return False End If Return True End Function 'VerificaDiaUtil Private Shared Function VerificaFeriado(ByVal DiaMes As DateTime) As Boolean 'Código para verificar se uma data passada como parâmetro é feriado de acordo com banco 'de dados ou WebService Dim conexao As New Data.SqlClient.SqlConnection("conexao") Dim comando As New Data.SqlClient.SqlCommand Dim drferiado As Data.SqlClient.SqlDataReader conexao.Open() comando.Connection = conexao comando.CommandText = "Select dtferiado from feriados2 where dtferiado = @fer" With comando.Parameters .Add(New Data.SqlClient.SqlParameter("@fer", DiaMes.ToString("yyyy-MM-dd"))) End With drferiado = comando.ExecuteReader() If drferiado.Read() Then Return True Else Return False End If drferiado.Close() conexao.Close() Return False End Function 'VerificaFeriado End Class 'Program Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Junho 29, 2009 Você postou um monte de código. Em qual dessas linhas ocorre o erro? Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Junho 29, 2009 cintiadel, o erro diz qeu está faltando o segundo parâmetro da referida função você sabe o que é parâmetro ? o que é função ? nesse trecho: dt = RetornaQuintoDiaUtil(New Date(2009, vdtvcto, 1))possui apenas uma parâmetro setado.precisa do segundo parâmetro. dt = RetornaQuintoDiaUtil(New Date(2009, vdtvcto, 1), AQUI!! ) Compartilhar este post Link para o post Compartilhar em outros sites
cintiadel 0 Denunciar post Postado Junho 29, 2009 cintiadel, o erro diz qeu está faltando o segundo parâmetro da referida função você sabe o que é parâmetro ? o que é função ? nesse trecho: dt = RetornaQuintoDiaUtil(New Date(2009, vdtvcto, 1))possui apenas uma parâmetro setado.precisa do segundo parâmetro. dt = RetornaQuintoDiaUtil(New Date(2009, vdtvcto, 1), AQUI!! ) sim eu sei o que é função. e parametro é o valor que devo passar... mas o meu codigo estava assim: dt = RetornaQuintoDiaUtil(New Date(2009, 5, 1))e estava funcionando, mas o problema é que preciso passar o mes do boleto, e nao o mes atual, senao o meu calculo n fica correto Compartilhar este post Link para o post Compartilhar em outros sites
cintiadel 0 Denunciar post Postado Junho 29, 2009 Você postou um monte de código. Em qual dessas linhas ocorre o erro? Abraços... o erro ocorre nessa linha : dt = RetornaQuintoDiaUtil(New Date(2009, vdtvcto, 1)) Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Junho 29, 2009 já tentou adicionar o segundo parâmetro, independente de estar funcionando anteriormente ou não ? como estava o script original, que estava funcionando antes de ser modificado ? a mensagem de erro é específica: "informe o segundo parâmetro" e estava funcionando, mas o problema é que preciso passar o mes do boleto, e nao o mes atual, senao o meu calculo n fica correto Sempre que postar uma dúvida, descreva-a detalhadamente com clareza e objetividade desde o início. É bom também dar um feedback do que está fazendo, se entendeu ou não... enfim. O interesse em resolver o assunto é mais seu do que do forum. Compartilhar este post Link para o post Compartilhar em outros sites
cintiadel 0 Denunciar post Postado Junho 29, 2009 já tentou adicionar o segundo parâmetro, independente de estar funcionando anteriormente ou não ? como estava o script original, que estava funcionando antes de ser modificado ? a mensagem de erro é específica: "informe o segundo parâmetro" e estava funcionando, mas o problema é que preciso passar o mes do boleto, e nao o mes atual, senao o meu calculo n fica correto Sempre que postar uma dúvida, descreva-a detalhadamente com clareza e objetividade desde o início. É bom também dar um feedback do que está fazendo, se entendeu ou não... enfim. O interesse em resolver o assunto é mais seu do que do forum. o que estava funcionando era esse aqui: dt = RetornaQuintoDiaUtil(New Date(2009, 5, 1))e o que esta com erro esse aqui; dt = RetornaQuintoDiaUtil(New Date(2009, vdtvcto, 1)) eu alterei pq ao invés de pegar o mes atual eu quero q ele pegue o valor da variavel mas a qtde de parametros esta igual Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Junho 29, 2009 verificou se o valor da variável vdtvcto é consistente para a função Date() ? Compartilhar este post Link para o post Compartilhar em outros sites
cintiadel 0 Denunciar post Postado Junho 30, 2009 verificou se o valor da variável vdtvcto é consistente para a função Date() ?a variavel vdtvcto retorna o valor "8" que seria o mes do vencimento adicionando um mes Compartilhar este post Link para o post Compartilhar em outros sites
cintiadel 0 Denunciar post Postado Junho 30, 2009 eu consegui chegar ao resultado esperado, mas n sei se fiz da forma mais correta. na função mostrar boleto onde o código nas linhas seguintes era: Dim vdtvcto As Integer = situacao("dtvcto").AddMonths(1).Month Dim dt As String dt = RetornaQuintoDiaUtil(New Date(2009, vdtvcto, 1)) substitui por: Dim vdtvcto As Integer = situacao("dtvcto").AddMonths(1).Month Dim dt As String dt = RetornaQuintoDiaUtil(New Date(2009, vdtvcto, 1), (vdtvcto)) tambem substitui: Private Shared Function RetornaQuintoDiaUtil(ByVal Data As DateTime, ByVal vdtvcto As Integer) As String Dim primeiroDiaUtil As Int32 = RetornaPrimeiroDiaUtil(Data) Dim auxDiasUteisLocalizados As Int32 = 1 Dim auxContadorDiaVerificados As Int32 = 1 Dim mes As Int32 = vdtvcto Dim quintoDiaUtil As DateTime = DateTime.Now Dim dataPrimeiroDiaUtil As New DateTime(Data.Year, vdtvcto, primeiroDiaUtil) While auxDiasUteisLocalizados < 5 quintoDiaUtil = dataPrimeiroDiaUtil.AddDays(auxContadorDiaVerificados) If VerificaDiaUtil(quintoDiaUtil) Then auxDiasUteisLocalizados += 1 End If auxContadorDiaVerificados += 1 End While Return quintoDiaUtil.ToString("dd/MM/yyyy") End Function 'RetornaQuintoDiaUtil por: Private Shared Function RetornaQuintoDiaUtil(ByVal Data As DateTime, ByVal vdtvcto As Integer) As String Dim primeiroDiaUtil As Int32 = RetornaPrimeiroDiaUtil(Data, vdtvcto) Dim auxDiasUteisLocalizados As Int32 = 1 Dim auxContadorDiaVerificados As Int32 = 1 Dim mes As Int32 = vdtvcto Dim quintoDiaUtil As DateTime = DateTime.Now Dim dataPrimeiroDiaUtil As New DateTime(Data.Year, vdtvcto, primeiroDiaUtil) While auxDiasUteisLocalizados < 5 quintoDiaUtil = dataPrimeiroDiaUtil.AddDays(auxContadorDiaVerificados) If VerificaDiaUtil(quintoDiaUtil) Then auxDiasUteisLocalizados += 1 End If auxContadorDiaVerificados += 1 End While Return quintoDiaUtil.ToString("dd/MM/yyyy") End Function 'RetornaQuintoDiaUtil e esse: Private Shared Function RetornaPrimeiroDiaUtil(ByVal Data As DateTime) As Integer Dim primeiroDiaMes As New DateTime(Data.Year, Now.AddMonths(1).Month, 1) While Not VerificaDiaUtil(primeiroDiaMes) primeiroDiaMes = primeiroDiaMes.AddDays(1.0F) End While Return primeiroDiaMes.Day End Function 'RetornaPrimeiroDiaUtil por este aqui: Private Shared Function RetornaPrimeiroDiaUtil(ByVal Data As DateTime, ByVal vdtvcto As Integer) As Integer Dim primeiroDiaMes As New DateTime(Data.Year, vdtvcto, 1) While Not VerificaDiaUtil(primeiroDiaMes) primeiroDiaMes = primeiroDiaMes.AddDays(1.0F) End While Return primeiroDiaMes.Day End Function 'RetornaPrimeiroDiaUtil Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Julho 1, 2009 viu como era simples ? bastava atribuir o valor do segundo parâmetro da função, assim como a própria mensagem de erro dizia.. resolvido ? Compartilhar este post Link para o post Compartilhar em outros sites
cintiadel 0 Denunciar post Postado Julho 1, 2009 viu como era simples ? bastava atribuir o valor do segundo parâmetro da função, assim como a própria mensagem de erro dizia.. resolvido ? sim, mas achei redundante fazer isso, ter que repetir duas vezes a variavel, n entendi muito bem pq Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Julho 3, 2009 sim, mas achei redundante fazer isso, ter que repetir duas vezes a variavel, n entendi muito bem pq é a regra da função.. ou você segue a regra da função ou modifique-a para algo conveniente. Compartilhar este post Link para o post Compartilhar em outros sites
cintiadel 0 Denunciar post Postado Julho 3, 2009 sim, mas achei redundante fazer isso, ter que repetir duas vezes a variavel, n entendi muito bem pq é a regra da função.. ou você segue a regra da função ou modifique-a para algo conveniente. o importante é funcionar valeu pela ajuda Compartilhar este post Link para o post Compartilhar em outros sites