Visual Basic.NET - porque no se buscan los datos tipo fecha de una base de datos de access

 
Vista:
sin imagen de perfil

porque no se buscan los datos tipo fecha de una base de datos de access

Publicado por Matias (7 intervenciones) el 16/02/2022 02:27:10
Private Sub Buscadorfecha_ValueChanged(sender As Object, e As EventArgs) Handles Buscadorfecha.ValueChanged

If Buscadorfecha.ToString("dd/MM/yyyy") <> "" Then
consultar = "SELECT * FROM Ventas WHERE Fecha = " & Buscadorfecha.ToString("dd/MM/yyyy") & ""
adaptador = New OleDbDataAdapter(consultar, conexionv)
registros = New DataSet

adaptador.Fill(registros, "Ventas")
lista = registros.Tables("Ventas").Rows.Count

If lista <> 0 Then
DataGridView1.DataSource = registros
DataGridView1.DataMember = "Ventas"
Else
MsgBox("No", vbCritical, "Atencion")

End If
End If

End Sub
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
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

porque no se buscan los datos tipo fecha de una base de datos de access

Publicado por Phil Rob (1554 intervenciones) el 16/02/2022 19:58:31
Hola,

Te proppongo el codigo siguiente :

1
2
3
4
5
6
If Buscadorfecha.ToString("dd/MM/yyyy") <> "" Then
 
Dim FechaAEncontrar As String = Buscadorfecha.ToString("yyyy/MM/dd")   ' Es mejor tener la fecha en esto formato
 
consultar = "SELECT * FROM Ventas WHERE FORMAT(Fecha, 'yyyy/MM/dd') = " & "'" & FechaAEncontrar & "'"
‘ … … …

No olvidar los apóstrofos ante y tras la variable FechaAEncontrar, y en la funcione FORMAT(Fecha, 'yyyy/MM/dd').

Si tienes tadavia problema, dice me ...
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
sin imagen de perfil

porque no se buscan los datos tipo fecha de una base de datos de access

Publicado por Matias (7 intervenciones) el 22/02/2022 21:12:38
Gracias por la ayuda, pero sigue sin funcionar.
Ahora me sale este error: "El codigo de usuario no controlo invalidCastException. La conversión de la cadena "dd/MM/yyyy" en el tipo 'Integer' no es válida."
si me podes ayudar con eso te lo agradezco
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
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

porque no se buscan los datos tipo fecha de una base de datos de access

Publicado por Phil Rob (1554 intervenciones) el 22/02/2022 21:49:55
Hola,
Parece que el campo Fecha no es String ni DateTime, sería un tipo numérico, Integer.
Deberías enviar me el esquema de la tabla o la DB Access (puedes lo poner en Google Drive, o Dropbox, o en fichero adjuntado al mensaje).
Tengo un poco tiempo mañana, mir6si lo quieres...
Buenas noches...
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
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

porque no se buscan los datos tipo fecha de una base de datos de access

Publicado por Phil Rob (1554 intervenciones) el 23/02/2022 13:30:40
Continuación ...

La noche da consejos …

Querría saber que es la herramienta Buscadorfecha,es un TextBox, es un DateTimePicker, … ?

Si es un TextBox, en mis códigos del otro día, debes reemplazar :

1
Dim FechaAEncontrar As String = Buscadorfecha.ToString("yyyy/MM/dd")

para

1
Dim FechaAEncontrar As String = CType(Buscadorfecha.Text, Date).ToString("yyyy/MM/dd")


Claro, supongo que el campo Fecha en la tabla es un tipo String o DateTime.

En otro caso, envía me la DB.

...
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
sin imagen de perfil

porque no se buscan los datos tipo fecha de una base de datos de access

Publicado por Matias (7 intervenciones) el 23/02/2022 14:23:38
Es un DateTimePicker
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
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

porque no se buscan los datos tipo fecha de una base de datos de access

Publicado por Phil Rob (1554 intervenciones) el 23/02/2022 14:39:19
Hago una prueba y te digo el resultado.
Este no funciona cuando reemplazas mi linea de código ?
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
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

porque no se buscan los datos tipo fecha de una base de datos de access

Publicado por Phil Rob (1554 intervenciones) el 23/02/2022 15:05:11
Cuando Buscadorfecha es un DateTimePicker, la frase de codigo debe ser :

FechaAEncontrar = Buscadorfecha.Value.ToString("yyyy/MM/dd")

Mis otros códigos estan correctos.


Dice me ...
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
sin imagen de perfil

porque no se buscan los datos tipo fecha de una base de datos de access

Publicado por Matias (7 intervenciones) el 24/02/2022 03:19:26
Ahora me apareció que no se había iniciado "conexionString" siendo que ya lo inicie en el load. Igualmente lo inicie nuevamente.
El codigo es el siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Private Sub Buscadorfecha_ValueChanged(sender As Object, e As EventArgs) Handles Buscadorfecha.ValueChanged
 
        conexionv.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=basedatos.mdb;Persist Security Info =False"
        conexionv.Open()
 
        If Buscadorfecha.Value.ToString("dd/MM/yyyy") <> "" Then
 
            Dim FechaAEncontrar As String = Buscadorfecha.Value.ToString("dd/MM/yyyy")
            'Dim FechaAEncontrar As String = Buscadorfecha.ToString("yyyy/MM/dd")   ' Es mejor tener la fecha en esto formato
 
            consultar = "SELECT * FROM Ventas WHERE FORMAT(Fecha, 'dd/MM/yyyy') = " & "'" & FechaAEncontrar & "'"
            adaptador = New OleDbDataAdapter(consultar, conexionv)
            registros = New DataSet
 
            adaptador.Fill(registros, "Ventas")
            lista = registros.Tables("Ventas").Rows.Count
 
            If lista <> 0 Then
                DataGridView1.DataSource = registros
                DataGridView1.DataMember = "Ventas"
            Else
                MsgBox("No", vbCritical, "Atencion")
 
            End If
        End If
 
    End Sub


Te agradezco de antemano por la ayuda.
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
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

porque no se buscan los datos tipo fecha de una base de datos de access

Publicado por Phil Rob (1554 intervenciones) el 24/02/2022 08:18:34
Hola,

Veo que utilizas el formato dd/MM/yyyy a lugar de yyyy/MM/dd. Este te dará problema en otras consultas. No es mas difícil de escribir yyyy/MM/dd, es ToString que has el trabajo en ambos casos. El formato yyyy/MM/dd serve solamente a los cálculos del sistema SQL, no cambia la mostrada de las fechas en el DataGridView, estarán como están visibles cuando abre la DB con Access.

Pienso que Buscadorfecha.Value.ToString("dd/MM/yyyy") es siempre igual a una fecha, sobre todo en este procedimiento. Es la razón que If Buscadorfecha.Value.ToString("dd/MM/yyyy") <> "" Then ... no es necesario.

Supongo que le ConnectionString es bien escrita (no puedo lo saber sin tener la DB).

Pero, puedo decir que conexionv.Open() no debe ser escrito cuando utilizas un DataAdapter. El Open es necesario con un DataReader y en este caso, deberemos encontrar un Close al fin del procedimiento. Pero es mejor de utilizar un DataAdaptor para llenar un DataGridView, es mas fácil.

Escribo el código como esta (atención, puede existir error de sintaxis porque no he podido ejecutar este codigo) :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Private Sub Buscadorfecha_ValueChanged(sender As Object, e As EventArgs) Handles Buscadorfecha.ValueChanged
 
        conexionv.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=basedatos.mdb;Persist Security Info =False"
 
        Dim FechaAEncontrar As String = Buscadorfecha.Value.ToString("yyyy/MM/dd")
 
        consultar = "SELECT * FROM Ventas WHERE FORMAT(Fecha, 'yyyy/MM/dd') = " & "'" & FechaAEncontrar & "'"
 
        Try                              '   Probablamente nunca error si ConnectionString bien escrita
            registros = New DataTable
            adaptador = New OleDbDataAdapter(consultar, conexionv)
            adaptador.Fill(registros)
            ' registros.TableName = "Ventas"    Probablamente no necesario aqui.
            ' No necesario de calcular la cuantidad de registros, si 0 ahora el DataGridview sera vacia.
 
            ' Pero es necesario de vaciar el DGV, si no, puede se llenar con los tratamentos succesivos o dar error.
            DataGridView1.DataBindings.Clear()
 
            DataGridView1.DataSource = registros
 
        Catch ex As Exception
            MessageBox.Show(ex.Message)
 
        End Try
        adaptador.Dispose
    End Sub


Que tenga un buen día ...
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
sin imagen de perfil

porque no se buscan los datos tipo fecha de una base de datos de access

Publicado por Matias (7 intervenciones) el 05/03/2022 20:14:19
Hola.
Ahora ya no me saltan errores pero tampoco se busca la fecha en la base de datos, por el contrario, cuando presiono una fecha del datetimepicker se me sale de la depuracion.
Si podes ayudarme con este problema te lo agradezco.

1
2
3
4
5
6
7
8
9
10
11
Private Sub Buscadorfecha_ValueChanged(sender As Object, e As EventArgs)
 
        If Buscadorfecha.Value.Date.ToString("dd/MM/yyyy") <> "" Then
 
            Dim FechaAEncontrar As String = Buscadorfecha.Value.Date.ToString("dd/MM/yyyy")
 
            consultar = "SELECT * FROM Ventas WHERE FORMAT(Fecha, 'dd/MM/yyyy') = " & "'" & FechaAEncontrar & "'"
 
        End If
 
    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
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

porque no se buscan los datos tipo fecha de una base de datos de access

Publicado por Phil Rob (1554 intervenciones) el 06/03/2022 08:54:54
Hola Matias,

Para salir de la depuración, el error no esta en el código que envias. Pero no veo como llamas el procedimiento Buscadorfecha_ValueChanged(sender As Object, e As EventArgs) cuando la perdido su Handles Buscadorfecha.ValueChanged, este solo no puede es la fuente de tu problema ...

Veo que no aplicas mis consejos en la programación. De esta manera, no puedo te ayudar ...

...
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
sin imagen de perfil

porque no se buscan los datos tipo fecha de una base de datos de access

Publicado por Matias (7 intervenciones) el 06/03/2022 17:02:20
Hola. Te pido disculpas por no ocupar todos tus consejos, lo hice inconsientemente. Ahora aplique al codigo todos tus consejos pero sigue sin buscar. Si me podes ayudar nuevamente te lo agradezco.
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
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

porque no se buscan los datos tipo fecha de una base de datos de access

Publicado por Phil Rob (1554 intervenciones) el 06/03/2022 20:21:33
...

Has verificado si sería bien de escribir el Handles a la primera línea del procedimiento?

Si llamas el procedimiento de otra manera, es necesario de mostrar los códigos.

Miraré los mensajes mañana.

Buenas tardes
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
sin imagen de perfil
Val: 16
Ha aumentado su posición en 10 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

porque no se buscan los datos tipo fecha de una base de datos de access

Publicado por Horroroso (55 intervenciones) el 15/03/2022 15:54:35
Hola, buen día,

Intenta de esta forma:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Private Sub Buscadorfecha_ValueChanged(sender As Object, e As EventArgs) Handles Buscadorfecha.ValueChanged
        Dim strConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=basedatos.mdb;Persist Security Info =False"
        Dim FechaAEncontrar As Date = CDate(Buscadorfecha.Value)
 
        Using DB As New OleDb.OleDbConnection(strConnString)
            Try
                If DB.State = ConnectionState.Closed Then DB.Open()
                Dim cmd As New Data.OleDb.OleDbCommand()
                cmd.Connection = DB
                cmd.CommandText = "SELECT * FROM Ventas WHERE Fecha=@FechaAEncontrar"
                cmd.Parameters.AddWithValue("@FechaAEncontrar", FechaAEncontrar.ToOADate)
 
                Dim da As New Data.OleDb.OleDbDataAdapter()
                da.SelectCommand = cmd
 
                registros = New DataTable
 
                da.Fill(registros)
                da.Dispose()
 
                ' registros.TableName = "Ventas"    Probablamente no necesario aqui.
                ' No necesario de calcular la cuantidad de registros, si 0 ahora el DataGridview sera vacia.
                ' Pero es necesario de vaciar el DGV, si no, puede se llenar con los tamentos succesivos o dar error.
 
                DataGridView1.DataBindings.Clear()
                DataGridView1.DataSource = registros
 
            Catch ex As Exception
                Throw ex
            Finally
                DB.Close()
            End Try
        End Using
    End Sub

Me avisas si te funcionó.

Saludos!

-Horroroso-
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
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

porque no se buscan los datos tipo fecha de una base de datos de access

Publicado por Phil Rob (1554 intervenciones) el 15/03/2022 17:37:17
Hola,

Siempre existen muchas maneras de hacer el trabajo. Unas muy bien, otras menos, pero una solucione que funciona y que conoces muy bien, es un buena solucione.

Sobre el código que mandas, no sé si funciona bien a tu casa pero parece me fuente de problemas (no tengo mucho tiempo ahora y no lo he probado).

Dim FechaAEncontrar As Date = CDate(Buscadorfecha.Value)
Para que convertir con CDate cuanda Buscadorfecha.Value es ya una fecha ?
En mas, este línea en este procedimiento debería hacer problema cuando cambias el mese.

If DB.State = ConnectionState.Closed Then DB.Open()
Cuando trabajamos con DataAdapter, no preocupamos de abrir y cerrar la conexión, el DataAdapter hace el necesario.

Es bien de usar de los parámetros. Pero aquí, para qué convertir FechaAEncontrar que ya es de tipo Date.
En más, la consulta no debería funcionar bien si el tipo en la DB es DateTime.

Al final, no comprendo tu pregunta, piensas que el código enviado el 24/2 es demasiado simple? Es posible. He solamente intentado de responder à la pregunta inicial (ver mensaje de Matias del 16/2), tipo fecha en DB probablemente String, no pregunta de parámetros, ...
Pienso que es mejor de no desviarse de la pregunta inicial y de no complicar cuando no pedido.

Si puedo te ayudar mejor ... (tengo un poco tiempo mañana al inicial de la tarde)
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
sin imagen de perfil
Val: 16
Ha aumentado su posición en 10 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

porque no se buscan los datos tipo fecha de una base de datos de access

Publicado por Horroroso (55 intervenciones) el 15/03/2022 18:20:51
Hola,
Entiendo tu posicion de indicar posibles irregularidades del codigo, yo solo intente ayudar con su problema que dice que aun no ha podido hacer la consulta.

Si Buscadorfecha.Value es del tipo Date, lo desconozco, por lo que intento asegurarme de que si lo sea para poder utilizar ToOADate.

Entiendo que el DataAdapter realiza la apertura de la conexion, pero no veo de mas verificar que este abierta la conexion.

Ahora, solo queda que pruebe si le funciona o no, no estoy desacreditando el trabajo de nadie mas, ni diciendo que los codigos que ponen otras personas este mal o que sean simples.

Solo sugiero que lo pruebe.

Si le funciona, Bueno! y si no, pues se verá otra forma.

Saludos!

-Horroroso-
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
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

porque no se buscan los datos tipo fecha de una base de datos de access

Publicado por Phil Rob (1554 intervenciones) el 16/03/2022 15:32:38
Hola,

Acerca de la abierta del conexión, tu código hace una inutile. No veo utilidad a hacer 2 veces el trabajo.

Tal cual, no funciona al lugar donde el código enviado en febrero funciona.
Como pensaba, hay error cuando abro el DateTimePicker.

Por lo tanto, no voy hacer mas test.

Mis comentarios de ayer exprimen algunos detalles a corregir en tus códigos, no ves ninguna frase negativa.
Si quieres aprender, te propongo de corregir tu condigo con mis códigos como modelo.

Buenas tardes ...

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

porque no se buscan los datos tipo fecha de una base de datos de access

Publicado por Matias (7 intervenciones) el 21/04/2022 16:28:28
Hola. Gracias por tu ayuda en este tiempo. Me a servido mucho.
Tengo otra duda. Sabes como se crea el instalador de un programa hecho en visual studio 12 con una base de datos access??
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
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

porque no se buscan los datos tipo fecha de una base de datos de access

Publicado por Phil Rob (1554 intervenciones) el 21/04/2022 17:40:37
Hola Matias,

Deberías te preocupar de la herramienta para "package" de Microsoft. Si no existe en tu VisualStudio, debes la agregar. Mira el Instalador.pdf que he adjuntado, quizá podes hacer la instalación con copiar-pegar.

Installador

Espero que este te ayudará ...
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