Классический набор записей ASP не допускает обновления поля - PullRequest
0 голосов
/ 01 октября 2010

У меня здесь странный ..

Я создаю набор записей, используя Classic 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 # работает, я использую его и другие места в приложении.

1 Ответ

1 голос
/ 07 октября 2010

Проблема заняла некоторое копание: функция C # возвращала строку UTF-8.Код ASP установил кодовую страницу 65001 для работы с UTF-8, поэтому переменная показала правильное значение.Однако некоторые типы полей в наборе записей не могут содержать данные UTF-8.Кроме того, обработка ON ERROR в коде ASP не уловила ошибку (Err.number был равен нулю).но базовое соединение сообщило об ошибке.

После того, как я адаптировал код, чтобы вызвать ошибку, если в ERR.NUMBER или в Connection произошла ошибка, проблема стала очевидной, и я смог разработать обходной путь ...всем, кто нашел время посмотреть на мою проблему, я ценю это

...