Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

cintiadel

[Resolvido] recuperar valor do reader dentro de outra função

Recommended Posts

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

Basta criar um parâmetro de entrada na sua função do quinto dia útil.

 

Abraços...

Esta dando esse erro agora

Argument 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

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

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,

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

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

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

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

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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.