如果在后台用存储过程通个一个表的数据保存后自动换算出另一个表的对应数据来更新这个表里对应的内容?

BarryW 2004-12-13 03:52:53

有一个BOM结构式的主表mf_bom(bom_no,name,prd_no)-->母件号,品名,货品代号
例如有下内容:
bom_no name prd_no
SO4C13C001->1 单门地柜 00002
........
有另一个记载BOM的主表长宽高等单位的mf_bom_z(BOM_NO,KW,KS,KK,KH,KSH,KBH)-->母件代号,宽度,深度,高度,厚度1,厚度2,厚度3
BOM_NO KW KS KK KH KSH KBH
SO4C13C001->1 5.2 3 4 5 7 9

有一个BOM结构式的明细表身tf_bom(bom_no,itm,name,prd_no)-->母件代号,项号,品名,货品代号
bom_no itm name prd_no
SO4C13C001->1 1 侧板 00003
SO4C13C001->1 2 底 板 00004
SO4C13C001->1 3 背 板 00005
SO4C13C001->1 4 活动层 板 00006
.........

有另一个BOM结构式的明细表身记载表身各代码的tf_bom_z(bom_no,itm,KW,KS,KH)-->母件代号,项号, 宽度,长度,高度
而项号是与tf_bom表的项号是一一对应的;
我在保存主以上表的时候如何通过后台的存储过程把算法自动更新得出下面插入这个表中?(对应的货品代号的算法都是固定的)
bom_no itm KW KS KH
SO4C13C001->1 1 mf_bom_z.(kw*ks)=15.6 mf_bom_z.(ks*kk)=12 mf_bom_z.(kh*ksh)=35
SO4C13C001->1 2 mf_bom_z.(kw*kk)=20.8 mf_bom_z. kw=5.2 mf_bom_z.(kh*kk)=20
SO4C13C001->1 3 mf_bom_z.ks=3 mf_bom_z.KBH=15.6 mf_bom_z.(ks*kh)=15
SO4C13C001->1 4 ............... .................. ...........
.......
...全文
197 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
BarryW 2004-12-15
  • 打赏
  • 举报
回复
还是不行,表达能力不行么;哭
lsxaa 2004-12-15
  • 打赏
  • 举报
回复
马可的不行么
BarryW 2004-12-15
  • 打赏
  • 举报
回复
不会吧,这个描述应清楚了吧?

主表mf_bom(bom_no,name,prd_no)和mf_bom_z(BOM_NO,KW,KS,KK,KH,KSH,KBH)
是同一個表頭上的信息只是MF_BOM_z用來記載prd_no長,寬,高,厚等一樓說明的信息,倆個表通過
bom_no來關聯唯一性;
明細表tf_bom(bom_no,itm,name,prd_no)和tf_bom_z(bom_no,itm,KW,KS,KH)是在同一個DBGRID
裡的明細表但不同的兩個表;
tf_bom_z裡的內容是用來自動得到mf_bom_z的長,寬,高等換算而想要自動得到的表;
tf_bom和tf_bom_z是通過BOM_no,itm作為唯一性關鍵字段;
mf_bom和tf_bom 是通過BOM_no,prd_no作為唯一性關鍵字段;

目的是怎麼樣通過trigger來在插入mf_bom_z內容時,而根據mf_bom_z表的內容而換算UPDATE到tf_bom_z裡來;
lsxaa 2004-12-15
  • 打赏
  • 举报
回复
create trigger TR_test on mf_bom_z
for insert
as
update tf_bom_z set
a.kw =换算公式,
a.ks =换算公式,
a.kh =换算公式
from tf_bom_z a
join inserted b on a.bom_no = b.bom_no and a.itm = 1
Andy__Huang 2004-12-15
  • 打赏
  • 举报
回复
這個題是马可應該出力的時候了....
BarryW 2004-12-15
  • 打赏
  • 举报
回复
主表mf_bom(bom_no,name,prd_no)和mf_bom_z(BOM_NO,KW,KS,KK,KH,KSH,KBH)
是同一個表頭上的信息只是MF_BOM_z用來記載prd_no長,寬,高,厚等一樓說明的信息,倆個表通過
bom_no來關聯唯一性;
明細表tf_bom(bom_no,itm,name,prd_no)和tf_bom_z(bom_no,itm,KW,KS,KH)是在同一個DBGRID
裡的明細表但不同的兩個表;
tf_bom_z裡的內容是用來自動得到mf_bom_z的長,寬,高等換算而想要自動得到的表;
tf_bom和tf_bom_z是通過BOM_no,itm作為唯一性關鍵字段;
mf_bom和tf_bom 是通過BOM_no,prd_no作為唯一性關鍵字段;

目的是怎麼樣通過trigger來在插入mf_bom_z內容時,而根據mf_bom_z表的內容而換算UPDATE到tf_bom_z裡來;
BarryW 2004-12-15
  • 打赏
  • 举报
回复
大虾们,帮我来看看吧,急啊
BarryW 2004-12-14
  • 打赏
  • 举报
回复
主表mf_bom(bom_no,name,prd_no)和mf_bom_z(BOM_NO,KW,KS,KK,KH,KSH,KBH)
是同一個表頭上的信息只是MF_BOM_z用來記載prd_no長,寬,高,厚等一樓說明的信息,倆個表通過
bom_no來關聯唯一性;
明細表tf_bom(bom_no,itm,name,prd_no)和tf_bom_z(bom_no,itm,KW,KS,KH)是在同一個DBGRID
裡的明細表但不同的兩個表;
tf_bom_z裡的內容是用來自動得到mf_bom_z的長,寬,高等換算而想要自動得到的表;
tf_bom和tf_bom_z是通過BOM_no,itm作為唯一性關鍵字段;
mf_bom和tf_bom 是通過BOM_no,prd_no作為唯一性關鍵字段;

