编码文件覆盖

时间:2014-02-07 18:06:15

标签: vba ms-access-2007 ibm-midrange

我希望在VBA中创建一个文件覆盖。 我有一个链接到数据库的AS / 400文件,但我需要覆盖该文件才能使用AS / 400文件的成员。在Access中运行报表的每个用户都将在AS / 400上拥有自己的成员。我需要这样做,以便多个用户可以同时运行报告。链接所有用户的文件是不可行的。 我发现了一些应该有效的陈述,但我不确定我是否正确填充了parm。 这就是我所拥有的:

rc = SQLAllocHandle(SQL_HANDLE_STMT, hstmt, hdbc)
If rc = SQL_SUCCESS Then
   stmt = "call qsys.qcmdexc(‘OVRDBF FILE(qspexrpt) TOFILE(bnldta/qspexrpt) MBR(" + userid + ") OVRSCOPE(*JOB)’, 0000000071.00000)”)"
   rc1 = SQLExecDirect(hstmt, stmt, SQL_NTS)  
End If

我期望发生的事情:链接文件将被OVRDBF命令中的文件成员覆盖。 问题是我没有在SQLAllocHandle语句的rc字段中成功返回0。

1 个答案:

答案 0 :(得分:2)

更好的选择是使用CREATE ALIAS语句创建指向QTEMP中的库/文件/成员的临时别名,并对其执行数据库操作:

CREATE ALIAS QTEMP.userid FOR BNLDTA.QSPEXPRT(userid)

rc = SQLAllocHandle(SQL_HANDLE_STMT, hstmt, hdbc)
If rc = SQL_SUCCESS Then
    stmt = "CREATE ALIAS QTEMP." + userid + " FOR BNLDTA.QSPEXRPT(" + userid + ")"
    rc = SQLExecDirect(hstmt, stmt, SQL_NTS)  
    If rc = SQL_SUCCESS Then
        stmt = "SELECT * FROM QTEMP." + userid
        rc = SQLExecDirect(hstmt, stmt, SQL_NTS)  
        If rc = SQL_SUCCESS Then
            . . .
        End If
    End If
End If