declare @sigdays decimal(18, 4)
declare @rate decimal(18, 4)
declare @qty decimal(18, 4)
declare @goods int
declare @days int
select @goods=isnull('110100113',0)
select @days=isnull('',0)
select @sigdays=isnull(days,0) from sig where englishflag='-'
select @sigdays=isnull(@sigdays,0)
select @rate=isnull(rate,1) from goods where goodsid=@goods
select @rate=isnull(@rate,1)
select @qty=1.0000 * @days * @sigdays
select @qty=ceiling(@qty/@rate)
--select @qty
select @qty=1
select @qty
用动态游标或者动态生成数据窗口都失效。类似的问题哪位大侠遇到过?
动态游标 后 再次访问 非法操作。数据窗口 则无法取值
12 个解决方案
#1
晕,这样的需要用到动态游标么?很简单的一个select 语句就搞定了啊!
#2
我也觉得直接用SQL语句即可.
#3
SQL语句可以搞定。
#4
declare @sigdays decimal(18, 4)
declare @rate decimal(18, 4)
declare @qty decimal(18, 4)
declare @goods int
declare @days int
select @goods=isnull('110100113',0)
select @days=isnull('',0)
select @sigdays=isnull(days,0) from sig where englishflag='-'
select @sigdays=isnull(@sigdays,0)
select @rate=isnull(rate,1) from goods where goodsid=@goods
select @rate=isnull(@rate,1)
select @qty=1.0000 * @days * @sigdays
select @qty=ceiling(@qty/@rate)
--select @qty
select @qty=1
select @qty
这个代码乱的,不需要返回到客户端的,请换select为set,或者前面加set nocount on
#5
看不懂,帮顶
#6
我看懂你的意思是要通过多步骤计算到@qty的值并返回显示。
你这个写成一个procedure即可。代码应该没错。如果你这些语句在查询分析器内调试能得到@qty的结果值,那只需要写成procedure即可。dw可以返回存储器的结果。
4#的说法不对吧??
select @var = 1+2
或者
select @var = col_name from table_xx
set @var = 1+2
等都可以为@var赋值。并不存在你说的问题。lz的写法无错误。
你这个写成一个procedure即可。代码应该没错。如果你这些语句在查询分析器内调试能得到@qty的结果值,那只需要写成procedure即可。dw可以返回存储器的结果。
4#的说法不对吧??
select @var = 1+2
或者
select @var = col_name from table_xx
set @var = 1+2
等都可以为@var赋值。并不存在你说的问题。lz的写法无错误。
#7
补充:
写成存储器,并new一个dw并使用该存储器做数据源即可返回结果。
类似:求连续6个月消费增幅超过30%的客户列表 等复杂点的问题,并不是一句select即可搞定。它需要一些列的过程后才能得到结果。
---------------------------------------------------
PB混淆器(5-12) http://chengg0769.download.csdn.net/
写成存储器,并new一个dw并使用该存储器做数据源即可返回结果。
类似:求连续6个月消费增幅超过30%的客户列表 等复杂点的问题,并不是一句select即可搞定。它需要一些列的过程后才能得到结果。
---------------------------------------------------
PB混淆器(5-12) http://chengg0769.download.csdn.net/
#8
回楼上,使用procedure是没有问题的。不过,PB连这个比较简单的sql作为数据源都搞不定。(最要命的是有时候是可以的,有时候又是不可以的,十分不稳定。)而动态游标的话则更是非法操作。
#9
补充一下,我用的是pb9.03 7610的版本。但是pb.exe文件的信息仍然显示的是5507.不知为何。
#10
PB是支持Proc SQL作为数据库源的,不是PB搞不定,是需要你变通一下,
"有时候是可以的,有时候又是不可以的,十分不稳定",只是你自己的原因,
SELECT 返回需要有明确的列名,变通下就行.
"有时候是可以的,有时候又是不可以的,十分不稳定",只是你自己的原因,
SELECT 返回需要有明确的列名,变通下就行.
#11
如8#的回复,我倒是没在pb直接用过(你这是内嵌sql做游标吗?)
10#的意思我理解,可能会存在这个问题!!因为sql内嵌好像要具体的表和栏位名称才可以。
从层的分离看。写在procedure中有助于你的程序分层。这样后台对前台是一个相对固定的接口。修改前台不影响后台,修改存储器不影响前台程序。。。我是如此理解的。也是在几年的项目中奉行的办法。
10#的意思我理解,可能会存在这个问题!!因为sql内嵌好像要具体的表和栏位名称才可以。
从层的分离看。写在procedure中有助于你的程序分层。这样后台对前台是一个相对固定的接口。修改前台不影响后台,修改存储器不影响前台程序。。。我是如此理解的。也是在几年的项目中奉行的办法。
#12
关于9#的版本问题。补丁它不一定是补在pb。exe上的。一般都是在menu-help-about powerbuilder中查看的。
#1
晕,这样的需要用到动态游标么?很简单的一个select 语句就搞定了啊!
#2
我也觉得直接用SQL语句即可.
#3
SQL语句可以搞定。
#4
declare @sigdays decimal(18, 4)
declare @rate decimal(18, 4)
declare @qty decimal(18, 4)
declare @goods int
declare @days int
select @goods=isnull('110100113',0)
select @days=isnull('',0)
select @sigdays=isnull(days,0) from sig where englishflag='-'
select @sigdays=isnull(@sigdays,0)
select @rate=isnull(rate,1) from goods where goodsid=@goods
select @rate=isnull(@rate,1)
select @qty=1.0000 * @days * @sigdays
select @qty=ceiling(@qty/@rate)
--select @qty
select @qty=1
select @qty
这个代码乱的,不需要返回到客户端的,请换select为set,或者前面加set nocount on
#5
看不懂,帮顶
#6
我看懂你的意思是要通过多步骤计算到@qty的值并返回显示。
你这个写成一个procedure即可。代码应该没错。如果你这些语句在查询分析器内调试能得到@qty的结果值,那只需要写成procedure即可。dw可以返回存储器的结果。
4#的说法不对吧??
select @var = 1+2
或者
select @var = col_name from table_xx
set @var = 1+2
等都可以为@var赋值。并不存在你说的问题。lz的写法无错误。
你这个写成一个procedure即可。代码应该没错。如果你这些语句在查询分析器内调试能得到@qty的结果值,那只需要写成procedure即可。dw可以返回存储器的结果。
4#的说法不对吧??
select @var = 1+2
或者
select @var = col_name from table_xx
set @var = 1+2
等都可以为@var赋值。并不存在你说的问题。lz的写法无错误。
#7
补充:
写成存储器,并new一个dw并使用该存储器做数据源即可返回结果。
类似:求连续6个月消费增幅超过30%的客户列表 等复杂点的问题,并不是一句select即可搞定。它需要一些列的过程后才能得到结果。
---------------------------------------------------
PB混淆器(5-12) http://chengg0769.download.csdn.net/
写成存储器,并new一个dw并使用该存储器做数据源即可返回结果。
类似:求连续6个月消费增幅超过30%的客户列表 等复杂点的问题,并不是一句select即可搞定。它需要一些列的过程后才能得到结果。
---------------------------------------------------
PB混淆器(5-12) http://chengg0769.download.csdn.net/
#8
回楼上,使用procedure是没有问题的。不过,PB连这个比较简单的sql作为数据源都搞不定。(最要命的是有时候是可以的,有时候又是不可以的,十分不稳定。)而动态游标的话则更是非法操作。
#9
补充一下,我用的是pb9.03 7610的版本。但是pb.exe文件的信息仍然显示的是5507.不知为何。
#10
PB是支持Proc SQL作为数据库源的,不是PB搞不定,是需要你变通一下,
"有时候是可以的,有时候又是不可以的,十分不稳定",只是你自己的原因,
SELECT 返回需要有明确的列名,变通下就行.
"有时候是可以的,有时候又是不可以的,十分不稳定",只是你自己的原因,
SELECT 返回需要有明确的列名,变通下就行.
#11
如8#的回复,我倒是没在pb直接用过(你这是内嵌sql做游标吗?)
10#的意思我理解,可能会存在这个问题!!因为sql内嵌好像要具体的表和栏位名称才可以。
从层的分离看。写在procedure中有助于你的程序分层。这样后台对前台是一个相对固定的接口。修改前台不影响后台,修改存储器不影响前台程序。。。我是如此理解的。也是在几年的项目中奉行的办法。
10#的意思我理解,可能会存在这个问题!!因为sql内嵌好像要具体的表和栏位名称才可以。
从层的分离看。写在procedure中有助于你的程序分层。这样后台对前台是一个相对固定的接口。修改前台不影响后台,修改存储器不影响前台程序。。。我是如此理解的。也是在几年的项目中奉行的办法。
#12
关于9#的版本问题。补丁它不一定是补在pb。exe上的。一般都是在menu-help-about powerbuilder中查看的。