起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 303|回复: 8

【结贴】[问题]从数据集复制问题

[复制链接]
发表于 2010-5-11 09:50:07 | 显示全部楼层 |阅读模式
在主数据集ID变化的情况下,复制从数据的数据。
就是在同一个主(从)数据集里面,复制数据,除了关联字段不同,其它都相同。
是不是可以为主表的一个个字段赋值?根据从表的主键(多个),查询出数据,再循环新增赋值?

有更好的办法吗?

需求是,从查询功能勾选要修改的数据,跳转到新增功能,并复制要修改的数据,从表的主键和主从的关联字段改变,其它不变。
回复

使用道具 举报

发表于 2010-5-11 10:26:24 | 显示全部楼层
好像也没什么更好的方法了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-5-11 10:28:58 | 显示全部楼层
我看到论坛里说可以用Query先存储数据,再赋值到数据集,具体怎么做?另外采用存储过程,会不会是更好的办法?
回复 支持 反对

使用道具 举报

发表于 2010-5-11 10:31:59 | 显示全部楼层
那就要看你的需要了,1楼的操作是否要直接保存的数据库中,如果先不保存到数据库中的话,那还是用1楼的方式,如果可以直接保存到数据库中的,那么可以通过3楼的方式,直接发后台的sql产生数据,然后数据集进行刷新表现就可以了。存储过程的方式倒也可以,但我觉得如果数据量不是很大的话,就没必要吧。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-5-11 13:13:59 | 显示全部楼层
我考虑用存储过程做,但是确实数据量不是很大,而且也不用先保存到数据库,而且我现在遇到问题,调用存储过程老是报错,我不知道怎么改。
因为1楼的方法太麻烦,字段有30到40个,3楼的方法具体怎么做,可以说详细一点吗?Query查询到的数据怎么赋给从数据集?另外主从关系对复制数据有影响吗?

以下是存储过程
CREATE OR REPLACE PROCEDURE PROC_ADD_UPDATE_MAKEUP(P_FEE_NO      IN VARCHAR2(36),
                                                   P_PRIMARY_IDS IN VARCHAR2(1000)) IS
BEGIN
  INSERT INTO FEE_MAKEUP_MARGIN(
         FEE_NO,
         PRIMARY_ID,
         STATUS,
         DISTRICT_CODE,
         DISTRICT_NAME,
         AREA_CODE,
         AREA_NAME,
         UPPER_BUSS_CODE,
         UPPER_BUSS_NAME,
         UPPER_BUSS_LEVEL,
         BUSS_CUST_NO,
         BUSS_NAME,
         BUSS_LEVEL,
         CUST_CODE,
         CUST_NAME,
         CUST_TYPE,
         PRODS_NO,
         PROD_NAME,
         PROD_SPEC,
         BUSS_PURCHASE_PRICE,
         COMMERCIAL_REBATE_AMOUNT,
         PRODUCT_UPSET,
         BID_PRICE,
         EXPECT_GROSS_PRICE,
         PRODUCT_GROSS_MARGIN,
         DIFFERENCE_PRICE,
         D_P_PERCENT,
         BC_UPPER_LIMIT,
         D_B_DIFFERENCE,
         BC_WAY)
         SELECT P_FEE_NO,
         SEQ_FEE_DIFFERENCE.NEXTVAL,
         0,
         DISTRICT_CODE,
         DISTRICT_NAME,
         AREA_CODE,
         AREA_NAME,
         UPPER_BUSS_CODE,
         UPPER_BUSS_NAME,
         UPPER_BUSS_LEVEL,
         BUSS_CUST_NO,
         BUSS_NAME,
         BUSS_LEVEL,
         CUST_CODE,
         CUST_NAME,
         CUST_TYPE,
         PRODS_NO,
         PROD_NAME,
         PROD_SPEC,
         BUSS_PURCHASE_PRICE,
         COMMERCIAL_REBATE_AMOUNT,
         PRODUCT_UPSET,
         BID_PRICE,
         EXPECT_GROSS_PRICE,
         PRODUCT_GROSS_MARGIN,
         DIFFERENCE_PRICE,
         D_P_PERCENT,
         BC_UPPER_LIMIT,
         D_B_DIFFERENCE,
         BC_WAY FROM FEE_MAKEUP_MARGIN WHERE PRIMARY_ID IN (P_PRIMARY_IDS);
END PROC_ADD_UPDATE_MAKEUP;
谢谢!

1.jpg

25.55 KB, 下载次数: 165

回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-5-11 13:44:51 | 显示全部楼层
我使用了 aQuery查询到数据,
          DataSetBrokerBC_DETAIL_DT.DataSet.AppendData(aQuery.data, True);
执行到这里出错,请问怎么复制Query的数据?

2.jpg

8 KB, 下载次数: 170

回复 支持 反对

使用道具 举报

发表于 2010-5-11 14:04:20 | 显示全部楼层
我考虑用存储过程做,但是确实数据量不是很大,而且也不用先保存到数据库
---------那么你如果用存储过程的话,那需要你自己做一张临时表,用于存储数据,否则的话就还需要自己去删除(按你5楼的,应该是直接把数据插入到 FEE_MAKEUP_MARGIN表中了)

存储过程在平台中的用法请参考http://bbs.justep.com/forum.php?mod=viewthread&tid=15936
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-5-11 14:12:49 | 显示全部楼层
谢谢。我的意思是,我原来用存储过程出了错,现在差不多解决了,还有一个问题是,我传入的ID,是有几个的,也就是拼凑的字符串,'123,124,125'这样的,在存储过程里设置它的where条件是ID in ('123,124,125'),这样是不对的,怎么去掉这两个单引号呢?我改成'‘123’,‘124’,‘125’',可是还是有两个单引号在外面,使其变成一个字符串!

另外,我如果采用Query方案,Query查询出来数据,如何复制给从数据集?也要循环一个个赋值吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-5-11 16:41:17 | 显示全部楼层
这里先结了吧。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-8 22:06 , Processed in 0.043018 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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