Foros del Web » Programación para mayores de 30 ;) » .NET »

15 Días antes del actual - Fechas

Estas en el tema de 15 Días antes del actual - Fechas en el foro de .NET en Foros del Web. Miren, tengo un problema. Tengo una base de datos donde guardo clientes, y sus respectivas fechas de cumpleaños. Lo que necesito es consultar las fechas ...
  #1 (permalink)  
Antiguo 20/10/2009, 13:46
 
Fecha de Ingreso: abril-2008
Ubicación: Córdoba
Mensajes: 103
Antigüedad: 16 años
Puntos: 4
15 Días antes del actual - Fechas

Miren, tengo un problema.

Tengo una base de datos donde guardo clientes, y sus respectivas fechas de cumpleaños.

Lo que necesito es consultar las fechas de cumpleaños, y guardar sólo las fechas donde faltan 15 dias para el cumpleaños.

Por ejemplo, hoy es 1/1/2010. Supongamos que JUANCITO cumple el día 20/1/2010.
Necesito que el 5/1/2010 me avise que faltan 15 días para que cumpla Juancito. Cuando sea 6/1/2010 necesito que me avise que faltan 14 días, y asi sucesivamente.

Como haría esto ? El problema se me complica al restar los meses también. Supongamos que una persona cumple el 1 de Enero, entonces me tendría que avisar el 17 de Diciembre.

Espero que me puedan ayudar, Saludos !
  #2 (permalink)  
Antiguo 20/10/2009, 13:58
 
Fecha de Ingreso: enero-2007
Ubicación: Tingo María - Perú
Mensajes: 399
Antigüedad: 17 años, 3 meses
Puntos: 13
Respuesta: 15 Días antes del actual - Fechas

esto para que lo hagas a nivel de base de datos (SQL Server):

declare @date datetime
set @date = '2009-11-11'
select DATEDIFF(day,getdate(),@date)

pero si quieres hacerlo desde .Net podrias usar la funcion AddDays, o Substract
__________________
Vivir para ser buenos y ser buenos para servir mejor.
  #3 (permalink)  
Antiguo 20/10/2009, 14:57
 
Fecha de Ingreso: abril-2008
Ubicación: Córdoba
Mensajes: 103
Antigüedad: 16 años
Puntos: 4
Respuesta: 15 Días antes del actual - Fechas

Bien, lo que hice fue esto:

Código VB .NET:
Ver original
  1. For i As Integer = 0 To ds.Tables(0).Rows.Count - 1
  2.             ReDim fechas(i)
  3.             ReDim diferencias(i)
  4.             fechas(i) = ds.Tables(0).Rows(i).Item("cumpleanos")
  5.             diferencias(i) = fechas(i).Subtract(Now.Date)
  6.             For x As Integer = 0 To 15
  7.                 If diferencias(i).TotalDays = x Then
  8.                     ListBox1.Items.Add("Faltan : " & x & " días para el cumpleaños de " & ds.Tables(0).Rows(i).Item("Nombre") & " " & ds.Tables(0).Rows(i).Item("Apellido"))
  9.                 End If
  10.             Next
  11.         Next

Ahora tengo otra duda, cuando me rellena los datos en el listbox, lo hace de la siguiente manera:

Faltan: 11 días para el cumpleaños de xxx
Faltan: 13 días para el cumpleaños de aaa
Faltan: 12 días para el cumpleaños de yyy

Quiero que queden todos ordenados, que valla en forma creciente. (Primero 11, despues 12 y después 13).

Como podría hacer esto ? Saludos !
  #4 (permalink)  
Antiguo 20/10/2009, 16:43
 
Fecha de Ingreso: enero-2007
Ubicación: Tingo María - Perú
Mensajes: 399
Antigüedad: 17 años, 3 meses
Puntos: 13
Respuesta: 15 Días antes del actual - Fechas

aplicale un Order By a la consulta que devuelves, otro metodo seria usar tu propio algoritmo de Ordenacion (Cosa que no te recomendaria porque podria inculo ser algo lenta).
__________________
Vivir para ser buenos y ser buenos para servir mejor.
  #5 (permalink)  
Antiguo 20/10/2009, 17:01
 
Fecha de Ingreso: abril-2008
Ubicación: Córdoba
Mensajes: 103
Antigüedad: 16 años
Puntos: 4
Respuesta: 15 Días antes del actual - Fechas

Me parece que el error se encuentra en el FOR que lleva el listbox.

