2010-09-30 2 views
0

У меня есть странное здесь ..Классический ASP записей не позволяя обновления поля

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

+0

Уот - Наконец нашел проблему ... – Sparky

+0

Я отправлю ответ в ближайшее время ... – Sparky

ответ

1

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

После того, как я изменить код, чтобы вызвать ошибку, если err.number или соединения произошла ошибка, проблема стала очевидной, и я смог развить работу вокруг ...

Спасибо всем, кто взял время, чтобы посмотреть на мою проблему, я ценю это

+0

привет, вы можете ответить [это] (http://stackoverflow.com)/questions/28457538/sql-trigger-after-insert-update-another-table-with-conditions), спасибо – stom

Смежные вопросы