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

从数据库取数据填充ComboBox遇转换错误,加.ToString仍无显示

问题解决:ComboBox无法加载数据库日期数据

核心错误分析

你两段代码的问题出在循环内引用数据行的方式错误:
循环中已经用For Each row As DataRow In dt.Rows遍历每一行,但你始终调用dt.Rows()("ItemDateEntry")——这里的dt.Rows()未指定行索引,无法正确获取当前行的字段值,导致要么类型转换失败,要么没有有效数据添加到ComboBox。

修正后的代码

直接使用循环变量row访问当前行字段,同时对日期类型做安全的字符串转换:

' 确保连接打开
If Not conn.State = ConnectionState.Open Then
    conn.Open()
End If

' 查询并填充数据
Dim da As New OleDb.OleDbDataAdapter("SELECT DISTINCT ItemDateEntry FROM Item", conn)
Dim dt As New DataTable
da.Fill(dt)

' 清空ComboBox原有项(避免重复加载)
DateYear.Items.Clear()

' 遍历数据行添加到ComboBox
For Each row As DataRow In dt.Rows
    ' 检查字段值不为空,再转换为字符串
    If Not IsDBNull(row("ItemDateEntry")) Then
        DateYear.Items.Add(CDate(row("ItemDateEntry")).ToString("yyyy-MM-dd")) ' 可自定义日期显示格式
    End If
Next

' 使用后关闭连接,释放资源
If conn.State = ConnectionState.Open Then
    conn.Close()
End If

额外优化建议

  • 增加DateYear.Items.Clear()避免重复加载数据
  • 加入IsDBNull判断,防止数据库空值引发报错
  • 自定义日期格式(如yyyy-MM-dd)让显示更规范
  • 数据库连接使用后及时关闭,避免资源泄漏

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 08:15:34