none
Problema en consulta de access RRS feed

  • Pregunta

  • Buenos dias amigos

    Tenga una consulta en access el cual se ejecuta sin problemas, pero al querer ejecutarlo en Vb.net me muestra el siguiente mensaje de error.

    "Error: Microsoft database engine - Tou tried to execute a query that does not include the specified expression '[Quantity]-[UsedLic]' as part of an aggregate function."

    Este es mi codigo

     Public Function getSoftRepSum() As DataTable
            Try
                OleDs = New DataSet
                querysql = "SELECT Software.Product, Sum(Software.Quantity) AS Quantity, Count(Soft_Revision.Sf_assetid) AS UsedLic, [Quantity]-[UsedLic] AS Compliance " & _
                            "FROM Software LEFT JOIN Soft_Revision ON Software.asset_id = Soft_Revision.Sf_assetid " & _
                            "GROUP BY Software.Product;"
    
                'query process
                OleCmd = New OleDb.OleDbCommand(querysql)
                OleCmd.Connection = OleConn
                OleCmd.CommandType = CommandType.Text
                OleAdap = New OleDb.OleDbDataAdapter(OleCmd)
                OleAdap.SelectCommand.CommandTimeout = 300
                'fill dataset
                OleAdap.Fill(OleDs, "Software")
                'close connection
                OleConn.Close()
            Catch ex As Exception
                MsgBox("Error :" & ex.Source & " - " & ex.Message & " - " & ex.StackTrace, MsgBoxStyle.Critical)
            Finally
                OleConn.Close()
            End Try
            Return OleDs.Tables("Software")
        End Function

    ya he agregado la function [Quantity]-[UsedLic] dentro de la clausula de group by del sql de access pero me sigue marcando error.

    Les agradezco algun comentario o sugerencia que tengan.

    Saludos

    viernes, 2 de octubre de 2015 14:07

Respuestas

  • también puedes realizar tu consulta asi

    SELECT Product, Quantity, UsedLic, [Quantity] - [UsedLic] As Compliance
    FROM
    (
    SELECT Software.Product, Sum(Software.Quantity) AS Quantity, Count(Soft_Revision.Sf_assetid) AS UsedLic
    FROM Software LEFT JOIN Soft_Revision ON Software.asset_id =Soft_Revision.Sf_assetid 
    GROUP BY Software.Product)


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos


    probaste la ultima consulta que puse?

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos


    • Editado Sergio Parra viernes, 2 de octubre de 2015 15:10
    • Marcado como respuesta FcoyClau viernes, 2 de octubre de 2015 15:17
    viernes, 2 de octubre de 2015 15:09

Todas las respuestas

  • puedes escribirnos únicamente la consulta SQL que quieres ejecutar?

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    viernes, 2 de octubre de 2015 14:24
  • esta es la consulta

    SELECT Software.Product, Sum(Software.Quantity) AS Quantity, Count(Soft_Revision.Sf_assetid) AS UsedLic, [Quantity]-[UsedLic] AS Compliance
    FROM Software LEFT JOIN Soft_Revision ON Software.asset_id =Soft_Revision.Sf_assetid 
    GROUP BY Software.Product;

    viernes, 2 de octubre de 2015 14:27
  • has probado añadir lo siguiente en la clausula Group By??

    GROUP BY Software.Product,[Quantity] - [UsedLic];


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos


    viernes, 2 de octubre de 2015 14:55
  • o inclusive

    GROUP BY Software.Product, [Compliance]


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    viernes, 2 de octubre de 2015 14:58
  • también puedes realizar tu consulta asi

    SELECT Product, Quantity, UsedLic, [Quantity] - [UsedLic] As Compliance
    FROM
    (
    SELECT Software.Product, Sum(Software.Quantity) AS Quantity, Count(Soft_Revision.Sf_assetid) AS UsedLic
    FROM Software LEFT JOIN Soft_Revision ON Software.asset_id =Soft_Revision.Sf_assetid 
    GROUP BY Software.Product)


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    viernes, 2 de octubre de 2015 15:02
  • Se lo agregue pero me sigue marcando error, te envio la imagen.

    viernes, 2 de octubre de 2015 15:04
  • Igual me sigue marcando error

    viernes, 2 de octubre de 2015 15:07
  • también puedes realizar tu consulta asi

    SELECT Product, Quantity, UsedLic, [Quantity] - [UsedLic] As Compliance
    FROM
    (
    SELECT Software.Product, Sum(Software.Quantity) AS Quantity, Count(Soft_Revision.Sf_assetid) AS UsedLic
    FROM Software LEFT JOIN Soft_Revision ON Software.asset_id =Soft_Revision.Sf_assetid 
    GROUP BY Software.Product)


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos


    probaste la ultima consulta que puse?

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos


    • Editado Sergio Parra viernes, 2 de octubre de 2015 15:10
    • Marcado como respuesta FcoyClau viernes, 2 de octubre de 2015 15:17
    viernes, 2 de octubre de 2015 15:09
  • Funciono, me puedes explicar un poco del problema de la consulta anterior?
    viernes, 2 de octubre de 2015 15:17
  • El problema es que el motor access creo, dentro de mis limitados conocimientos, no sabe resolver en la misma consulta, en el mismo nivel de SELECT, los campos [Quantity] y [UsedLic] que son Alias de unas operaciones de agregado. Entonces para solventarlo creamos otro nivel de SELECT. Espero me haya explicado.

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    viernes, 2 de octubre de 2015 15:22
  • Dentro de lo que mencionas, estas en lo correcto , ya que access me da muchos dolores de cabeza al realizar consultas desde vb.net
    lunes, 5 de octubre de 2015 15:46