组合框和列表框的几个小问题,请大家帮帮忙!

nnlyc 2003-10-16 03:53:52
做一个图书管理模块,其中有分类booktype(组合框)和所有图书books(列表框)两个域,问题如下:
1、在视图里,同一种类的书有几本,如何在表单运行时自动选定图书分类并作为booktype的值,但不能重复。
2、当改变booktype选择一个分类时,如何动态的把属于这个分类的书名添加到books里。

谢谢!最好能有公式和LS两种代码,小弟想学习一下,分不够可另给。:)
...全文
122 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
haifeng999 2003-10-23
  • 打赏
  • 举报
回复
我还有一分阿,谢谢谢谢
nnlyc 2003-10-20
  • 打赏
  • 举报
回复
当选择books中的一项或多项时,如何知道到底选的是哪项呢?

up
Amanged 2003-10-17
  • 打赏
  • 举报
回复
公式很简单:
首先要在视图——booktype(组合框)必须是设置为分类的,最好是第一列,升或降序。
booktype(组合框)::在公式里写(@Unique(@DbColumn("";@Subset(@DbName;1):"";"view";1))),而这个域必须选择(在公式填写窗口属性的下面有两项),在该域的默认值下写:@Subset(@Unique(@DbColumn("";"":"";"VIEW";1));1)——可以打开表单就能显示第一项的变化。
books(列表框)域::@If(@IsError(@DbLookup("";@Subset(@DbName;1):"";"view";booktype;2));"";@DbLookup("";@Subset(@DbName;1):"";"view";booktype;2)),而这个域必须选择(在公式填写窗口属性的下面有两项),这样就可以了。
haifeng999 2003-10-17
  • 打赏
  • 举报
回复
根据:
指定关键字:
。。。。。。。。。。。。。
视图必须包含一个排序列才能进行查找,否则将返回一个空值。对一个已排序但未分类的多值域,返回的结果不一定准确。

我对视图的booktype进行排序,执行结果正常。

非常感谢大家和阿满!
haifeng999 2003-10-17
  • 打赏
  • 举报
回复
@If(@IsError(@DbLookup("":"Nocache";"":"admin.nsf";"book";booktype;2) );
"aaaaaaaaaa"; @DbLookup("":"Nocache";"":"admin.nsf";"book";booktype;2))

执行的时候显示aaaaaa.
建立一个文本域无标题,公式定义成上面的,执行后显示:域:'无标题";entry not found in index or view's index not built

是不是booktype不是关键字的原因?关键字是不是在dblookup中指定的booktype?
我给booktype和bookname选择了:按照关键字变化刷新域,和 在刷新文档时刷新选项。
nnlyc 2003-10-17
  • 打赏
  • 举报
回复
to haifeng999(海风):
把“当关键字改变时刷新域”选上
haifeng999 2003-10-17
  • 打赏
  • 举报
回复
不好意思,我找到输入组合框公式的地方了!!
haifeng999 2003-10-17
  • 打赏
  • 举报
回复
我正面临这个问题!我想请教阿满:
1、如何把booktype设置为关键字?
2、这段话不明白:booktype(组合框)::在公式里写(@Unique(@DbColumn("";@Subset(@DbName;1):"";"view";1))),而这个域必须选择(在公式填写窗口属性的下面有两项),在该域的默认值下写:@Subset(@Unique(@DbColumn("";"":"";"VIEW";1));1)——可以打开表单就能显示第一项的变化。

3、默认值一定是default value了。我给组合框的默认值输入了:@Subset(@Unique(@DbColumn("";"":"";"VIEW";1));1)—— 但是,执行後是空白的。
但是给一个文本域赋同样的值,能够成功显示第一个书类型,而且赋值为Unique(@DbColumn("";"":"";"VIEW";1)可以显示所有的书本类型。 换成组合框就不行了!!!!!

4、我不知道组合框的公式:Unique(@DbColumn("";@Subset(@DbName;1):"";"view";1)))该写在哪里? 你的话中: 在公式填写窗口属性的下面有两项指的什么????)

没有办法,我就定义了一个操作按钮,公式为:booktype=@Unique(@DbColumn("";"":"admin.nsf";"book";1))执行后也没有值,空白的!!!

(我的视图没有问题,是有很多文档的。用@DbColumn("":"";"":"admin.nsf";"book";1)给文本域赋值可以看见那些所有的书类型 以及书名字的文本列表)

请帮帮我,非常感谢!
nnlyc 2003-10-17
  • 打赏
  • 举报
回复
to gjd111686(数字金刚):
我把booktype设为计算,用@if(booktype="";"某个分类";@false)赋初值的话,组合框是灰色的,既不可选,不赋初值就有出错提示,怎么解决?

to Amanged(阿满):
你的方法比较简单,可以得到我想要的结果。

另外,当选择books中的一项或多项时,如何知道到底选的是哪项呢?
icecoldy 2003-10-16
  • 打赏
  • 举报
回复
如果是在B/S上,思路是对的。但如果是在C/S实现的话,就没有必要这样了。比如第二个问题,只要把表单属性设为按关键字刷新的话,把booktype设为关键字的话,只要booktype的值改变,就会触发页面刷新程序,从而你可以重新给books赋值。
cnhxjtoa 2003-10-16
  • 打赏
  • 举报
回复
不错的思路!!!
gjd111686 2003-10-16
  • 打赏
  • 举报
回复
用公式:
视图:两列:
BookType,BookName;
表单:隐藏两域:[多值]
BookTypeList:公式为@dbcolumn("取第一列")
BookNameList:公式为@dbcolumn("取第二列")
booktype:设置为计算
books:公式为:
@replace(@implode(BookNameList);@implode(BookTypeList);booktype)
用脚本:
视图:两列:
BookType,BookName;
表单:隐藏两域:[多值]
BookTypeList:公式为@dbcolumn("取第一列")
BookNameList:公式为@dbcolumn("取第二列")
<script>
function GetSelect(Obj)
{
for(iIndex=0;iIndex<Obj.length;iIndex++)
{
if(Obj.options[iIndex].selected)
{
return Obj.options[iIndex].text;
}
}
}
function GetData(Category)
{
两个多值隐藏域就是两个数组A,B[用split吧!]
遍历数组B,如果元素值等于Category就将A对应索引的值赋给books[改变books.lenth,加一个;循环就可以了]
}
</script>
booktype的onchange="GetData(GetSelect(this))"
大概就是这样了,写的有问题,只是个思路.

535

社区成员

发帖
与我相关
我的任务
社区描述
企业开发 Exchange Server
社区管理员
  • 消息协作社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