You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET运行时TempTable无数据但原DataTable有数据如何解决

错误原因排查

  • 运行时RatesDataSet.HTS未实际填充数据。设计器预览时的数据集和运行时使用的数据集是两个独立实例,若运行时没有调用对应TableAdapter的Fill方法加载数据,运行时的表自然为空。你可以在TempTable = RatesDataSet.HTS行打断点,查看RatesDataSet.HTS.Rows.Count的数值,确认这一步原表是否有数据。
  • 排序列名错误被异常捕获逻辑吞掉。你代码中排序使用的列名HTS Code NA如果和实际列名不一致,执行DV.Sort时会抛出异常,若你上层代码有吞异常的逻辑,会直接跳出当前方法,导致你误以为是TempTable为空才没进入循环。
  • DefaultView被设置了过滤条件。如果之前的代码给RatesDataSet.HTS.DefaultView设置过RowFilter或者RowStateFilter,会导致符合条件的行数量为0,DV.ToTable生成的表自然无数据。

优化后的代码

Public Sub HTSCode()
    ' 先确认原表有数据
    If RatesDataSet.HTS.Rows.Count = 0 Then
        ' 这里补充填充数据集的逻辑,比如对应的TableAdapter.Fill(RatesDataSet.HTS)
        Exit Sub
    End If
    
    ' 直接复制原表数据,避免引用原表的视图设置
    Dim TempTable As DataTable = RatesDataSet.HTS.Copy()
    ' 先校验列存在再排序,避免列名写错的问题
    If Not TempTable.Columns.Contains("HTS Code NA") Then
        Throw New Exception("指定的排序列不存在")
    End If
    Dim DV As DataView = TempTable.DefaultView
    DV.Sort = "HTS Code NA"
    
    TempTable = DV.ToTable()
    For Each Row As DataRow In TempTable.Rows
        ' 执行业务逻辑
    Next
End Sub

内容的提问来源于stack exchange,提问作者Mike

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 06:36:00