none
Consulta solo por fecha inicial y final a una tabla de base de datos y guardar los datos mayorizados sumados a otra tabla saldos

    Pregunta

  • Buen día a todos :

    Mi pregunta es la siguiente: necesito consular  a una base de datos sin mostrar en ningún evento como el datagridview  ni cajas de texto solo que al buscar  por las fechas al presionar y dar click en el botón me sume las dos campos debe y haber se guarde en otra tabla saldos agrupado por código de la cuenta

     Try
                Using cnn As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\SISTEMA ENLAZADO\REPORTES.accdb")

                    Dim cmd As OleDb.OleDbCommand = conexion.CreateCommand()

                    cmd.CommandText =
                    " SELECT (C_Detalleasientos.cod_cuenta) AS Código , C_Detalleasientos.nom_cuenta AS Nombre, sum(C_Detalleasientos.hab_asiento) AS Debe, sum(C_Detalleasientos.hab_asiento) AS  Haber, C_Detalleasientos.fech_asiento as Fecha " & _
                    " FROM C_Detalleasientos" & _
                    " GROUP BY C_Detalleasientos.cod_cuenta, C_Detalleasientos.nom_cuenta,  C_Detalleasientos.fech_asiento" & _
                    " having C_Detalleasientos.fech_asiento BETWEEN @fechaIni AND @fechaFin "

                    cmd.Parameters.AddWithValue("@fechaIni", DateTimePicker1.Value.Date)
                    cmd.Parameters.AddWithValue("@fechaFin", DateTimePicker2.Value.Date)

                    Dim da As New OleDb.OleDbDataAdapter(cmd)

                    Dim dt As New DataTable()

                    da.Fill(dt)

                End Using

            Catch ex As Exception
                MessageBox.Show(ex.Message)

            End Try

    La verdad no se como hacerlo si alguien me puede ayudar con esto le agradecería mucho 

    domingo, 29 de enero de 2017 5:30

Respuestas

  • olga ch,

    Debes escribir una consulta sql conteniendo una instrucción INSERT INTO y ejecutarla en el contexto de la conexión actual mediante el método ExecuteNonQuery().

    OleDbCommand.ExecuteNonQuery

    - Consulta sql

    INSERT INTO dbo.NombreTabla (Cuenta, Saldo)
    SELECT 
        d.cod_cuenta, SUM(d.hab_asiento + d.hab_asiento)
    FROM 
        C_Detalleasientos d
    WHERE
        (d.fech_asiento BETWEEN @fechaIni AND @fechaFin)
    GROUP BY 
        d.cod_cuenta;
    

    - Ejecutar consulta

    Try
    	Using cnn As New OleDb.OleDbConnection("Provider=...")
    
    		Dim ConsultaSql As String = "INSERT INTO ..."
    
    		Dim cmd As New OleDb.OleDbCommand(ConsultaSql, cnn)
    
    		cmd.Parameters.AddWithValue("@fechaIni", DateTimePicker1.Value.Date)
    		cmd.Parameters.AddWithValue("@fechaFin", DateTimePicker2.Value.Date)
    
    		cnn.Open()
    
    		'Ejecuta la consulta sql en el contexto de la conexión actual
    		cmd.ExecuteNonQuery()
    	End Using
    
    Catch ex As Exception
    	MessageBox.Show(ex.Message)
    End Try


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta olga ch domingo, 29 de enero de 2017 13:25
    domingo, 29 de enero de 2017 6:09

Todas las respuestas

  • olga ch,

    Debes escribir una consulta sql conteniendo una instrucción INSERT INTO y ejecutarla en el contexto de la conexión actual mediante el método ExecuteNonQuery().

    OleDbCommand.ExecuteNonQuery

    - Consulta sql

    INSERT INTO dbo.NombreTabla (Cuenta, Saldo)
    SELECT 
        d.cod_cuenta, SUM(d.hab_asiento + d.hab_asiento)
    FROM 
        C_Detalleasientos d
    WHERE
        (d.fech_asiento BETWEEN @fechaIni AND @fechaFin)
    GROUP BY 
        d.cod_cuenta;
    

    - Ejecutar consulta

    Try
    	Using cnn As New OleDb.OleDbConnection("Provider=...")
    
    		Dim ConsultaSql As String = "INSERT INTO ..."
    
    		Dim cmd As New OleDb.OleDbCommand(ConsultaSql, cnn)
    
    		cmd.Parameters.AddWithValue("@fechaIni", DateTimePicker1.Value.Date)
    		cmd.Parameters.AddWithValue("@fechaFin", DateTimePicker2.Value.Date)
    
    		cnn.Open()
    
    		'Ejecuta la consulta sql en el contexto de la conexión actual
    		cmd.ExecuteNonQuery()
    	End Using
    
    Catch ex As Exception
    	MessageBox.Show(ex.Message)
    End Try


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta olga ch domingo, 29 de enero de 2017 13:25
    domingo, 29 de enero de 2017 6:09
  • Muchas gracias  ya lo voy a probar
    • Marcado como respuesta olga ch domingo, 29 de enero de 2017 13:51
    • Desmarcado como respuesta olga ch domingo, 29 de enero de 2017 13:52
    domingo, 29 de enero de 2017 13:26
  •  me sirvio muchisimo para entender algunas cosas gracias

     Private Sub mayorizar()
            Try
                Using cnn As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\SISTEMA ENLAZADO\REPORTES.accdb")

                   Dim cmd As OleDb.OleDbCommand = conexion.CreateCommand()
                    cmd.CommandText =
                  (" INSERT INTO C_Mayor " _
                & "SELECT (C_Detalleasientos.cod_cuenta)  , C_Detalleasientos.nom_cuenta  , C_Detalleasientos.fech_asiento, (C_Detalleasientos.deb_asiento) , (C_Detalleasientos.hab_asiento)" _
                & "FROM  C_Detalleasientos") _
                 & " GROUP BY C_Detalleasientos.cod_cuenta, C_Detalleasientos.nom_cuenta,  C_Detalleasientos.fech_asiento,(C_Detalleasientos.deb_asiento) , (C_Detalleasientos.hab_asiento)" _
                  & " having C_Detalleasientos.fech_asiento BETWEEN @fechaIni AND @fechaFin "

                    cmd.Parameters.AddWithValue("@fechaIni", DateTimePicker1.Value.Date)
                    cmd.Parameters.AddWithValue("@fechaFin", DateTimePicker2.Value.Date)
                    Dim da As New OleDb.OleDbDataAdapter(cmd)
                    Dim dt As New DataTable()
                    da.Fill(dt)
                End Using
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try

      End Sub

    domingo, 29 de enero de 2017 22:04