作者:陶清 email: taoqing@163.net
identity字段其会自动增长,是做为一个表的主关键字的好办法,在设计MIS系统时表与表之间用这个identity作为搜索和关联用,这样对于一个字典表来说,编码可以允许最终客户随时修改,非常灵活和方便。 但用到数据的导入时,就会遇到一些麻烦,因为identity字段是由后台数据库直接增加的。想直接修改后台数据库默认是不允许的。 这时候就要在pb中调用后台数据库的命令 set identity on (本方法在sql anywher和ms sql server中都有, 对oracle的命令你可以自行查询相关的命令),然后才可以对identity进行直接的更新。同时在设计dw的update属性的时候也要注意,不要在identity选择任何字段(默认情况下pb会自动将identity字段给选中,你需要在dw的设计状态下指定其为none即可),如下图所示
演示代码如下: 假设你已经将一张表导出到一个名为 backup.txt 的文件中,利用dw_1.saveas() 就可以将数据选择存为.txt文件
string ls_tablename, ls_sql
ls_tablename = "dict1" //假设你的table名称为 dict1 ls_sql = "SET IDENTITY_INSERT " + ls_tablename + " ON " sqlca.autocommit = true //调用系统命令必须将autocommit置为true EXECUTE IMMEDIATE :ls_sql; //--------------1------------------// dw_1.ImportFile("backup.txt")
If dw_1.update() = 1 Then //更新成功 commit; Else rollback; //失败 End If //将identity恢复为off ls_sql = "SET IDENTITY_INSERT " + ls_tablename + " OFF " sqlca.autocommit = true EXECUTE IMMEDIATE :ls_sql; sqlca.autocommit = False
|