编写ASP时 Microsoft VBScript 运行时错误 (0x800A0046)
错误类型:MicrosoftVBScript运行时错误(0x800A0046)没有权限/Mis/hr/report/ReportToExcel.asp,第44行下面是Re...
错误类型:
Microsoft VBScript 运行时错误 (0x800A0046)
没有权限
/Mis/hr/report/ReportToExcel.asp, 第 44 行
下面是ReportToExcel.asp:(人事工资创建一个excel工资表)
<!--#include file="../../adovbs.inc"-->
<%
Public Sub ReportToExcel(TmpMonth)
'提取数据库中工资统计表的此月份记录
Dim cmd,rs
Set cmd= Server.CreateObject("ADODB.Command")
Set rs = Server.CreateObject("ADODB.RECORDSET")
'设置cmd的ActiveConnection属性,指定与其关联的数据库连接
cmd.ActiveConnection = Conn
cmd.CommandText = "CreateSalaryReport"
cmd.CommandType = adCmdStoredProc
'创建存储过程参数
cmd.Parameters("@@iM") = TmpMonth
cmd.Execute '执行存储过程
SqlStmt = "SELECT * FROM TmpTable ORDER BY 员工编号"
rs.Open SqlStmt,Conn,1,3
Irowcount = 0
Do While Not rs.EOF
'记录总数
Irowcount = Irowcount + 1
rs.MoveNext()
Loop
'如果记录为空,则退出程序
If Irowcount<1 Then
Response.Write "数据库中没有记录"
Response.End()
End If
'字段总数
Icolcount = rs.Fields.Count
'确保文件名唯一
strFileName = TmpMonth & ".xls"
strAppPath = Request.ServerVariables("PATH_TRANSLATED")
strAppPath = Left(strAppPath, InstrRev(strAppPath, "\"))
strFullPath = strAppPath & strFileName
'创建文件脚本对象
Set fs = server.CreateObject("scripting.filesystemobject")
'--假设你想让生成的EXCEL文件做如下的存放
filename = Server.MapPath(strFileName)
'--如果原来的EXCEL文件存在的话删除它
If fs.FileExists(filename) Then
fs.DeleteFile(filename)
End If
'--创建EXCEL文件
Set myfile = fs.CreateTextFile(filename,true)
Dim strLine,responsestr
strLine=""
For Each x In rs.fields
strLine= strLine & x.name & chr(9)
Next
'--将表的列名先写入EXCEL
myfile.writeline strLine
rs.MoveFirst()
Do While Not rs.EOF
strLine=""
For Each x In rs.Fields
strLine= strLine & x.value & chr(9)
Next
'--将表的数据写入EXCEL
myfile.writeline strLine
rs.MoveNext
Loop
rs.Close()
End Sub
%>
浏览器类型:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)
网页:
POST 36 ??? /Mis/hr/report/ReportCreate.asp
POST Data:
ryear=2018&rmonth=7&B1=%CC%E1+%BD%BB 展开
Microsoft VBScript 运行时错误 (0x800A0046)
没有权限
/Mis/hr/report/ReportToExcel.asp, 第 44 行
下面是ReportToExcel.asp:(人事工资创建一个excel工资表)
<!--#include file="../../adovbs.inc"-->
<%
Public Sub ReportToExcel(TmpMonth)
'提取数据库中工资统计表的此月份记录
Dim cmd,rs
Set cmd= Server.CreateObject("ADODB.Command")
Set rs = Server.CreateObject("ADODB.RECORDSET")
'设置cmd的ActiveConnection属性,指定与其关联的数据库连接
cmd.ActiveConnection = Conn
cmd.CommandText = "CreateSalaryReport"
cmd.CommandType = adCmdStoredProc
'创建存储过程参数
cmd.Parameters("@@iM") = TmpMonth
cmd.Execute '执行存储过程
SqlStmt = "SELECT * FROM TmpTable ORDER BY 员工编号"
rs.Open SqlStmt,Conn,1,3
Irowcount = 0
Do While Not rs.EOF
'记录总数
Irowcount = Irowcount + 1
rs.MoveNext()
Loop
'如果记录为空,则退出程序
If Irowcount<1 Then
Response.Write "数据库中没有记录"
Response.End()
End If
'字段总数
Icolcount = rs.Fields.Count
'确保文件名唯一
strFileName = TmpMonth & ".xls"
strAppPath = Request.ServerVariables("PATH_TRANSLATED")
strAppPath = Left(strAppPath, InstrRev(strAppPath, "\"))
strFullPath = strAppPath & strFileName
'创建文件脚本对象
Set fs = server.CreateObject("scripting.filesystemobject")
'--假设你想让生成的EXCEL文件做如下的存放
filename = Server.MapPath(strFileName)
'--如果原来的EXCEL文件存在的话删除它
If fs.FileExists(filename) Then
fs.DeleteFile(filename)
End If
'--创建EXCEL文件
Set myfile = fs.CreateTextFile(filename,true)
Dim strLine,responsestr
strLine=""
For Each x In rs.fields
strLine= strLine & x.name & chr(9)
Next
'--将表的列名先写入EXCEL
myfile.writeline strLine
rs.MoveFirst()
Do While Not rs.EOF
strLine=""
For Each x In rs.Fields
strLine= strLine & x.value & chr(9)
Next
'--将表的数据写入EXCEL
myfile.writeline strLine
rs.MoveNext
Loop
rs.Close()
End Sub
%>
浏览器类型:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)
网页:
POST 36 ??? /Mis/hr/report/ReportCreate.asp
POST Data:
ryear=2018&rmonth=7&B1=%CC%E1+%BD%BB 展开
2个回答
展开全部
你的文件系统应该是NTFS的,需要进行安全设置才能进行写入操作,
将你需要生成excel文件的文件夹,右键——属性——安全——添加,输入:everyone——点确定,在列表中选中everyone,在下面的选项中把“写入”这项的允许打上钩,确定,这样你就可以用上面的代码来在这个文件夹下面创建一个文件了!
另外如果你右键——属性后,没有看到“安全”这个选项,那么随便打开一个文件夹,上面菜单栏,工具——文件夹选项——查看,将下面的“使用简单文件共享”的钩去掉后就可以进行上面的安全设置了!
将你需要生成excel文件的文件夹,右键——属性——安全——添加,输入:everyone——点确定,在列表中选中everyone,在下面的选项中把“写入”这项的允许打上钩,确定,这样你就可以用上面的代码来在这个文件夹下面创建一个文件了!
另外如果你右键——属性后,没有看到“安全”这个选项,那么随便打开一个文件夹,上面菜单栏,工具——文件夹选项——查看,将下面的“使用简单文件共享”的钩去掉后就可以进行上面的安全设置了!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询