Estava com este mesmo problema para ordenar um campo criado em formulário vi que o tópico é antigo e o problema ainda é atual, mas consegui resolver, não da melhor maneira, mas vamos lá
Temos a tabela que é lida pelo formulário vamos chamar de produto nela você tem o ID do cliente que compra este produto, e você quer ordenar o formulário de produto pelo cpf do cliente, ai você criou um campo no scriptcase que se chama cpf e nele você colocou um lookup pegando o valor do cpf pela ID do cliente da tabela produto.
O formulário lê a tabela produto, e temos essa estrutura de tabelas
tb_produto( id | id_produto | id_cliente )
tb_cliente( id | cpf )
O problema é que não temos a opção de fazer um JOIN em aplicação de formulário que resolveria nossa ordenação fazendo um JOIN com a tabela cliente e ordenando pelo CPF dele, mas podemos fazer um JOIN no ORDER BY, para que ele ordene os produtos conforme o CPF do cliente
Na aplicação de formulário temos duas caixas de texto uma para o WHERE e outra para o ORDER BY, vamos colocar no order BY o seguinte código, uso banco MYSQL, mas deve ter outras funções equivalentes se você usa outro BD.
FIND_IN_SET(
id_produto,
(SELECT
GROUP_CONCAT(id_produto ORDER BY tb_cliente.cpf ASC)
FROM
tb_produto
LEFT JOIN tb_cliente ON tb_cliente.id = tb_produto.id_cliente
)
A função GROUP_CONCAT irá trazer os códigos do produtos separados por vírgula ex: (1,2,3,4,5,6), o ORDER BY dentro do GROUP_CONCAT irá ordenar os produtos conforme o cpf dos clientes ex: (1,5,3,2,6,4), então o FIND_IN_SET irá retornar a posição do id_produto conforme a ordem na nossa lista.
Agora temos um problema, o scriptcase vai retirar a palavra ORDER BY que colocamos na caixa de texto no momento em que gerar o código, pois para um ORDER BY comum não é necessário escrever ORDER BY id, você escreve apenas id, pois o scriptcase já coloca o ORDER BY pra você e então ele retira a palavra ORDER BY para que você não erre, mas nesse caso precisamos da palavra ORDER BY ali e ai meus amigos que entra a tão gloriosa gambiarra que nos permite fazer o que achávamos que era impossível.
Antes de chamar o seu formulário em alguma aplicação vamos criar uma variável global assim
[order_by] = ‘ORDER BY’;
ou com sc_set_global o que preferir.
Então… Mudamos o texto na nossa caixa do ORDER BY para
FIND_IN_SET(
id_produto,
(SELECT
GROUP_CONCAT(id_produto [order_by] tb_cliente.cpf ASC)
FROM
tb_produto
LEFT JOIN tb_cliente ON tb_cliente.id = tb_produto.id_cliente
)
E pronto!
Agora o formulário será ordenado por um campo que criamos