Cuando agrego los items voy agregando los del integer X, lo cual los ordena a medida que valla encontrando.

He probado con ORDER BY cumpleanos DESC pero no pasa nada.

Si me puedes hechar una mano estaría muy agradecido. Saludos !
  #6 (permalink)  
Antiguo 20/10/2009, 20:53
 
Fecha de Ingreso: enero-2007
Ubicación: Tingo María - Perú
Mensajes: 399
Antigüedad: 17 años, 3 meses
Puntos: 13
Respuesta: 15 Días antes del actual - Fechas

2 cosas:
1° Asegurate de poner el Order By en tu consulta SQL
2° Asignale False al Sorted de tu ListBox (ListBox1.Sorted= false )

deberia de funcionar , a menos que tu consulta este haciendo order by a mas de una columna.
__________________
Vivir para ser buenos y ser buenos para servir mejor.
  #7 (permalink)  
Antiguo 21/10/2009, 10:58
 
Fecha de Ingreso: abril-2008
Ubicación: Córdoba
Mensajes: 103
Antigüedad: 16 años
Puntos: 4
Respuesta: 15 Días antes del actual - Fechas

Te adjunto el código del FORM_LOAD donde quiero que se ejecute la consulta

Código VB.NET:
Ver original
  1. Dim command As String = "Select nombre,apellido,cumpleanos from clientes ORDER BY cumpleanos DESC"
  2.         Dim cadena_conexion As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='D:\Documents and Settings\Administrador\Mis documentos\registros.mdb'"
  3.         Dim dbconn As New System.Data.OleDb.OleDbConnection(cadena_conexion)
  4.         Dim comando As New OleDbDataAdapter(command, dbconn)
  5.         Dim ds As New DataSet
  6.         comando.Fill(ds, "clientes")
  7.         For i As Integer = 0 To ds.Tables(0).Rows.Count - 1
  8.             ReDim fechas(i)
  9.             ReDim diferencias(i)
  10.             fechas(i) = ds.Tables(0).Rows(i).Item("cumpleanos")
  11.             diferencias(i) = fechas(i).Subtract(Now.Date)
  12.             If diferencias(i).TotalDays <= 15 Then
  13.                 ListBox1.Items.Add("Faltan " & diferencias(i).TotalDays & " días para el cumpleaños de " & ds.Tables(0).Rows(i).Item("Nombre") & " " & ds.Tables(0).Rows(i).Item("Apellido"))
  14.             End If
  15.         Next

Que puede ser? :/
  #8 (permalink)  
Antiguo 21/10/2009, 11:04
 
Fecha de Ingreso: enero-2007
Ubicación: Tingo María - Perú
Mensajes: 399
Antigüedad: 17 años, 3 meses
Puntos: 13
Respuesta: 15 Días antes del actual - Fechas

la columna cumpleanos de que tipo es?
y haber si listas los resultados que te muestra y en que orden los esta mostrando
__________________
Vivir para ser buenos y ser buenos para servir mejor.
  #9 (permalink)  
Antiguo 21/10/2009, 11:23
 
Fecha de Ingreso: abril-2008
Ubicación: Córdoba
Mensajes: 103
Antigüedad: 16 años
Puntos: 4
Respuesta: 15 Días antes del actual - Fechas



Ahi está la forma en que se listan.

Y lo de saber el tipo de dato del campo cumpleanos no sé como hacerlo, si me indicarías te podría decir. Es muy importante eso ?

Saludos !
  #10 (permalink)  
Antiguo 21/10/2009, 13:18
 
Fecha de Ingreso: enero-2007
Ubicación: Tingo María - Perú
Mensajes: 399
Antigüedad: 17 años, 3 meses
Puntos: 13
Respuesta: 15 Días antes del actual - Fechas

la verdad que si, asegurate de que ese campo sea de tipo fecha.
__________________
Vivir para ser buenos y ser buenos para servir mejor.
  #11 (permalink)  
Antiguo 21/10/2009, 19:45
 
Fecha de Ingreso: abril-2008
Ubicación: Córdoba
Mensajes: 103
Antigüedad: 16 años
Puntos: 4
Respuesta: 15 Días antes del actual - Fechas

Era problema de la configuración de esa columna jaja.

Había que ponerla en formato FECHA/HORA, mientras que se encontraba en formato TEXTO.

Que tonto he sido como no me di cuenta antes !

Saludos y gracias :)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:28.