Erro na quebra da consulta - order by

Ola Suporte/Bugs

Tenho uma aplicação Consulta onde tenho quebra por ordem de vencimento e no SQL coloco : SELECT codigo, TIPO, DUP, EMISSAO, VALOR, JUROS, DESCONTO, VENC, PAG, CAIXA, CLIENTE, FLAG_CANC, N_NUMERO, FIXO, MES_REF_CX, ANO, PAGO, OBSERVACAO, RETENCAO, TxCobranca, txBanco, SCPC, LancaCaixa, Carteira, EmCartorio, ISS, unidade FROM DUP order by venc

O erro acontece quando seleciono na consulta a quebra por vencimento.Se eu tirar o order by venc do sql funciona normal, porem se coloco quebra por venc da erro na consulta.

Essa consulta nem sempre é usado com quebra e por isso coloco a quebra dinamica.
Normalmente ela é usada sem quebra e funciona normal.Na consulta inicial preciso da order por venc, pois no BD a ordem natural é por id.

Abaixo coloco o erro no modo debug e esta ordenando o venc duplicado o que a consulta não permite.

Erro ao acessar o banco de dados
SQLState: 42000 Error Code: 169 Message: [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]A column has been specified more than once in the order by list. Columns in the order by list must be unique. SQLState: 42000 Error Code: 169 Message: [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]A column has been specified more than once in the order by list. Columns in the order by list must be unique.
SELECT TIPO, DUP, CLIENTE, convert(char(23),EMISSAO,121), convert(char(23),VENC,121), VALOR, MES_REF_CX, ANO, FLAG_CANC, CAIXA, unidade, FIXO, codigo, JUROS, DESCONTO, convert(char(23),PAG,121), N_NUMERO, RETENCAO, TxCobranca, txBanco, SCPC, Carteira, EmCartorio, ISS from DUP where FLAG_CANC = ‘’ AND SCPC =’’ AND EmCartorio = ‘’ and pag is null order by VENC asc, venc asc

Uso SQL Server e window 10 scriptcase 9.4.022

Ola

Já aconteceu comigo. Como não queria perder tempo, criei uma view com a query usando o order by e resolveu meu problema. Pode não ter sido a solução mais “elegante” mas funcionou !

Boa sorte!

Olá, @Moacir.Oliveira

Agradecemos o seu contato.

Eu realizei diversos procedimentos seguindo como base a descrição do problema relatado. Porém, não obtive sucesso em replicar o comportamento em meu ambiente.

Realizei testes inserindo dois tipos diferentes de colunas: DATA e INT. Ao realizar order by no SQL,
adicionando a mesma coluna como campo da quebra dinâmica, foi observado que a query montada pelo Scriptcase não duplica o order by, mas adiciona a variável escolhida na quebra. No meu exemplo a quebra foi feita por ano, ao usar campo tipo data. Já em campo do tipo inteiro a query apresenta apenas um order by.

Testei cenários com diferentes drivers (Native SRV, ODBC 13, ODBC 17) e todos funcionaram corretamente.

Estou anexando duas imagens que mostram os resultados dos testes com o mesmo driver mencionado por você:

Seria possível que você fornecesse mais informações sobre como eu posso replicar este comportamento?

Ola Roberto

Desde de já agradeço pela rapidez no problema.

Criei um video tentando exemplificar o problema; que envio o link no youtube e lhe enviei email.
https://www.youtube.com/watch?v=iI3ZEisuITA

Moacir de Oliveira

@Moacir.Oliveira

Pelo vídeo que você enviou, acredito que o problema esteja na utilização de palavra reservada pelo BD no seu SQL statement.

Peço que se possível refaça o teste, realizando o order by e a quebra por um campo diferente.

Atenciosamente,

Roberto Ferraz
Bug Tracker Team

Ola

Qual palavra reservada ?
Coloquei por ordem de cliente no sql da consulta e o problema permanace.
Qualquer campo que coloco no order by no sql da consulta, esse campo da erro na quebra e resumo.

Atenciosamente
Moacir de Oliveira