我需要的是:我有一个带有一些字段的屏幕和一个带有查询选项的下拉列表,而下拉列表是我的次要规则,比如价格、客户名称等等。发生了什么:不管您在下拉列表中选择了什么,它总是返回相同的顺序。按部分顺序如下:
ORDER BY
CAD.NOME_CADASTRO,
PAG.DATA_EMISSAO,
PAG.NUM_DOCTO,
PAG.DATA_VENCTO,
PAG.VALOR_TITULO,然后我改变了这个:
DECLARE @TESTE CHAR(1)
SET @TESTE = 'prmOrd'
'...'
ORDER BY
CASE
@TESTE
WHEN 'N' THEN PAG.DATA_EMISSAO
WHEN 'D' THEN PAG.DATA_VENCTO
WHEN 'C' THEN CAD.NOME_CADASTRO
WHEN 'V' THEN PAG.VALOR_TITULO
ENDprmOrd保存数值N、D、C和V,这是在内部处理下拉列表中的值的方法。现在它起作用了,但是当生成报告时,如果我选择N,D或V选项,它就会工作得很好。当我选择C时,我会得到一个错误的状态
无法生成报告。无法打开数据集。:DataSet
In主体是我正在处理的查询的名称。一位同事告诉我把命令当作焦炭,这样可以解决问题,但我不能让它起作用。还有另一件奇怪的事情发生了,当生成报告时,我选择N,D或V,然后选择C,除C之外,都是在命令之后生成的,我得到了错误消息。然后我继续关闭窗口并重新开始,如果我首先尝试生成C,则错误是不同的:
Server错误:从字符串转换日期和/或时间时,转换失败。
然后,尝试生成任何工作选项,返回以下错误:
错误:缺少查询表名称或过程名称。
知道我该怎么做才能成功吗?
++++++
根据请求,这是原始状态下的完整查询:
SELECT
PAG.COD_FILIAL,
PAG.COD_DOCTO,
PAG.SERIE_DOCTO,
PAG.NUM_DOCTO,
PAG.NUM_PARCELA,
PAG.QTDE_PARCELA,
PAG.DATA_VENCTO,
PAG.COD_BANCO_CAIXA,
PAG.COD_FORNECEDOR,
CAD.NOME_CADASTRO,
CAD.APELIDO,
PAG.COD_FORMA_PGTO,
PAG.VALOR_TITULO,
PAG.VALOR_SALDO,
PAG.NATUREZA_TITULO,
PAG.NUM_NOSSO_PAG,
PAG.DATA_EMISSAO,
(CASE SUBSTRING(PAG.COD_DOCTO,1,2)
WHEN 'AD' THEN PAG.VALOR_TITULO
ELSE -PAG.VALOR_TITULO
END) AS VALOR_TITDC,
(CASE SUBSTRING(PAG.COD_DOCTO,1,2)
WHEN 'AD' THEN PAG.VALOR_SALDO
ELSE -PAG.VALOR_SALDO
END) AS VALOR_SALDODC,
PAG.STATUS_TITULO,
PAG.OBSERVACAO
FROM
TBTITULOPAG PAG INNER JOIN TBCADASTROGERAL CAD
ON PAG.COD_FORNECEDOR = CAD.COD_CADASTRO
WHERE
PAG.COD_FILIAL BETWEEN '100' AND '100' AND
PAG.COD_DOCTO BETWEEN '' AND 'Z' AND
PAG.NUM_DOCTO BETWEEN '0' AND '999999' AND
PAG.COD_FORNECEDOR BETWEEN '0' AND '999999' AND
PAG.COD_FORMA_PGTO BETWEEN '0' AND '999999' AND
PAG.STATUS_TITULO like 'A' AND
PAG.NATUREZA_TITULO LIKE 'R' AND
PAG.DATA_EMISSAO BETWEEN '01/01/2017' AND '12/31/2023'
ORDER BY
CAD.NOME_CADASTRO,
PAG.DATA_EMISSAO,
PAG.NUM_DOCTO,
PAG.DATA_VENCTO,
PAG.VALOR_TITULO发布于 2018-01-08 11:30:13
case表达式的不同返回数据类型必须兼容。相反,请执行以下操作:
ORDER BY
CASE @TESTE WHEN 'N' THEN PAG.DATA_EMISSAO END,
CASE @TESTE WHEN 'D' THEN PAG.DATA_VENCTO END,
CASE @TESTE WHEN 'C' THEN CAD.NOME_CADASTRO END,
CASE @TESTE WHEN 'V' THEN PAG.VALOR_TITULO END他们中只有一人会有任何不同的订单。
https://stackoverflow.com/questions/48149319
复制相似问题