2012-09-12 44 views
0

什麼是vb.net相當於或類似的recordset.underlyingvalue和recordset.value在vb中?轉換經典vb到vb.net

我將VB應用程序到vb.net,我已經替換爲數據集的記錄,但我一直沒能想出解決辦法。任何幫助將非常感激。

我已經嘗試製作數據集的副本並比較值來跟蹤更改但看起來效率不高。這是我試圖轉換的一段代碼。

For Each fld In rs.Fields 
     bfldChanged = False 
     Select Case fld.Type 
      Case adDate, adDBDate, adDBTime, adDBTimeStamp:      
       If IsDate(fld.UnderlyingValue) And Not IsDate(fld.Value) Then 
        bfldChanged = True 
       ElseIf Not IsDate(fld.UnderlyingValue) And IsDate(fld.Value) Then 
        bfldChanged = True 
       ElseIf IsDate(fld.UnderlyingValue) And IsDate(fld.Value) Then 
        If fld.UnderlyingValue <> fld.Value Then 
         bfldChanged = True 
        Else 
         bfldChanged = False 
        End If 
       Else 
        bfldChanged = False 
       End If 
      Case Else: 
       If (fld.UnderlyingValue <> fld.Value) Then 
        bfldChanged = True 
       Else 
        bfldChanged = False 
       End If 
     End Select 
Next 

回答

3

沒有與該特定屬性等價的內容。 .NET中的數據訪問與VB6和之前的數據訪問非常不同。該DataTable只是勉強像一個RecordSet。

然而,看着代碼,它看起來像你只是檢查,看看錶中是否包含更改。您可以使用DataTable.GetChanges()方法更簡單地確定這一點。


不是正式答案的一部分,而是一般性建議。

我已經將大量的VB6應用程序轉換爲.NET應用程序,並且經驗告訴我,逐行轉換嘗試幾乎總是一個壞主意。這兩者是完全不同的,並且在任何情況下,它都被證明是更加高效和無恐怖的,從頭開始。確保我理解VB6應用程序所做的(requirementes)全部映射出來,流程圖所有內容,然後從頭開始構建.NET版本。我除了頭疼之外別無他法。

+1

通過非常走出去的過程往往說明有多少COM等人在VB6,這往往阻止你真的獲得了一些VB.NET的過渡漂亮的好處,也引擎蓋下埋。 –

+0

感謝您指引我朝着正確的方向發展。我在datatable.getchanges()上做了一個小測試,它似乎正是我需要的。我同意你們倆的觀點,即開始新鮮嘗試逐行轉換總是更好。我剛剛開始使用.NET,項目截止日期的壓力似乎導致我陷入了糟糕的編程習慣。但我會盡力在這方面做得更好。它只是非常有意義。再次感謝 – atar

+0

很高興幫助。祝你好運!歡迎來到.NET。實際上,一旦你瞭解了數據訪問的差異,其實並沒有太多的學習曲線。 – David