目的是怎麼樣通過trigger來在插入mf_bom_z內容時,而根據mf_bom_z表的內容而換算UPDATE到tf_bom_z裡來;



txlicenhe 2004-12-14
  • 打赏
  • 举报
回复
没太看明白:

create trigger TR_test on mf_bom_z
for insert
as
update a set
a.kw = b.kw * b.ks,
a.ks = b.ks * b.kk,
a.kh = b.kh * b.ksh
from tf_bom_z a
join inserted b on a.bom_no = b.bom_no and a.itm = 1

update a set
a.kw = b.kw * b.kk,
a.ks = b.kw,
a.kh = b.kh * b.kk
from tf_bom_z a
join inserted b on a.bom_no = b.bom_no and a.itm = 2
................

sunlm78 2004-12-14
  • 打赏
  • 举报
回复
搞不太清除
txlicenhe 2004-12-14
  • 打赏
  • 举报
回复
还没搞定啊? 看来楼主还是没有描述清楚啊。
lsxaa 2004-12-14
  • 打赏
  • 举报
回复
mark 一下
vinsonshen 2004-12-13
  • 打赏
  • 举报
回复

inserted 的结构跟mf_bom_z的结构是一样的~~~
你试下以下看看返回的结果就知道了:
create trigger TR_test on mf_bom_z
for insert
as
select * from inserted
接着往mf_bom_z里插入一行值,看那返回的结果你就应该明白了

而你都知道:
我如果根据下面这个表里的内容(主的表):
mf_bom_z(BOM_NO,KW,KS,KK,KH,KSH,KBH)-->母件代号,宽度,深度,高度,厚度1,厚度2,厚度3
BOM_NO KW KS KK KH KSH KBH
SO4C13C001->1 5.2 3 4 5 7 9

而如何通过存储过程得出下面这个表的各栏位的换算关系:
tf_bom_z(bom_no,itm,KW,KS,KH)-->母件代号,项号, 宽度,长度,高度
bom_no itm KW KS KH
SO4C13C001->1 1 (kw*ks)=15.6 (ks*kk)=12 (kh*ksh)=35
SO4C13C001->1 2 (kw*kk)=20.8 kw=5.2 (kh*kk)=20
SO4C13C001->1 3 KS=3 KBH=15.6 (ks*kh)=15
SO4C13C001->1 4 ............... ............ ...........
------------------------------
这样的话,那不是能得到tf_bom_z 的结果了么?
BarryW 2004-12-13
  • 打赏
  • 举报
回复
喔,对,是应触发器来实现,

按上你的思路如是两个单纯的表还可以,但是上面的表tf_bom_z和tf_bom结构有项来作关联;
不知如何来关联对应找到来INSERTED它;
vinsonshen 2004-12-13
  • 打赏
  • 举报
回复
用触发器来实现吧:
create trigger TR_test on mf_bom_z
for insert
as
select * from inserted --插入mf_bom_z的新数据表.思路:你可以根据这个表,生成几条记录插入到tf_bom_z里面去
BarryW 2004-12-13
  • 打赏
  • 举报
回复
上面的意思是:
我如果根据下面这个表里的内容(主的表):
mf_bom_z(BOM_NO,KW,KS,KK,KH,KSH,KBH)-->母件代号,宽度,深度,高度,厚度1,厚度2,厚度3
BOM_NO KW KS KK KH KSH KBH
SO4C13C001->1 5.2 3 4 5 7 9

而如何通过存储过程得出下面这个表的各栏位的换算关系:
tf_bom_z(bom_no,itm,KW,KS,KH)-->母件代号,项号, 宽度,长度,高度
bom_no itm KW KS KH
SO4C13C001->1 1 (kw*ks)=15.6 (ks*kk)=12 (kh*ksh)=35
SO4C13C001->1 2 (kw*kk)=20.8 kw=5.2 (kh*kk)=20
SO4C13C001->1 3 KS=3 KBH=15.6 (ks*kh)=15
SO4C13C001->1 4 ............... ............ ...........


结构就是我一楼上写的结构;我主要的是如何通过存储过程在前台保存了mf_bom_z表的内容后,而tf_bom_z表里的KW,KS,KH字段的内容自动通过上的算法算得到?










BarryW 2004-12-13
  • 打赏
  • 举报
回复
最后一个表的内容应是这样的
bom_no itm KW KS KH
SO4C13C001->1 1 mf_bom_z.(kw*ks)=15.6 mf_bom_z.(ks*kk)=12 mf_bom_z.(kh*ksh)=35
SO4C13C001->1 2 mf_bom_z.(kw*kk)=20.8 mf_bom_z. kw=5.2 mf_bom_z.(kh*kk)=20
SO4C13C001->1 3 mf_bom_z.ks=3 mf_bom_z.KBH=15.6 mf_bom_z.(ks*kh)=15
SO4C13C001->1 4 ............... .................. ...........
lsxaa 2004-12-13
  • 打赏
  • 举报
回复
楼主,你把问题整理清楚一点,方便大家看
lsxaa 2004-12-13
  • 打赏
  • 举报
回复
一楼很爱吃鸡肠啦
lsxaa 2004-12-13
  • 打赏
  • 举报
回复
顶一下
加载更多回复(1)

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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