• 当前位置:首页>>PowerBuilder>>PowerBuilder脚本>>对含有自动增长类型identify字段的table导入数据的方法
  • 对含有自动增长类型identify字段的table导入数据的方法
  • 作者:陶清 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 IDENT99vY_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 IDENT99vY_INSERT " + ls_tablename + " OFF "
    sqlca.autocommit = true
    EXECUTE IMMEDIATE :ls_sql;
    sqlca.autocommit = False

    [1]

  • 上一篇:如何在pb中创建COM组件,并在asp中调用并返回结果集
    下一篇:怎样返回下拉列表DDLB当前选中项的索引号?