我希望在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。
答案 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