Visual Basic.NET - No se donde está el error...Me podrían ayudar?

 
Vista:

No se donde está el error...Me podrían ayudar?

Publicado por Naydova (6 intervenciones) el 14/09/2007 16:54:04
Hola, me podrían ayudar?

Le estoy ayudando a mi hermanito con una tarea, que tiene que consultar determinada semana del año en curso y que le de el intervalo. La semana se supone empieza en domingo...Pero pues no funciona, y según mi lógica debería funcionar...

Espero que me puedan ayudar....gracias....

Public Shared Function BuscaSemana(ByVal SEMANA As Integer)

Dim N, Anio As Integer
Dim Dif As Double
Dim DayOne, DayFinal As String
Dim InicioAnio, FinAnio, SemIni, SemTerm, UltSem As Date

'Formato de Fecha mm/dd/aaaa
'El primer día del año.
Anio = Year(Now)
DayOne = "101" + CStr(Anio)
InicioAnio = Mid(Trim(CStr(DayOne)), 1, 1) + "/" + Mid(Trim(CStr(DayOne)), 2, 2) + "/" + Mid(Trim(CStr(DayOne)), 4, 4)
'El último día del año.
DayFinal = "1231" + CStr(Anio)
FinAnio = ConvertirFecha(DayFinal)
SemIni = InicioAnio
'Calcular semanas.

For N = 1 To 52
Dif = 7 - Weekday(SemIni)

If N = SEMANA Then
SemTerm = DateAdd("d", Dif, SemIni)
ConsultaSem = CStr(SemIni) + " AND " + CStr(SemTerm)
Exit For
Exit Function
Else
If N = 52 And SEMANA = 52 Then
UltSem = DateAdd("d", Dif, SemIni)
If UltSem > FinAnio Then
SemTerm = FinAnio
ConsultaSem = CStr(SemIni) + " AND " + CStr(SemTerm)
Exit Function
End If
End If
End If

SemIni = DateAdd("d", 1, SemTerm)
Next N
End Function
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:No se donde está el error...Me podrían ayudar?

Publicado por JJMZ (3 intervenciones) el 14/09/2007 17:45:59
Hola Naydova, quiero ayudarte en tu problema pero a verdad no t entinedo; por favor explicanos de mejor manera q e slo q quieres conseguir.
Que datos debes utilizar como input y cual debe ser el output.
Saludos...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:No se donde está el error...Me podrían ayudar?

Publicado por Naydova (6 intervenciones) el 14/09/2007 18:09:43
Hola!

Se supone que se tiene como dato de entrada el número de semana que desean consultar...Como dato de salida sería la variable ConsultaSem en la cual se almacena la fecha de inicio de semana mas la fecha del ultimo dia de la semana....

Gracias, por ayudarme...Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:No se donde está el error...Me podrían ayudar?

Publicado por OliBeer (391 intervenciones) el 14/09/2007 18:46:37
Lo que quieres hacer es, traer la dia inicial y el final de un número de semana determinado?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:No se donde está el error...Me podrían ayudar?

Publicado por Naydova (6 intervenciones) el 14/09/2007 18:59:22
Si, es lo que deseo que realice, pero de la primer semana no cambia, y ya no sé donde esté el error, porque según yo, ya lo corrí en papel y se supone que si realiza lo que deseo...pero pues el resultado no es el mismo....

Muchas Gracias....Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:No se donde está el error...Me podrían ayudar?

Publicado por Harold V. (411 intervenciones) el 14/09/2007 19:11:46
Hola.......

Espero esto te ayude.......

Imports System.Collections.Specialized

Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
GetSemana(45, 2007)
End Sub

Sub GetSemana(ByVal Semana As Integer, ByVal year As Integer)
Dim col As New NameValueCollection
If Semana >= 1 And Semana <= 53 Then
If year >= 1900 And year.ToString.Length = 4 Then 'debe tener 4 cifras y ser mayor o igual a 1900
Dim fecha As DateTime = CDate("31/12/" & year - 1)
If Date.IsLeapYear(year) Then
For x As Int32 = 1 To 366 'bisiesto
Dim sem As Integer = DatePart(DateInterval.WeekOfYear, fecha.AddDays(x), FirstDayOfWeek.Monday)
Dim ndate As Date = fecha.AddDays(x)
col.Add(sem, ndate)
Next
Else
For x As Int32 = 1 To 365
Dim sem As Integer = DatePart(DateInterval.WeekOfYear, fecha.AddDays(x), FirstDayOfWeek.Monday)
Dim ndate As Date = fecha.AddDays(x)
col.Add(sem, ndate)
Next
End If

