初学者 求一段简单的代码

ha_ha_ha_00 2013-05-10 08:56:36
dw_1的数据源为table_1(qy_code,qy_name,zsxm_ds,sfssqq,sfssqz,sl,ynse),通过dw_1输入数据,保存的时候,我想要table_1的数据同时复制到table_2(qy_code,qy_name,zsxm_ds,sfssqq,sfssqz,ynse),使table_2也有相应的数据,我用insert into 语句时,只能保存数据的最后一行,请教一下,怎样才能让多行数据同时保存到另外一张表
...全文
4266 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
我是_怪胎 2015-11-23
  • 打赏
  • 举报
回复
引用 15 楼 ha_ha_ha_00 的回复:
现在我改用for循环,代码如下(g_id,g_name为全局变量,q,z为局部变量): dw_grid.accepttext() r_row_count=dw_grid.rowcount() for i = 1 to r_row_count r_xm=dw_grid.getitemstring(i,'zsxm_ds') r_ynse=dw_grid.getitemdecimal(i,'ynse') insert into ywxxb_sz(qy_code,qy_name,sfssqq,sfssqz,zsxm_ds,ynse) values (:g_id,:g_name,:q,:z,:r_xm,:r_ynse); next 为什么还是只保存一行数据呢,而且这次保存的不是最后一行了,变成第一行了,但是我在调试程序的时候发现r_xm,r_ynse会因为行数的改变而变成不同的内容,还是我的代码还差点什么
你这样操作的话需要每INSERT一条数据后数据窗口都需要插入一个空行才行的
workroom15 2015-10-26
  • 打赏
  • 举报
回复
先获取行数,然后通过FOR循环就可以实现了。
FrankLiang 2015-10-26
  • 打赏
  • 举报
回复
还是用据库触发器最方便,不过用PB也可以。用rowscopy从dw_1到dw_2, dw_1与dw_2的dataobject一样。之后dw_2.update()
kytling 2015-10-26
  • 打赏
  • 举报
回复
数据库的话,用触发器就可以了 程序的话,通过dw_1.getitemstring()来获取对应数据赋值给dw_2
sdhp 2014-06-27
  • 打赏
  • 举报
回复
回复完了才发现这是一年前的帖子,谁这么无聊把它顶起来的?
sdhp 2014-06-27
  • 打赏
  • 举报
回复
引用 7 楼 ha_ha_ha_00 的回复:
table_2是建立起来做图表分析的,它要把所有的都汇总在一起,table_1只是table_2数据来源的一部分,不管我怎么弄,就只能保存上图所示的第三行,其他两行数据都不能保存
按你的需求其实table_2可以用一个view来代替就行了,触发器也是不错的选择 至于你用for循环来插入数据的地方在insert语句后面判断一下SQLCA.SQLCode,谨慎怀疑是主键重复一类的问题
zh1303300 2014-06-27
  • 打赏
  • 举报
回复
现在我改用for循环,代码如下(g_id,g_name为全局变量,q,z为局部变量): dw_grid.accepttext() r_row_count=dw_grid.rowcount() for i = 1 to r_row_count r_xm=dw_grid.getitemstring(i,'zsxm_ds') r_ynse=dw_grid.getitemdecimal(i,'ynse') insert into ywxxb_sz(qy_code,qy_name,sfssqq,sfssqz,zsxm_ds,ynse) values (:g_id,:g_name,:q,:z,:r_xm,:r_ynse); next 为什么还是只保存一行数据呢,而且这次保存的不是最后一行了,变成第一行了,但是我在调试程序的时候发现r_xm,r_ynse会因为行数的改变而变成不同的内容,还是我的代码还差点什么 ///////////////////////////////////////////////////////// 每次insert之后,好像都要commit一下。你试试看,我也忘记了。
嘉友云阁 2013-12-26
  • 打赏
  • 举报
回复
rowscopy,两个DW之间的行拷贝,这个很简单了,只是你在做dw_2的时候尽量把字段名定义和dw_1一样。。 比如dw_1查询语句是select qy_code,qy_name,zsxm_ds,sfssqq,sfssqz,sl,ynse from table1,那dw_2的查询语句就是selectqy_code,qy_name,zsxm_ds,sfssqq,sfssqz,'0'as sl,ynse from talbe2 dw_2在update的时候不用包含sl列即可.... 下面是rowscopy的用法 datawindowchild dwc dw_3.GetChild("state_id", dwc) dw_1.RowsCopy(dw_1.GetRow(), & dw_1.RowCount(), Primary!, dwc, 1, Primary!)
梦随缘 2013-05-25
  • 打赏
  • 举报
回复
建立数据库触发器。
ha_ha_ha_00 2013-05-25
  • 打赏
  • 举报
回复
现在我改用for循环,代码如下(g_id,g_name为全局变量,q,z为局部变量): dw_grid.accepttext() r_row_count=dw_grid.rowcount() for i = 1 to r_row_count r_xm=dw_grid.getitemstring(i,'zsxm_ds') r_ynse=dw_grid.getitemdecimal(i,'ynse') insert into ywxxb_sz(qy_code,qy_name,sfssqq,sfssqz,zsxm_ds,ynse) values (:g_id,:g_name,:q,:z,:r_xm,:r_ynse); next 为什么还是只保存一行数据呢,而且这次保存的不是最后一行了,变成第一行了,但是我在调试程序的时候发现r_xm,r_ynse会因为行数的改变而变成不同的内容,还是我的代码还差点什么
ha_ha_ha_00 2013-05-20
  • 打赏
  • 举报
回复
如果要建立数据库触发器,应该在哪里创建啊
fanyingfaying 2013-05-19
  • 打赏
  • 举报
回复
触发器是个特殊的存储过程,是绑定在表上的,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行
ha_ha_ha_00 2013-05-18
  • 打赏
  • 举报
回复
我想再问哈,楼上所说的数据库触发器是什么,还有我听说也可以用指针来解决这个问题,请问指针又是什么
t59616 2013-05-15
  • 打赏
  • 举报
回复
在数据窗口里插入数据,只能是一行一行的插入,如果是这样的话,保存的时候只能是保存最新的一行数据了,lz可以试试一行一行的输入数据!
ha_ha_ha_00 2013-05-15
  • 打赏
  • 举报
回复
我做的是一个纳税申报的系统,不同的纳税人它所交税种是不一样的,纳税人自己本身是没有输入数据的权利,唯一能输入的就只有ynse、sfssqq、sfssqz,至于上图所示其他的这几项都是系统根据纳税人的信息自动生成的,所以不能一条一条的输入或者如楼上所说建两个DW。就只能填完数据后直接保存。
I_am_Z 2013-05-15
  • 打赏
  • 举报
回复
你可以在界面上做2个dw,一个dw1数据源连结table_1,另一个dw2连接table_2,这样,你在保存的时候,将dw1中所有记录便利后,插入dw2,最后,两个dw一起update就好了。
灰色 2013-05-14
  • 打赏
  • 举报
回复
建议使用触发器。
ha_ha_ha_00 2013-05-14
  • 打赏
  • 举报
回复
table_2是建立起来做图表分析的,它要把所有的都汇总在一起,table_1只是table_2数据来源的一部分,不管我怎么弄,就只能保存上图所示的第三行,其他两行数据都不能保存
zhangyangziwo 2013-05-13
  • 打赏
  • 举报
回复
用数据库触发器, 业务逻辑也有问题, 为啥要保存两份呢?
ha_ha_ha_00 2013-05-13
  • 打赏
  • 举报
回复
求赐教啊!!!!!
加载更多回复(4)

740

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 脚本语言
社区管理员
  • 脚本语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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