VB.Net DataSet 中数据筛选?急,在线等!

z_f_p 2011-07-12 05:39:07

Dim ds1 As DataSet = objManagerId.GetCarstorehouse(Me.ddlProvince.SelectedValue, Me.ddlCity.SelectedItem.Text, "", 1)

我想从ds1筛选出"location_type=1"的数据,怎样从dataSet 中筛选???
我做的思路是:

Dim ds1 As DataSet = objManagerId.GetCarstorehouse(Me.ddlProvince.SelectedValue, Me.ddlCity.SelectedItem.Text, "", 1)
Dim dr As DataRow() = ds1.Tables(0).Select(" where location_type=1")
Dim ds As New DataSet
ds.Tables(0).Rows.Add(dr)


但是报错: Dim dr As DataRow() = ds1.Tables(0).Select(" where location_type=1") 语法对不对????
我知道C#中可以这样写,不知道VB中行不???
急!!!
...全文
430 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
z_f_p 2011-07-14
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 linjimu 的回复:]

VB.NET code

Dim dt As New DataTable
Dim DataRow As DataRow
'--关键代码--
dt = ds.Tables(0).Clone
'--
For Each DataRow In ds.Tables(0).Select("location_type=1")
dt.ImportRow(DataRow)
Next
[/Quote]

楼上这位仁兄方法不错,我少写了dt = ds.Tables(0).Clone 所以没办法得到DataTable 的列名,故取出的值也为空,现在问题以解决,谢谢大家了!
z_f_p 2011-07-14
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 lhblxm 的回复:]

新建一表是可以的,楼主的代码也没什么问题,
建议楼主先做一个简单的测试;
1,先从数据库读取一个表的数据到内存ds.tables(0)
2,NEW一个表tb
3, tb.importrow(ds.tables(0).rows(0))
看看是否能复制行

我还是觉得ds.Tables(0).Select("location_type=1")中没有数据行
[/Quote]
我调试了好多次,可以复制行,只不过是列名为空,值也为空,ds.Tables(0).Select("location_type=1")
是有21行的,但是tb.importrow() 执行后,导入的是21行空值,而且DataTable的列名也为空!!!
所以绑定之后显示的也为空!怎么回事?
lhblxm 2011-07-14
  • 打赏
  • 举报
回复
新建一表是可以的,楼主的代码也没什么问题,
建议楼主先做一个简单的测试;
1,先从数据库读取一个表的数据到内存ds.tables(0)
2,NEW一个表tb
3, tb.importrow(ds.tables(0).rows(0))
看看是否能复制行

我还是觉得ds.Tables(0).Select("location_type=1")中没有数据行
沐NeMo 2011-07-14
  • 打赏
  • 举报
回复

Dim dt As New DataTable
Dim DataRow As DataRow
'--关键代码--
dt = ds.Tables(0).Clone
'--
For Each DataRow In ds.Tables(0).Select("location_type=1")
dt.ImportRow(DataRow)
Next
z_f_p 2011-07-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lhblxm 的回复:]

不可能,除非你选择的结果没有数据行,
建议先查一下dr.count
,还有一个就是表的结构是否一致
[/Quote]
新建的DataTable需要指定列名吗?我是新建了一个DataTable,然后把筛选的DataRow直接ImportRow上去了。

Using objManagerId As New Addresses
Dim ds As DataSet = objManagerId.GetCarStorehouse(Me.ddlProvince.SelectedValue, Me.ddlCity.SelectedItem.Text, "", 1)
Dim dt As New DataTable
Dim DataRow As DataRow
For Each DataRow In ds.Tables(0).Select("location_type=1")
dt.ImportRow(DataRow)
Next

If Not dt Is Nothing AndAlso dt.Rows.Count > 0 Then
Me.ddlManagerId.DataSource = dt.DefaultView
Me.ddlManagerId.DataTextField = "id"
Me.ddlManagerId.DataValueField = "id"
Me.ddlManagerId.DataBind()
End If
End Using
Next


可是值为空?明明有符合条件的数据,就是赋不上值??
fanr_forever 2011-07-13
  • 打赏
  • 举报
回复
ds.Merge 试试
前提要求表结构一样
ds.Add(ds1.Tables(0).Clone)
ds.Merge(dr)
lhblxm 2011-07-13
  • 打赏
  • 举报
回复
不可能,除非你选择的结果没有数据行,
建议先查一下dr.count
,还有一个就是表的结构是否一致

z_f_p 2011-07-13
  • 打赏
  • 举报
回复
用importrow 方法但是显示出来的结果却为空,不知道什么情况!?
lhblxm 2011-07-12
  • 打赏
  • 举报
回复
要用datatable.importrow方法
z_f_p 2011-07-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dopsop110 的回复:]
Dim dr As DataRow() = ds1.Tables(0).Select(" where location_type=1")
Dim ds As New DataSet
ds.Tables(0).Rows.Add(dr)

语法问题?试试Dim dr As DataRow() = ds1.Tables(0).Select(" location_type=1")
还有搜……
[/Quote]

怎么才能把dr 加到新的DataSet中???感激不尽!
暖枫无敌 2011-07-12
  • 打赏
  • 举报
回复
没有where的,去掉


Dim dr As DataRow() = ds1.Tables(0).Select("location_type=1")
dopsop110 2011-07-12
  • 打赏
  • 举报
回复
Dim dr As DataRow() = ds1.Tables(0).Select(" where location_type=1")
Dim ds As New DataSet
ds.Tables(0).Rows.Add(dr)

语法问题?试试Dim dr As DataRow() = ds1.Tables(0).Select(" location_type=1")
还有搜出来的dr已经属于别的表了,ds.Tables(0).Rows.Add(dr)是直接Add不了的。

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