祝愿大家身体健康!

 站点注册  找回密码
 站点注册

QQ登录

只需一步,快速开始

查看: 7120|回复: 5

PB中有关ddlb和datastore的小问题

[复制链接]

PB中有关ddlb和datastore的小问题

[复制链接]
清晨有雨

主题

0

回帖

1

积分

新手上路

积分
1
贡献
在线时间
小时
2006-5-13 15:49:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?站点注册

×
版本:pb8
 
我想用三个ddlb控件来实现大中小分类的选定:
用户实际使用时,在ddlb_1中,从11,12,...,20选定一个(大类编号)
比如12
然后点击ddlb_2时,需要显示1211,1212,1213,...1299,然后从中选一个(中类编号)
比如选择1211
...
最后得到分类代码(比如说121156),再对其进行操作

现在我在ddlb_1的constructor事件中建立了datastore--ldt_1,实现了点击ddlb_1,列出相应的编号
但处理ddlb_2时遇到了困难:我在ddlb_2中建了datastore--ldt_2,constructor事件的代码如下:
string tmp_a

tmp_a=Left(ddlb_1.text,2)
//messagebox("",tmp_a)
Datastore ldt_2
ldt_2 = Create Datastore
ldt_2.Dataobject = "d_category_b"
ldt_2.SetTransObject(SQLCA)
ldt_2.Retrieve(tmp_a)
Long ll_row,ll_total
ll_Total = ldt_2.RowCount()
If ll_Total<=0 Then
Destroy(ldt_2)
Return
End If
For ll_Row = 1 To ll_Total
This.AddItem(ldt_2.GetItemString(ll_row,1)+" "+ldt_2.GetItemString(ll_row,2))
End For
Destroy(ldt_2)

但点击ddlb_1选择某编号后,点击ddlb_2无法列出预想的中类编号.
我试着把tmp_a=Left(ddlb_1.text,2)改成tmp_a='12',或者把ldt_2.Retrieve(tmp_a)改成ldt_2.Retrieve('12'),都可以在ddlb_2下列出

又尝试加了句messagebox("",tmp_a),结果是运行即弹出对话框(无提示)

请高手指点问题出在哪里呢?
谢谢!
共享共进共赢Sharing And Win-win Results
SYBASEBBS - 免责申明1、欢迎访问“SYBASEBBS.COM”,本文内容及相关资源来源于网络,版权归版权方所有!本站原创内容版权归本站所有,请勿转载!
2、本文内容仅代表作者观点,不代表本站立场,作者自负,本站资源仅供学习研究,请勿非法使用,否则后果自负!请下载后24小时内删除!
3、本文内容,包括但不限于源码、文字、图片等,仅供参考。本站不对其安全性,正确性等作出保证。但本站会尽量审核会员发表的内容。
4、如本帖侵犯到任何版权问题,请立即告知本站 ,本站将及时删除并致以最深的歉意!客服邮箱:admin@sybasebbs.com
delstat

主题

0

回帖

29

积分

注册会员

积分
29
贡献
在线时间
小时
2006-5-19 15:05:53 | 显示全部楼层
For ll_Row = 1 To ll_Total
This.AddItem(ldt_2.GetItemString(ll_row,1)+" "+ldt_2.GetItemString(ll_row,2))
End For

中,ldt_2的 datawindow有两列,两列分别对应什么?
因为你是在constructor事件里写的,你在写第二个ddlb的时候,第一个ddlb肯定没有选择吧。
没有选择,它哪里来的值?

建议在第一个ddlb的constructor事件里加上给自己赋值的语句试试。
共享共进共赢Sharing And Win-win Results
delstat

主题

0

回帖

29

积分

注册会员

积分
29
贡献
在线时间
小时
2006-5-19 15:05:53 | 显示全部楼层
For ll_Row = 1 To ll_Total
This.AddItem(ldt_2.GetItemString(ll_row,1)+" "+ldt_2.GetItemString(ll_row,2))
End For

中,ldt_2的 datawindow有两列,两列分别对应什么?
因为你是在constructor事件里写的,你在写第二个ddlb的时候,第一个ddlb肯定没有选择吧。
没有选择,它哪里来的值?

建议在第一个ddlb的constructor事件里加上给自己赋值的语句试试。
共享共进共赢Sharing And Win-win Results
delstat

主题

0

回帖

29

积分

注册会员

积分
29
贡献
在线时间
小时
2006-5-19 15:05:53 | 显示全部楼层

不小心多点了几次。

也可以将代码初始化放在selectionchanged事件里

[此贴子已经被作者于2006-5-19 15:09:02编辑过]
共享共进共赢Sharing And Win-win Results
bluery

主题

0

回帖

14

积分

新手上路

积分
14
贡献
在线时间
小时
2006-5-23 10:09:46 | 显示全部楼层

谢谢,后来我试了试放到selectionchanged中,就可以了

然后有调试了好几次,弄得乱七八糟的,功能倒是实现了,估计效率很低...呵呵

看来得重新系统的学习一下~

共享共进共赢Sharing And Win-win Results
阿辉

主题

0

回帖

194

积分

超级版主

积分
194
贡献
在线时间
小时
2006-5-24 17:15:19 | 显示全部楼层

建议你不要用三个ddlb做

有两个建议:

1、用一个数据窗口里放三个下拉子数据窗口解决。下拉子数据窗口的好处是可以很方便的设置显示值、代码值,并且很方便地得到代码值。

2、用一个弹出窗口加一个树型列表框和一个数据存储做。

共享共进共赢Sharing And Win-win Results
您需要登录后才可以回帖 登录 | 站点注册

本版积分规则

免责声明:
本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:Admin@SybaseBbs.com

QQ|Archiver|PowerBuilder(PB)BBS社区 ( 鲁ICP备2021027222号-1 )

GMT+8, 2024-12-22 19:03 , Processed in 0.052576 second(s), 9 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表