在添加资料时出现错误号:-2147467259,我在网上查了一下,描述如下:错 误 号:-2147467259
错误描述:未能为数据库 'www92yw' 中的对象 'PE_Article' 分配空间,因为文件组 'PRIMARY' 已满。
错误来源:Microsoft OLE DB Provider for SQL Server 
原因分析:SQL空间已满了或者空间已不够用了。
解决方法:增加SQL空间或收缩日志。我用的是Access数据库,我把字段的长度都增长了,应该够用的了,但还是这样的错误,请问怎么解决?

解决方案 »

  1.   

    原因:
    有几个主要的错误原因:
    这个错误发生在当你的程序试图执行更新数据库或其它类似操作时。这是因为1、最普遍的原因是匿名用户帐号(IUSR_MACHINE)对该数据库文件没有写权限。 
     要解决这个问题,在管理器中调整数据库文件的属性,让匿名用户有正确的权限。当使用ACCESS数据库时,不仅要给文件写的权限,还要给该目录写 的权限,因为Jet需要在该目录建立一个.ldb文件。2、第二个原因是数据库没有使用正确的模式打开。应该使用下面的方法打开。
      SQL = "UPDATE Products Set UnitPrice = 2;"
      Set Conn = Server.CreateObject("ADODB.Connection")
      Conn.Mode = 3   '3 = adModeReadWrite
      Conn.Open "myDSN"
      Conn.Execute(SQL)
      Conn.Close
      注意默认的Mode是设置0(adModeUnknown),它是允许更新的。
    3、还有可能是在ODBC管理器中将该DSN的只读选项选中。
    4、你是在同时更新两个表中的字段,也会出现这个错误信息,解决办法是分开来更新这两个表中各自字段。
    5、当你使用了一个从低版本中(如ACCESS2.0,ACCESS7.0)载入到高版本(ACCESS 2000)中的查询时,在执行这个查询是会出现该错误。
      

  2.   

    楼上的说得很详细,谢谢,不过我还是找不到原因.贴上我的代码看看.Private Sub cmdSave_Click()
    On Error GoTo errHandle    If cmdAdd.Enabled = False Then     '点击增加按钮时按钮不可用
            sqlstr = "insert into Provider(ProID,ProType,ProName,ProAddress,ProLinkMan,ProPhone,ProFax," & _
            "ProWebSite,ProEmail,ProMoneyType,ProPayType,ProPayTimeLimit,ProAppreciateTax) values" & _
            "('" & Trim(Text1.Text) & "','" & Combo1.Text & "', '" & Trim(Text2.Text) & "','" & Trim(Text3.Text) & "'," & _
            "'" & Trim(Text4.Text) & "','" & Trim(Text5.Text) & "','" & Trim(Text6.Text) & "','" & Trim(Text7.Text) & "'," & _
            "'" & Trim(Text8.Text) & "','" & Combo2.Text & "','" & Trim(Text9.Text) & "','" & Trim(Text10.Text) & "'," & _
            "'" & Trim(Text11.Text) & "')"
        ElseIf cmdUpdate.Enabled = False Then       '点击修改按钮时按钮不可用
            sqlstr = "update Provider set ProType='" & Trim(Combo1.Text) & "',ProName='" & Trim(Text2.Text) & "'," & _
            "ProAddress='" & Trim(Text3.Text) & "',ProLinkMan='" & Trim(Text4.Text) & "',ProPhone='" & Trim(Text5.Text) & "'," & _
            "ProFax='" & Trim(Text6.Text) & "',ProWebSite='" & Trim(Text7.Text) & "',ProEmail='" & Trim(Text8.Text) & "'," & _
            "ProMoneyType='" & Combo2.Text & "',ProPayType='" & Trim(Text9.Text) & "',ProPayTimeLimit=" & _
            "'" & Trim(Text10.Text) & "',ProAppreciateTax='" & Trim(Text11.Text) & "' where ProID='" & Trim(Text1.Text) & "'"
        End If
        Set rst = Nothing
        Set rst = New ADODB.Recordset
        rst.CursorLocation = adUseClient
        rst.Open sqlstr, conn, adOpenKeyset, adLockReadOnly
        rst.Close
        Set rst = Nothing
        If cmdAdd.Enabled = False Then
            MsgBox "添加資料成功", vbInformation, "提示"
        ElseIf cmdUpdate.Enabled = False Then
            MsgBox "修改資料成功", vbInformation, "提示"
        End If
        cmdAdd.Enabled = True
        cmdUpdate.Enabled = True
        Text1.Enabled = True         'Text1为编号,作为修改数据时的条件
        Text1.BackColor = &H80000005
        Call ShowData
        StatusBar1.Panels(2).Text = rst.RecordCount   '数据集记录数
        If (Not rst.BOF) And (Not rst.EOF) Then
            cmd(0).Enabled = True      '第一条记录
            cmd(1).Enabled = True      '上一条记录
            cmd(2).Enabled = True      '下一条记录
            cmd(3).Enabled = True      '末一条记录
            DataGrid1.Enabled = True
        End If
    Exit Sub
    errHandle:
        MsgBox "新增或修改資料失敗,錯誤號:" & Err.Number, vbInformation, "提示"
        Err.Clear
    End SubSub ShowData()          '显示所有数据
        Set rst = New ADODB.Recordset
        rst.CursorLocation = adUseClient
        sqlstr = "select ProID as 供應商編號,ProType as 類別,ProName as 供應商名稱,ProAddress as 供應商地址," & _
        "ProLinkMan as 聯絡人,ProPhone as 電話,ProFax as 傳真,ProWebSite as 網站,ProEmail as [E-mail]," & _
        "ProMoneyType as 幣別,ProPayType as 付款方式,ProPayTimeLimit as 付款期限,ProAppreciateTax as " & _
        "增值稅 from Provider"
        rst.Open sqlstr, conn, adOpenKeyset, adLockReadOnly
        Set DataGrid1.DataSource = rst
    End Sub