none
Consulta DBF Group By RRS feed

  • Pregunta

  • Buenas tardes a todo el foro,

    El dia de hoy deseo lograr realizar una consulta en la base de datos de archivos DBF utilizando la sentencia Group By. Toda consulta es trabajada con el driver de Microsoft Visual Fox Pro, en mi primera consulta no tuve problemas en ser ejecutada,pero al ser modificada dichos campos la sentencia

     string var = "\"" + pedido + "%\"";
                string serservicios = "\"SER-SERVICIOS\"";
                string cadenaCnn = @"Provider=vfpoledb;Data Source=C:\TMPLAUDUS;Collating Sequence=general;";
                string consultaPedido = "SELECT Orders.fecha AS fecha_pedido, Clientes.idcliente AS idcliente, Clientes.nombre AS nombre, Clientes.rut AS rut, Clientes.dígitoverificación AS rut_dv, Clientes.direcciónfacturación AS direccion, Clientes.dte_email AS dte_email, Clientes.email AS email, Clientes.paísfacturación AS pais, Clientes.región AS region, Clientes.comunafacturación AS comuna, Clientes.ciudadfacturación AS ciudad, Clientes.teléfono AS telefono, Clientes.cpfacturación AS cpfacturacion, Orders.idorder AS idpedido, Currencies.nombre AS moneda, Currencies.idcurrency AS idcurrency FROM empresa!orders INNER JOIN empresa!detalleorders ON Detalleorders.idorder = Orders.idorder INNER JOIN empresa!currencies ON Currencies.idcurrency = Detalleorders.idoriginalcurrency INNER JOIN empresa!clientes ON Orders.idcliente = Clientes.idcliente INNER JOIN empresa!productos ON Detalleorders.idproducto = Productos.idproducto WHERE (Productos.nombre = " + serservicios + " AND Orders.fecha >= DATE()-730) AND TRANSFORM(Orders.idorder) LIKE ( " + var + " ) GROUP BY Orders.idcliente, Orders.fecha, Clientes.idcliente,Clientes.nombre,Clientes.rut, Clientes.dígitoverificación, Clientes.direcciónfacturación, Clientes.dte_email, Clientes.email, Clientes.región, Clientes.comunafacturación, Clientes.ciudadfacturación, Clientes.teléfono, Orders.idorder, Currencies.nombre, Currencies.idcurrency";
    
    
                using (System.Data.OleDb.OleDbConnection cnn = new System.Data.OleDb.OleDbConnection(cadenaCnn))
                {
                    cnn.Open();
                    System.Data.OleDb.OleDbDataAdapter da = new System.Data.OleDb.OleDbDataAdapter(consultaPedido, cnn);
                    DataSet ds = new DataSet();
                    da.Fill(ds);
                    return ds;
                }

    Al ejecutarse la consulta el error es el siguiente:

    System.Data.OleDb.OleDbException: SQL: GROUP BY clause is missing or invalid.
       en System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)
       en System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
       en System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
       en System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
       en System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
       en System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior behavior)
       en System.Data.OleDb.OleDbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
       en System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
       en System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)


    lunes, 11 de noviembre de 2019 16:26

Respuestas

Todas las respuestas

  • hola

    estas seguro que el problema es del group by y no del resultado de concatenar valor en un string para armar la consulta

    porque no pruebas con menos campos y vas aumentando para ver como resulta

    string consultaPedido = "SELECT Orders.fecha AS fecha_pedido, Clientes.idcliente AS idcliente, 
    			FROM empresa!orders 
    			INNER JOIN empresa!clientes ON Orders.idcliente = Clientes.idcliente 
    			GROUP BY Orders.idcliente, Orders.fecha, Clientes.idcliente";

    ve agregando columnas de a poco hasta ver porque falla

    Estas seguro que el TRANSFORM funciona ?

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 11 de noviembre de 2019 17:50
  • Claro realice el ejercicio de ir consultando paso a paso sin el Group By una vez adjuntado a mi consulta, esta se cae por defecto
    lunes, 11 de noviembre de 2019 18:56
  • pero no crees toda la consulta y al final agregas el group by

    ve armando la query con el group by ya integrado

    Ademas te pusiste a pensar si es necesario? porque no veo que uses ninguna funcion de agregacion como ser el MIN(), MAX(), COUNT(), etc

    quizas podrias usar el DISTINCT


    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 11 de noviembre de 2019 19:09