SQL-Server上怎样建这样的视图, 可行就有分,从不食言

xirumin 2002-10-11 03:00:59
有两个表分别是入库单和入库单细目,t_in和t_initem

t_in 中有 f_id int, //ID号
f_code varchar( 8) //入库单号


t_initem中有 f_id int, //ID号
f_inid int, //入库单ID号
f_type varchar( 8 ) //货物类别


我建有入库单的列表数据窗口,反映现有的入库单的单号日期等信息
客户想在数据窗口中显示下面货物类别, 因为大部分货物的类别是相同的,偶有不同可以写明"设备材料、备品备件"这样逗号隔开。
因此我想建一个视图,反映的是
f_id int //入库单的ID号
f_type varchar( 88 ) 入库单下面入库细目单中货物类别,如有多个类别,用逗号隔开。

这个视图怎么建呢?另外,如果不建视图, 定义一个全局函数, 怎样在数据窗口上建一个计算字段,然后让计算字段的计算公式中包含自已定义的全局函数. 我觉得这样可能更容易.
...全文
24 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
caijitao 2002-10-11
  • 打赏
  • 举报
回复
在网吧,没法测试:)
caijitao 2002-10-11
  • 打赏
  • 举报
回复
//循环中在end if 后加一句:
//另:1、ls_typestring=''提到if 之前。
// 2、ID应为可相互关联的入库单号。
d1.setitem(i,type,ls_typestring);
caijitao 2002-10-11
  • 打赏
  • 举报
回复
//d1为界面上的datawindow

datastore d2;
d2=create datastore;

d1.dataobject='d_t_show'//include id,type(sql:select id,'' as type from f_in);
d2.dataobject='d_t_initem'//select f_id,f_type from f_initem where f_id=:id;
d1.settransobject(sqlca);
d2.settransobject(sqlca);

d1.retrieve();

long i,li_countd1,j,li_countd2;
string ls_typestring;
li_count=d1.rowcount();

for i=1 to li_count
li_countd2=d2.retrieve(d1.getitemnumber(i,'f_id'));
if li_countd2>0 then
ls_typestring='';
for j=1 to li_countd2
ls_typestring=ls_typestring+d2.getitemstring(j,'f_type');
next
end if
next

destroy d2;

//简单吧:)



wallis 2002-10-11
  • 打赏
  • 举报
回复
还是用全局函数,然后在函数中用datastore
xlhl 2002-10-11
  • 打赏
  • 举报
回复
我看用视图不太可能,用函数方便。我不建议用游标
可以用DATASTORE,及快,还好操作。
diliver 2002-10-11
  • 打赏
  • 举报
回复
你可以建一个全局函数
参数是f_id
你先判断它的f_type
一种话:return f_type.
大于一种的话:用游标把你需要的值提取出来,拼成一字符串返回
在计算列调用即可

1,077

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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