【问题标题】:Classic ASP recordset not allowing field update经典 ASP 记录集不允许字段更新
【发布时间】:2010-09-30 20:57:13
【问题描述】:

我这里有一个奇怪的..

我使用经典 ASP 创建记录集

  Set rs = server.CreateObject("ADODB.Recordset")            
  rs.ActiveConnection = g_conn
        rs.CursorLocation=3                 '   adUseClient
        rs.LockType= 3                      '   adLockBatchOptimistic  
        on error resume next
        rs.Open strQuery    
        rs.activeConnection = nothing     
        on error goto 0

一切正常,记录集按预期创建。我现在想用新值更新记录集中的纯文本字段...

            do while not rs.eof 
                for each fld in rs.fields
                    if ( instr(",129,130,201,202,203,",","+cStr(rtrim(fld.type))+",")>0) then
                        theStr = g_VBPM.PMDecode(rs(fld.name))
                        'rs(fld.name).value= ucase(rs(fld.name))     ' works
                        rs(fld.name).value= trim(theStr)             ' does not work
                    end if                            
                next                        
                rs.movenext
            loop                    

当我用字符串的大写文本替换字段值时,它可以工作。记录集反映了字段内容的大写版本。但是,当我用从 C# DLL 返回的字符串替换它时,没有返回错误消息,但记录集中的字段值没有更改。 C# 代码的返回值包含正确的内容,如果我执行 response.write,我可以看到它。但是,当我尝试将该字符串放入断开连接的记录集中时,它不起作用..根本没有错误

有人见过这种行为吗?有任何想法吗? C# 代码确实有效,我在应用程序的其他地方使用它。

【问题讨论】:

  • 呼——终于找到问题了……
  • 我会尽快发布答案...

标签: c# asp-classic recordset


【解决方案1】:

问题进行了一些挖掘:C# 函数正在返回一个 UTF-8 字符串。 ASP 代码确实将代码页设置为 65001 以处理 UTF-8,这就是变量显示正确值的原因。但是,记录集中的某些字段类型不能保存 UTF-8 数据。此外,对 ASP 代码的 ON ERROR 处理没有捕捉到错误,(Err.number 为零)。但底层连接确实报告了错误。

一旦我修改代码以在 ERR.NUMBER 或 Connection 出现错误时引发错误,问题就变得明显,我能够开发解决方法...

感谢所有花时间查看我的问题的人,我很感激

【讨论】:

  • 嗨,你能回答this吗,谢谢
猜你喜欢
  • 2010-12-12
  • 1970-01-01
  • 1970-01-01
  • 2020-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多