2010-09-30 46 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

Whew-終於發現問題... – Sparky 2010-10-06 16:52:58

+0

我會很快發佈一個答案... – Sparky 2010-10-06 16:53:15

回答

1

這個問題需要一些挖掘:C#函數正在返回一個UTF-8字符串。 ASP代碼確實將代碼頁設置爲65001來處理UTF-8,這就是變量顯示正確值的原因。但是,記錄集中的某些字段類型不能保存UTF-8數據。另外,ASP代碼上的ON ERROR處理沒有發現錯誤,(Err.number爲零)。但底層連接確實報告了錯誤。

一旦我適應代碼,如果Err.Number的或連接出現錯誤引發錯誤,這個問題變得很明顯,我能夠制定一個變通......

感謝大家誰了時間看我的問題,我很感激

+0

嗨,你能回答[這個](http://stackoverflow.com/questions/28457538/sql-trigger-after-insert-update-another-table-with-conditions),謝謝 – stom 2015-02-11 21:26:58