早些时候我们使用Sybase作为后端。现在我们正在迁移到SQL服务器,前端保持不变,即PowerBuilder。
问题: 我有一个DataWindow代码,它带有两个检索参数adt_from_date和adt_to_date。两种日期格式。这适用于PB-Sybase组合,但SQL服务器会抛出错误37000。
这是我们的代码。如果我硬编码日期。即,例如如果我将'adt_from_date替换为' 20141001'。代码工作正常。
SELECT A.MEMBER_NO AS 'MEMBER_NO',
ROUND(SUM(TRANSACTION_CHARGES),2) as 'AMOUNT',
SUBSTRING(DATENAME(MM, :adt_from_date ),1,3) +'-'+substring(convert(varchar,datepart(YY, :adt_from_date )),3,2) as 'REASON'
FROM TRAN_SERVICE_TAX_DRV A,
MEMBER_MASTER B
WHERE A.MEMBER_NO = B.MEMBER_NO
AND A.TRADE_DATE BETWEEN :adt_from_date AND :adt_to_date
GROUP BY A.MEMBER_NO
请就此提出建议。
答案 0 :(得分:0)
我建议您查看加载到事务中的错误文本,而不仅仅是数字;它可能会更有帮助。如果我们谈论的是SQLState 37000,那就不会缩小它。
如果这还没有解释它,我会在PowerBuilder端或数据库端查看跟踪。从PB方面开始可能是最有意义的。如果您只是从IDE运行此DataWindow,则跟踪只是连接属性的复选框。如果在应用中,请更换您的" DBMS =' xxx'"使用" DBMS =' tra xxx'" (“连接到数据库”手册中描述了其他选项)。
祝你好运。