English 中文(简体)
行控件指向已删除的行或标记删除的行
原标题:Row handle referred to a deleted row or a row marked for deletion

我们有一个老网站给我们一个错误。 它使用 VBScript, 而 DB 是 SQL 服务器 2005 。

这是代码:

set oNotes = server.CreateObject("SCRIPTING.DICTIONARY")

openSQL "SELECT * FROM v_client_notes WHERE contact_id = " &_
    my_contactID & " ORDER BY client_notes_duedate ASC"

do while rs.eof = false
    set temp = server.CreateObject("SCRIPTING.DICTIONARY")
    load_rs temp, rs
    set oNotes(trim(rs("client_notes_id"))) = temp
    rs.movenext error on this line
loop

错误 :

SQL 服务器错误80040e23 的 Microsoft OLE DB 提供者

行控件指向已删除的行或标记为要删除的行。

此错误并非经常发生, 仅为了记录组与某些联系人_ id s 返回。 无法确定工作与不工作之间的差别 。

正如您可以看到在 rs.movenext 上发生错误 。

我已确保该表有一个主要的密钥(client_notes_id)。

谢谢你的帮助!

<强 > EDIT

以下是装载器的代码 :

function load_rs(dict,Byref record)
    for each thing_record in record.fields
        dict(thing_record.name) = trim(thing_record.value)
    next
end function

这里是更新脚本。 这是在另外一页上, 我张贴到( 类似 AJAX 样式) :

If request("client_notes") <> "" then
        client_notes_subject = request("client_notes_subject")
        client_notes_postedby = session("user") 
        client_notes_duedate = request("client_notes_duedate")
        if client_notes_duedate = "" then
            client_notes_duedate = NULL
        end if
        client_notes_date_entered = request("client_notes_date_entered")
        client_notes =  request("client_notes")
        if isnumeric(request("contactID")) then contact_id = request("contactID")
        if clientnotes_id="" then clientnotes_id="0"
        openSQL("SELECT * FROM client_notes WHERE client_notes_id=" & clientnotes_id)
        if rs.EOF then
            openSQL("SELECT newid()")
            client_notes_guid = rs(0)
            openSQL("select * from client_notes")
            rs.addnew
        else
            client_notes_guid = rs("guid")
            rs.update
        end if 

        rs("contact_id") = contact_id   
        rs("client_notes_subject") = client_notes_subject
        rs("client_notes_postedby") = session("user")
         if client_notes_duedate <> Null then
        rs("client_notes_duedate") = client_notes_duedate 
         end if
        rs("client_notes_date_entered") = client_notes_date_entered
        rs("client_notes") = client_notes
        rs("guid")=client_notes_guid
        rs.update

         if client_notes_duedate = Null then 
            sqlSetNullnotes = "UPDATE client_notes SET client_notes_duedate = NULL WHERE client_notes_id=" & clientnotes_id
            opensql sqlSetNullnotes
         end if

        next_due_date = request("next_due_date")
        if next_due_date = "" then
            next_due_date = NULL
        end if

        openSQL("SELECT * FROM " & MainContactsDB & " WHERE Contact_ID=" & contactID)
        rs("Last_Contact_Date") = client_notes_date_entered
        rs("Next_Contact_Date") = next_due_date
        rs.update
    end if

OpenSQL 方法 :

Set rs = Server.CreateObject("ADODB.Recordset")
function openSQL(SQLrs)
    if rs.state = 1 then rs.close
     response.write sqlRS
    rs.Open SQLrs, conn, 3, 3
end function
最佳回答

好吧,我可以解决这个问题。

我正在对一个合并两个表格的视图进行查询。

问题在于,有时在没有用户 id 的情况下提交便条,因此从一张表格到另一张表格的连接没有工作,因此用户 id 无效。

"SELECT * FROM v_client_notes WHERE contact_id = " & my_contactID & " AND user_id IS NOT NULL ORDER BY client_notes_duedate ASC"

现在错误不再出现, 它只是排除了没有指定给某人的笔记。 所以现在要确定为什么没有指定给某人。

谢谢!

问题回答

您目前拥有 :

openSQL("SELECT * FROM " & MainContactsDB & " WHERE Contact_ID=" & contactID)
rs("Last_Contact_Date") = client_notes_date_entered
rs("Next_Contact_Date") = next_due_date
rs.update

为什么 ers.EOF 无法处理? 也许这就是代码正在死亡的地方?

在表格中应该有一个主要关键键,然后,在没有任何问题需要更新该表格之后,您希望对此采取行动的表格中应该有一个主关键键。





相关问题
Export tables from SQL Server to be imported to Oracle 10g

I m trying to export some tables from SQL Server 2005 and then create those tables and populate them in Oracle. I have about 10 tables, varying from 4 columns up to 25. I m not using any constraints/...

SQL server: Can NT accounts be mapped to SQL server accounts

In our database we have an SQL server account that has the correct roles to access some of the databases. We are now switching to windows authentication and I was wondering if we can create a NT user ...

SQL Server 2000, ADO 2.8, VB6

How to determine if a Transaction is active i.e. before issuing Begin Transaction I want to ensure that no previous transaction are open.. the platform is VB6, MS-SQL Server 2000 and ADO 2.8

热门标签