在QueryRange里面慎用strfmt拼出来的条件
gStartAmount = -40000;
gEndAmount = -1;
使用下面的语句
gStrAmountRangeCredit = strfmt("%1..%2",gStartAmount,gEndAmount);
gStrAmountRangeDebit = strfmt("%1..%2",-1*gEndAmount,-1*gStartAmount);
Qbds.addRange(fieldnum(LedgerTrans,AmountCur)).value(gStrAmountRangeCredit);
拼出来的SQL居然是下面的:
NAME:
Qbds
VALUE:
SELECT * FROM LedgerTrans WHERE ((TransDate>={ts '2009-07-01 00:00:00.000'} AND TransDate<={ts '2009-07-31 00:00:00.000'})) AND ((AmountCur = -4.E1 OR AmountCur>=1.E0 AND AmountCur<=-1.E0)) AND ((Crediting = 0)) JOIN * FROM LedgerJournalTable WHERE LedgerTrans.JournalNum = LedgerJournalTable.JournalNum
TYPE:
QueryBuildDataSource
无语!!
调整为下面的写法:
gStrAmountRangeCredit = num2str(gStartAmount,10,2,1,0) + ".."+ num2str(gEndAmount,10,2,1,0);//strfmt("%1..%2",gStartAmount,gEndAmount);
gStrAmountRangeDebit = num2str(-1*gEndAmount,10,2,1,0) + ".."+ num2str(-1*gStartAmount,10,2,1,0);//strfmt("%1..%2",-1*gEndAmount,-1*gStartAmount);
Qbds.addRange(fieldnum(LedgerTrans,AmountCur)).value(gStrAmountRangeCredit);
拼出来的语句是正确的:
NAME:
Qbds
VALUE:
SELECT * FROM LedgerTrans WHERE ((TransDate>={ts '2009-07-01 00:00:00.000'} AND TransDate<={ts '2009-07-31 00:00:00.000'})) AND ((AmountCur>=-4.00001E5 AND AmountCur<=-1.E0)) AND ((Crediting = 0)) JOIN * FROM LedgerJournalTable WHERE LedgerTrans.JournalNum = LedgerJournalTable.JournalNum
TYPE:
QueryBuildDataSource
gEndAmount = -1;
使用下面的语句
gStrAmountRangeCredit = strfmt("%1..%2",gStartAmount,gEndAmount);
gStrAmountRangeDebit = strfmt("%1..%2",-1*gEndAmount,-1*gStartAmount);
Qbds.addRange(fieldnum(LedgerTrans,AmountCur)).value(gStrAmountRangeCredit);
拼出来的SQL居然是下面的:
NAME:
Qbds
VALUE:
SELECT * FROM LedgerTrans WHERE ((TransDate>={ts '2009-07-01 00:00:00.000'} AND TransDate<={ts '2009-07-31 00:00:00.000'})) AND ((AmountCur = -4.E1 OR AmountCur>=1.E0 AND AmountCur<=-1.E0)) AND ((Crediting = 0)) JOIN * FROM LedgerJournalTable WHERE LedgerTrans.JournalNum = LedgerJournalTable.JournalNum
TYPE:
QueryBuildDataSource
无语!!
调整为下面的写法:
gStrAmountRangeCredit = num2str(gStartAmount,10,2,1,0) + ".."+ num2str(gEndAmount,10,2,1,0);//strfmt("%1..%2",gStartAmount,gEndAmount);
gStrAmountRangeDebit = num2str(-1*gEndAmount,10,2,1,0) + ".."+ num2str(-1*gStartAmount,10,2,1,0);//strfmt("%1..%2",-1*gEndAmount,-1*gStartAmount);
Qbds.addRange(fieldnum(LedgerTrans,AmountCur)).value(gStrAmountRangeCredit);
拼出来的语句是正确的:
NAME:
Qbds
VALUE:
SELECT * FROM LedgerTrans WHERE ((TransDate>={ts '2009-07-01 00:00:00.000'} AND TransDate<={ts '2009-07-31 00:00:00.000'})) AND ((AmountCur>=-4.00001E5 AND AmountCur<=-1.E0)) AND ((Crediting = 0)) JOIN * FROM LedgerJournalTable WHERE LedgerTrans.JournalNum = LedgerJournalTable.JournalNum
TYPE:
QueryBuildDataSource
posted on 2009-07-28 19:20 lingdanglfw 阅读(345) 评论(1) 编辑 收藏 举报
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
· 面试官:你是如何进行SQL调优的?