[phpBB Debug] PHP Warning: in file [ROOT]/phpbb/session.php on line 594: sizeof(): Parameter must be an array or an object that implements Countable
[phpBB Debug] PHP Warning: in file [ROOT]/phpbb/session.php on line 650: sizeof(): Parameter must be an array or an object that implements Countable
[phpBB Debug] PHP Warning: in file [ROOT]/phpbb/session.php on line 1110: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3903)
[phpBB Debug] PHP Warning: in file [ROOT]/phpbb/session.php on line 1110: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3903)
[phpBB Debug] PHP Warning: in file [ROOT]/phpbb/session.php on line 1110: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3903)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 5277: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3903)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 5277: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3903)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 5277: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3903)
Fórum Xmaker • Erro no Group By
Página 1 de 1

Erro no Group By

Enviado: Junho 16th, 2012, 10:34 am
por Softham
Caros amigos do forum, estou tendo problemas no Group By na seguinte clausula sql:

DPedidos.FiltroExtra.Clear;
DPedidos.ChaveIndice := '';
DPedidos.Filtro.Clear;
DPedidos.SQLPrincipal.Clear;
DPedidos.SQLPrincipal.Add('Select PED_INDUSTRIA AS FOR_CODIGO, Sum(Ped_TOTBRUTO) as TOT_BRUTO, Sum(PED_TOTLIQ) AS TOT_LIQ,');
DPedidos.SqlPrincipal.Add(' (Select FOR_NOME from Fornecedores Where Pedidos.Ped_Industria = Fornecedores.FOR_CODIGO) as FOR_NOME,');
DPedidos.SqlPrincipal.Add(' (Select CLI_NOME from Clientes Where Pedidos.Ped_cliente = Clientes.Cli_codigo) as CLI_NOME ');
DPedidos.SqlPrincipal.Add('From Pedidos');
DPedidos.SQLPrincipal.Add('Where Pedidos.Ped_data Between '+ chr(39)+DataSql(xDateEdit1.DateValue)+Chr(39) + ' and +Chr(39)+Datasql(xDateEdit2.DateValue)+Chr(39));
DPedidos.SqlPrincipal.Add(' and Pedidos.Ped_Situacao <> '+Chr(39)+'C'+Chr(39));
DPedidos.SqlPrincipal.Add(' and Pedidos.Ped_cliente = '+InttoStr(Trunc(xNumedit1.Value)));
DPedidos.SQLPrincipal.Add('Group By PED_INDUSTRIA');
DPedidos.SQLPrincipal.Add('');
DPedidos.AtualizaSql(False);
Parametros(DPedidos);
DPedidos.Open;
frDBDataSet.DataSet := DPedidos;


O erro é o seguinte: Invalid expression in the select list (not contained in either in aggregate function or de Group By clause)

Onde será que está o erro???

Desde ja agradeço.

Re: Erro no Group By

Enviado: Junho 19th, 2012, 12:09 pm
por Gilberto
Olá,
Você não está dando um alias(apelido) para PED_INDUSTRIA AS FOR_CODIGO
e usando PED_INDUSTRIA no group by.

Não seria isso ?

Re: Erro no Group By

Enviado: Junho 19th, 2012, 1:23 pm
por carlinhos.info
DPedidos.SQLPrincipal.Add('Group By PED_INDUSTRIA');
troque por
DPedidos.SQLPrincipal.Add('Group By 1);

Onde o número (1) é a posição do Select.
Obs. Caso tenha que mencionar outros campos no Group By é só substituir os nomes dos campos pelo número da posição referente a ele no select.

Re: Erro no Group By

Enviado: Junho 19th, 2012, 4:24 pm
por Gilberto
Para agrupar registro em SQL utilize o comando "Group By", exemplo:

Select VENDAS.CLI_CODIGO AS CLI_CODIGO, SUM(TOTAL) AS
TOTAL_GERAL FROM VENDAS GROUP BY CLI_CODIGO

Esse tipo de SQL pode ser utilizado em relatórios/gráficos, na definição do
relatório clique no botão: SQL e digite a instrução desejada, o exemplo acima
totaliza o campo "Total" por Cliente, o projetista tem a liberdade de criar as
instruções em SQL.

Re: Erro no Group By

Enviado: Junho 20th, 2012, 9:32 am
por Leão
Cara, aconselho desenvolver sql na consulta do próprio Xmaker, lá você pode testar
passo a passo, depois é só chamar no formulário.

Obrigado,
Leão