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

Como registrar fechas, para luego realizar busquedas en vb.net

Estas en el tema de Como registrar fechas, para luego realizar busquedas en vb.net en el foro de .NET en Foros del Web. Holas, estoy trabajando en el Visual Studio 2008 con un SGBD SQL Server 2005 en vb.net. Mi duda es la siguiente: Necesito realizar un registro ...
  #1 (permalink)  
Antiguo 08/03/2010, 20:19
 
Fecha de Ingreso: octubre-2009
Mensajes: 70
Antigüedad: 14 años, 6 meses
Puntos: 0
Pregunta Como registrar fechas, para luego realizar busquedas en vb.net

Holas, estoy trabajando en el Visual Studio 2008 con un SGBD SQL Server 2005 en vb.net.
Mi duda es la siguiente:
Necesito realizar un registro que contiene una fecha de registro (ej: fecha de registro de un cliente), solo me interesa la fecha (ej:08-03-2010). El problema es que esto lo hago a través de DateTimePicker que me captura las fecha tipo 08-03-2010, pero al ver el registro en la BD me registra incluyendo la hora, el tipo de dato de fecha es Datetime . Por lo tanto al realizar una búsqueda de un registro a través de un DateTimePicker, tomando como parámetro la fecha no muestra nada puesto que no coinciden las horas.
Entonces lo que necesito saber es como hacer esto para no tener problemas con las horas, solo me interesa las fechas no las horas.
Espero su ayuda, Muchas gracias

P.D. : Si me explique mal, me preguntan.
  #2 (permalink)  
Antiguo 08/03/2010, 21:13
Avatar de jaullo  
Fecha de Ingreso: abril-2009
Mensajes: 994
Antigüedad: 15 años
Puntos: 30
Respuesta: Como registrar fechas, para luego realizar busquedas en vb.net

Checa esto:

http://www.forosdelweb.com/f87/forma...-fecha-382054/

http://www.forosdelweb.com/f87/formato-fecha-382312/
  #3 (permalink)  
Antiguo 08/03/2010, 22:00
 
Fecha de Ingreso: octubre-2009
Mensajes: 70
Antigüedad: 14 años, 6 meses
Puntos: 0
Pregunta Respuesta: Como registrar fechas, para luego realizar busquedas en vb.net

El problema no es que quiera hacer una consulta para que me devuelva la fecha, mi problema es como debo hacer para comparar la fecha que se encuentra registrada con la que deseo buscar, considerando que el registro incluye la hora pero al momento de seleccionar una fecha para buscar nunca coinciden en la hora por lo tanto nunca me muestra un resultado.


Como mencionaba anteriormente el problema surge al querer comparar una fecha que ingreso a través de un DateTimePicker, con una fecha que se encuentra anteriormente registrada, la que tiene registrada la hora. Por lo tanto al querer comparar las fechas, puede darse que efectivamente existan tuplas con la fecha que busco, pero como la hora es diferente no devuelve nada.

Sinceramente nose como trabajar con esto, nose de que manera debo registrar la fechas para poder hacer consultas sin mayor problema o como debería hacer las consultas, considerando lo anterior.

Necesito esto precisamente.
Código vb.net:
Ver original
  1. "SELECT cod_cli AS Codigo, rut_cli AS Rut, nombre_cli AS Nombre, fijo_cli AS Telefono, movil_cli As Celular, email_cli AS Mail FROM cliente WHERE fecha=" & fecha.Date & ""

Eso gracias.
  #4 (permalink)  
Antiguo 09/03/2010, 07:14
 
Fecha de Ingreso: octubre-2009
Mensajes: 70
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Como registrar fechas, para luego realizar busquedas en vb.net

Si no me explique bien, pregunten por favor.
Saludos, Muchas gracias
  #5 (permalink)  
Antiguo 09/03/2010, 10:13
 
Fecha de Ingreso: agosto-2008
Mensajes: 101
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Como registrar fechas, para luego realizar busquedas en vb.net

Hola klaudio83.