'Ejemplo: devuelve los dias en una sola cadena
MsgBox(col.Get(Semana.ToString))

'Ejemplo: Mostramos los dias de la semana seleccionada
GetDates(col.Get(Semana.ToString))

Else
MsgBox("Verifique que el año introducido tenga 4 cifras y sea mayor o igual a 1900", MsgBoxStyle.Exclamation, "Info....")
End If
Else
MsgBox("Verifique que la semana introducida fluctue entre 1 y 53", MsgBoxStyle.Exclamation, "Info....")
End If

End Sub

Sub GetDates(ByVal str As String)
Dim Mystr() As String = str.Split(",")
For Each s As String In Mystr
MessageBox.Show(s.ToString)
Next
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:No se donde está el error...Me podrían ayudar?

Publicado por Naydova (6 intervenciones) el 14/09/2007 21:12:42
Hola Harold!!!

Antes que nada disculpa que no contestaba pronto, pero tuve que salir....

Muchas gracias por el código, pero no se si sea mi pc, pero has de cuenta, que me marca varios errores...aquí te los describo:

Me marca error de ambiguedad en:

Dim sem As Integer = DatePart(DateInterval.WeekOfYear, fecha.AddDays(x), FirstDayOfWeek.Monday)

Me marca error en la fecha, que no puede ser definida así...:S

Dim fecha As DateTime = CDate("31/12/" & year - 1)

Le cambié a que tomara este formato, pero sigue con errores...

Dim fecha As DateTime = CDate("12/31/" + CStr(year))

Espero me puedas seguir ayudando...

Muchas gracias por contestarme....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:No se donde está el error...Me podrían ayudar?

Publicado por Harold V. (411 intervenciones) el 14/09/2007 22:06:08
OK ENTONCES remplazalo por esto... debe funcionar igual.....

Dim fecha As New Date(year - 1, 12, 31)

Que significa esto??.........

Le pasamos:

Year -1 Ejm: si es la info del 2007 la que buscas, year sera= 2006
'2 es el mes
31 es el dia

' Por consiguinete tenemos (31/12/2006)

Y al ejecutar el For, como sumara 1 a la fecha establecida (31/12/2006)

----->nuestra nueva fecha sera 01/01/2007, y asi susecivamente.. hasta terminar el For
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:No se donde está el error...Me podrían ayudar?

Publicado por Naydova (6 intervenciones) el 14/09/2007 23:17:23
Muchisimas gracias....me sirvió lo que me dices que le cambie...

Es lo que tenía error, y del otro que te comentaba de

Dim sem As Integer = DatePart(DateInterval.WeekOfYear, fecha.AddDays(x) , FirstDayOfWeek.Monday)

Simplemente le omití el último dato, y corre perfectamente...

De nuevo muchas gracias....Que estés bien.....

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:No se donde está el error...Me podrían ayudar?

Publicado por JJMZ (3 intervenciones) el 14/09/2007 23:49:50
Hola disculpa q recien me reconecte pero estuve ocupado, veo q ya te dieron la solucion, de todas maneras te envio lo q acabo de hacer, e sun poco mas corto.

Private Sub DevuelveFechas(ByVal nroSemanas As Integer, ByVal año As Integer)
Dim dtFechaInicioSemana As Date
Dim dtFechaFinSemana As Date

Dim dtPrimerDiaAño As DateTime = "01/01/" & año
Dim strDia As String = dtPrimerDiaAño.DayOfWeek

dtFechaInicioSemana = "" & DateAdd(DateInterval.WeekOfYear, Convert.ToDouble(nroSemanas - 1), dtPrimerDiaAño)
dtFechaInicioSemana = DateAdd(DateInterval.Day, -(strDia - 1), dtFechaInicioSemana)

dtFechaFinSemana = DateAdd(DateInterval.Day, 4, dtFechaInicioSemana)

MsgBox(dtFechaInicioSemana & " - " & dtFechaFinSemana)
End Sub

Ojala tmb te sirva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:No se donde está el error...Me podrían ayudar?

Publicado por Naydova (6 intervenciones) el 17/09/2007 16:06:59
Hola JJMZ....

Muchas gracias por la ayuda, me sirvio de mucho....

Y diskulpa que no habia respondido, pero sali de la ciudad y no chequé nada...

Saludos, y que estés bien...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar