Visual Basic.NET - Rutina solo me funciona fecha del dia

 
Vista:
sin imagen de perfil

Rutina solo me funciona fecha del dia

Publicado por SandraP (12 intervenciones) el 25/08/2017 15:13:28
Hola chicos, estoy programando un formulario donde se van a ver las facturas a partir de un
datetimepicker, me esta funcionando con la fecha del dia, no asi cunado sucede el evento de
cambiar fecha ( fecha cambiada), necesito ayuda please...

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Imports MySql.Data
Imports MySql.Data.Types
Imports MySql.Data.MySqlClient
Imports System.Globalization
Public Class VerFactura
    Private fechac As String
 
    Private Sub VerFactura_Load(sender As Object, e As EventArgs) Handles MyBase.Load
 
        fechac = Format(fecha_consulta.Value.Date, "yyyy-MM-dd")
        Dim conexion As MySqlConnection = New MySqlConnection
        Dim comando As MySqlCommand = New MySqlCommand
        comando.Connection = conexion
 
        Try
            conexion.ConnectionString = "Server=localhost;Port=3306;Database=Ventas;Uid=root;Pwd=1234;"
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
 
        comando.CommandText = "SELECT p_fecha as Fecha, p_hora AS Hora, p_nrot as Factura, estatus AS Estatus,
                               SUM(p_monto) AS Total FROM tbl_Facturas 
                               WHERE p_fecha = '" & fechac & "'
                               GROUP by p_fecha, p_nrot"
        Dim dt As DataTable = New DataTable
        Dim daa As MySqlDataAdapter = New MySqlDataAdapter(comando)
 
        daa.Fill(dt)
 
        DataGridViewX1.DataSource = dt
        DataGridViewX1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
        DataGridViewX1.DefaultCellStyle.Format = "N2"
        Me.DataGridViewX1.Columns("fecha").DefaultCellStyle.Format = "d"
        Dim i As Integer
 
        For i = 0 To DataGridViewX1.Columns.Count - 1
            DataGridViewX1.Columns.Item(i).SortMode = DataGridViewColumnSortMode.Programmatic
        Next i
    End Sub
 
    Private Sub fecha_consulta_ValueChanged(sender As Object, e As EventArgs) Handles fecha_consulta.ValueChanged
        fechac = Format(fecha_consulta.Value.Date, "yyyy-MM-dd")
    End Sub
 
    Private Sub Regresar_Click(sender As Object, e As EventArgs) Handles ButtonX1.Click
        desconectar()
        Me.Close()
    End Sub
End Class
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 Diego
Val: 605
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Rutina solo me funciona fecha del dia

Publicado por Diego (190 intervenciones) el 25/08/2017 19:13:13
Hola Sandra, yo creo que tenes un error al momento de formatear la fecha, ¿como queda FechaC? y ¿como almacena mySql, según tu configuración?

¿Probaste pasandole una consulta con un literal en el lugar de la fecha, a ver que respuesta obtenes?

Contanos.
Saludos y +Bytes.
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 Wilfredo Patricio Castillo
Val: 1.239
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Rutina solo me funciona fecha del dia

Publicado por Wilfredo Patricio Castillo (720 intervenciones) el 25/08/2017 19:15:36
Hola.

Sin ánimo de desalentarte, sino mas bien con la idea que mejores, pero el código es muy deficiente, tienes que echarle mas ganas.

1.- Pones un try catch, solo donde asignas la cadena de conexión mas no donde abres la cadena, así que ese bloque no te va a servir de mucho si es que tienes un problema al abrir, la conexión, luego si hay un error de sintaxis o mal el nombre de la tabla, al hacer la consulta tendrás una excepción, que tampoco está controlando ese try.

2.- Las fechas se deben tratar como tal, como fechas y no como cadenas que no es lo mismo.
3.- Y lo mas grave de tu problema, es que asignas una fecha en el load del formulario, eso solo se ejecuta al cargar, y listo, tienes un evento fecha_consulta_Valuechanged, donde nuevamente asignas la fecha a la variable fechac y listo allí queda, nada mas.
¿Cómo pretendes que te haga un filtro si no veo por ningún lado que ejecutes tu consulta con esa nueva fecha?.

Recomendación:

Todo ese código del Load, muévelo a un método privado si quieres y si quieres que al cagar te muestre ya los datos, lo invocas en el load, y al cambiar la fecha, nuevamente lo invocas con la nueva fecha, solo de esa manera te va a funcionar.

Espero te sirva y no lo tomes a mal las recomendaciones.

Saludos cordiales.
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
Imágen de perfil de Edward
Val: 392
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Rutina solo me funciona fecha del dia

Publicado por Edward (146 intervenciones) el 29/08/2017 00:34:43
Buen día para todos,

SandraP, te comparto este link que puede ser de ayuda para lo que necesitas.


https://aprendamosdeprogramacion.wordpress.com/2016/12/03/buscar-o-filtrar-por-rangos-de-fechas-en-las-bases-de-datos-sqlite-mysql-y-access-en-vb-net/


Espero haber sido de ayuda.

Que tengan buen día,

El conocimiento siempre debe ser compartido, para que entre todos aprendamos un poco mas...

Mas ejemplos acá...

https://aprendamosdeprogramacion.wordpress.com/
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