none
sumar dependiendo del un monto de fechas diferentes RRS feed

  • Pregunta

  • tengo varios registro en una tabla, dentro de esa tabla hay dos columnas que son las que voy a necesitar para esta duda, una es la columna fecha y la otra monto. lo que quiero es que sume desde la fecha por ejemplo:

    01/03/2017 hasta 01/06/2017

    y me de el total en un textbox

    martes, 7 de marzo de 2017 23:17

Respuestas

  • Hola Luiggigarcia

    Entiendo a lo que te refieres he pasado por esto pero no soy tan buen programador como William pero si entiendo algunas cosas;Soy Desarrollar Freelancer, quizas necesitas un ejemplo un poco mas concreto de donde colocar eso. 

    Puedes quizas crear 2 datetimepicker en tu formulario un botón de buscar o filtro como desees ponerle algo asi:


    y a lo que se refiere Willams Morales poner lo que te indica dentro del botón Filtro

    Private Sub btnFiltro_Click(sender As Object, e As EventArgs) Handles btnFiltro.Click

    Try Using cn As New SqlConnection("Cadena de conexión") Dim ConsultaSQL As String = "SELECT SUM(Monto) FROM NombreTabla WHERE Fecha BETWEEN @FechaIni AND @FechaFin)" Dim cmd As New SqlCommand(ConsultaSQL, cn) 'Agregar parámetros a la colección Parameters cmd.Parameters.AddWithValue("@FechaIni", DateTimePicker1.Value) cmd.Parameters.AddWithValue("@FechaFin", DateTimePicker2.Value) 'Abrir conexión cn.Open() 'Ejecutar consulta y recuperar valor txtTotalMonto.Text = Convert.ToString(cmd.ExecuteScalar) End Using Catch ex As Exception MessageBox.Show(ex.Message) End Try

    End Sub

    Saludos



    • Editado Javier Roque miércoles, 8 de marzo de 2017 3:30
    • Propuesto como respuesta Javier Roque miércoles, 8 de marzo de 2017 12:18
    • Marcado como respuesta Luiggigarcia miércoles, 8 de marzo de 2017 16:48
    miércoles, 8 de marzo de 2017 3:24

Todas las respuestas

  • Luiggigarcia,

    ¿Te refieres a una tabla de base de datos?

    De ser así no tienes mas que utilizar la función SUM() sobre la columna [monto] para todas las filas que resulten de la evaluación del filtro.

    SELECT SUM(Monto) FROM NombreTabla WHERE Fecha BETWEEN @FechaIni AND @FechaFin

    Ejecutas la consulta contra la base de datos (método ExecuteScalar()) y recuperas el valor escalar que produce la consulta de selección.

    cmd.Parameters.AddWithValue("@FechaIni", DateTimePicker1.Value)
    cmd.Parameters.AddWithValue("@FechaFin", DateTimePicker2.Value)
    
    cn.Open()
    txtTotalMonto.Text = Convert.ToString(cmd.ExecuteScalar)


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    martes, 7 de marzo de 2017 23:28
  • donde y como colocaria este codigo, ya que lo pegue en mi vb.net y me dice "se esperaba fin de instrucciones" subrayado en azul

    SELECT SUM(Monto) FROM NombreTabla WHERE Fecha BETWEEN @FechaIni AND @FechaFin

     
    martes, 7 de marzo de 2017 23:33
  • Luiggigarcia,

    ¿Conoces ADO .NET?, no comprendo como es que puedes iniciar un proyecto de software cuando no cuentas con el mínimo de conocimiento requerido para resolver problemas de acceso a datos, te recomiendo mayor seriedad y respeto al trabajo que desarrollas -incluso si aún eres estudiante-

    Try
    	Using cn As New SqlConnection("Cadena de conexión")
    		Dim ConsultaSQL As String = "SELECT SUM(Monto) FROM NombreTabla 
    						WHERE Fecha BETWEEN @FechaIni AND @FechaFin)"
    		Dim cmd As New SqlCommand(ConsultaSQL, cn)
    
    		'Agregar parámetros a la colección Parameters
    		cmd.Parameters.AddWithValue("@FechaIni", DateTimePicker1.Value)
    		cmd.Parameters.AddWithValue("@FechaFin", DateTimePicker2.Value)
    
    		'Abrir conexión
    		cn.Open()
    
    		'Ejecutar consulta y recuperar valor
    		txtTotalMonto.Text = Convert.ToString(cmd.ExecuteScalar)
    	End Using
    Catch ex As Exception
    	MessageBox.Show(ex.Message)
    End Try
    

    Lógicamente debes escribir la cadena de conexión adecuada según el origen de datos al que te conectas y actualizar el nombre de los objetos de base de datos de la consulta sql, la idea es analizar el código y ajustarlo a tus necesidades, evita el copy-paste "a ojo cerrado" que a nada bueno te llevará.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    martes, 7 de marzo de 2017 23:47
  • amigo, recuerda que no todos los que escribimos en este foro somos programadores profesionales como tu. al yo escribir en el foro es para aprender cosas que no entiendo de programación ya que me interesa saber mas y saber las soluciones al respecto.  no entendo para que es el foro si no puedo escribir hasta la mas tonta duda, la idea es escribir y saber lo que buscaba. COLOCATE EN EL LUGAR DEL OTRO. FIN.
    miércoles, 8 de marzo de 2017 0:04
  • Hola Luiggigarcia

    Entiendo a lo que te refieres he pasado por esto pero no soy tan buen programador como William pero si entiendo algunas cosas;Soy Desarrollar Freelancer, quizas necesitas un ejemplo un poco mas concreto de donde colocar eso. 

    Puedes quizas crear 2 datetimepicker en tu formulario un botón de buscar o filtro como desees ponerle algo asi:


    y a lo que se refiere Willams Morales poner lo que te indica dentro del botón Filtro

    Private Sub btnFiltro_Click(sender As Object, e As EventArgs) Handles btnFiltro.Click

    Try Using cn As New SqlConnection("Cadena de conexión") Dim ConsultaSQL As String = "SELECT SUM(Monto) FROM NombreTabla WHERE Fecha BETWEEN @FechaIni AND @FechaFin)" Dim cmd As New SqlCommand(ConsultaSQL, cn) 'Agregar parámetros a la colección Parameters cmd.Parameters.AddWithValue("@FechaIni", DateTimePicker1.Value) cmd.Parameters.AddWithValue("@FechaFin", DateTimePicker2.Value) 'Abrir conexión cn.Open() 'Ejecutar consulta y recuperar valor txtTotalMonto.Text = Convert.ToString(cmd.ExecuteScalar) End Using Catch ex As Exception MessageBox.Show(ex.Message) End Try

    End Sub

    Saludos



    • Editado Javier Roque miércoles, 8 de marzo de 2017 3:30
    • Propuesto como respuesta Javier Roque miércoles, 8 de marzo de 2017 12:18
    • Marcado como respuesta Luiggigarcia miércoles, 8 de marzo de 2017 16:48
    miércoles, 8 de marzo de 2017 3:24