El asunto con las fechas es que la consulta si te devuelve resultados, si hay varios registros con la misma fecha, supongamos 3, te los delvovera. Lo que debes tener en cuenta es donde depositas los resultados de la consulta, si un dataset, datareader. Ya que ese Select te puede devolver mas de un registro. Trabajo con Sql Server 2005 y campos tipo Datetime y no es necesario especificarle la hora para que devuelva resultados, solo con la fecha es suficiente, pero recuerda que puede haber varios clientes con la misma fecha.

Seria bueno que especificaras como muestra los datos de la consulta, sin en textbox, listview o datagridview.

Recuerda que es un campo datetime (fecha hora) asi que siempre te va a guardar la fecha y la hora asi solo hayas enviado la fecha.

Saludos.

Última edición por Phillip; 09/03/2010 a las 10:23
  #6 (permalink)  
Antiguo 09/03/2010, 15:14
 
Fecha de Ingreso: septiembre-2007
Mensajes: 11
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Como registrar fechas, para luego realizar busquedas en vb.net

Prueba esto:

Código vb:
Ver original
  1. Dim query as String = "SELECT cod_cli AS Codigo, rut_cli AS Rut, nombre_cli AS Nombre, fijo_cli AS Telefono, movil_cli As Celular, email_cli AS Mail FROM cliente WHERE  (CONVERT(VARCHAR, Fecha, 103) = '" & fecha.Date & "')"
  #7 (permalink)  
Antiguo 10/03/2010, 08:00
 
Fecha de Ingreso: octubre-2009
Mensajes: 70
Antigüedad: 14 años, 6 meses
Puntos: 0
De acuerdo Respuesta: Como registrar fechas, para luego realizar busquedas en vb.net

Gracias por las respuestas, ya logre solucionar mi problema. Dejo la solución por si a alguien mas le pueda servir.

Las consultas por fechas son en formato ej: 2010-02-27, sin embargo, el formato de fecha que captura el DateTimePicker es 27-02-2010. Por lo que claramente no devolvería ningún resultado.

Lo que hice fue invertir el formato, para luego llamar a una función que hiciera el trabajo de consultar.
Y ademas a los datos que buscaba con una fecha determinada, a la fecha le sumaba un día mas, para que buscara en ese rango.

Código vb:
Ver original
  1. If ConsultaFactura.txOpcion.SelectedItem = "Fecha" Then
  2.             Dim valorFecha As String
  3.             valorFecha = Format(ConsultaFactura.DateFecha.Value.Date, "yyyy-MM-dd")
  4.             Dim valorFechaAdd As String
  5.             valorFechaAdd = Format(ConsultaFactura.DateFecha.Value.Date.AddDays(1), "yyyy-MM-dd")
  6.             RecargarGrillaFecha(valorFecha, valorFechaAdd)
  7.         End If

Código vb:
Ver original
  1. Private Sub RecargarGrillaFecha(ByVal fecha As String, ByVal fecha2 As String)
  2.         Dim conexion As New SqlConnection(cadena)
  3.         Dim dt As New DataTable
  4.         Dim MiDataSet As New DataSet
  5.         Dim MiAdapter As SqlDataAdapter
  6.  
  7.         MiAdapter = New SqlDataAdapter("SELECT DISTINCT F.id_factura AS Id, F.fecha AS Fecha, F.cod_cli AS Cliente, C.rut_cli AS Rut, C.nombre_cli AS Nombre, F.monto_final AS Total, F.orden_compra AS Orden, F.obs_factura AS Observaciones  FROM cliente C, factura F, detalle D, producto P WHERE C.cod_cli=F.cod_cli AND F.id_factura=D.id_factura AND D.id_prod=P.id_prod AND F.fecha >= '" & fecha & "' AND F.fecha < '" & fecha2 & "'", conexion)
  8.         MiAdapter.Fill(MiDataSet)
  9.         dt = MiDataSet.Tables(0)
  10.         DataGridView1.DataSource = MiDataSet.Tables(0)
  11.         Label3.Text = "N° de Clientes Mostrados: " & dt.Rows.Count & " "
  12.  
  13.     End Sub

Saludos y Fuerza Chile!, que se puede.

P.D: la consulta por fechas las hice con variables String y no Date

Última edición por klaudio83; 10/03/2010 a las 08:27 Razón: Correccion

Etiquetas: busquedas, fechas, realizar
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 10:24.