在DataSet中搜索数据(不是难,只是我不会)

tl_pear 2004-10-15 11:09:17
如:在一个DataTable中有字段:ID,NAME,DTIME
这样从DataTable中找到NAME为某一值的信息。

我知道在DataSet中搜索数据有DataTable.Rows.Find和DataTable.Select。
但是我不会用请给个例子。
...全文
469 33 打赏 收藏 转发到动态 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
shiningsun33 2004-10-16
  • 打赏
  • 举报
回复
这个简单,在装载datset的时候给table一个码:
myDataAdapter.Fill(ds,"myTable")
ds.tables("myTable").PrimeryKey = New DataColumn(){ds.Tables("myTable").column("ID")}
Dim r As DataRow = ds.Tables("myTable").Rows.Find("XXX")(XXX代表要查找的)
try
lglesias 2004-10-15
  • 打赏
  • 举报
回复
DataTable.Select("ID,NAME,DTIME where NAME='某值'")
brightheroes 2004-10-15
  • 打赏
  • 举报
回复
DataTable.Select(" NAME='某值'")
wangdequan1024 2004-10-15
  • 打赏
  • 举报
回复
DataSet1.Tables["表名"].Select("ID,NAME,DTIME where NAME='某值'")
roapzone 2004-10-15
  • 打赏
  • 举报
回复
参考:
http://www.channel7.cn/2004/9-29/184543-2.html
wangdequan1024 2004-10-15
  • 打赏
  • 举报
回复
DataTable.Select("ID,NAME,DTIME where NAME='某值'")
gbbword 2004-10-15
  • 打赏
  • 举报
回复
这么答案,那我只好顶一下了!
roapzone 2004-10-15
  • 打赏
  • 举报
回复
先站一楼!
水如烟 2004-10-15
  • 打赏
  • 举报
回复
'使用
Sub test()
Dim SS As String
Dim mArray As Array
try
mArray = GetItemArray(OnDutyDt, "EmpNo", LblTxtBtnEmpNo.txt.Text)
SS = CType(mArray(0)(1), String)
MsgBox(SS)
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
水如烟 2004-10-15
  • 打赏
  • 举报
回复
再稍为修改一下,加些提示信息

Public Function GetItemArray(ByVal Table As DataTable, ByVal FindColumnName As String, ByVal Value As Object) As Array
If Table Is Nothing Then
Throw New Exception("DataTable为Nothing")
Return Nothing
End If

Dim mColumn As DataColumn
If Table.Columns.Contains(FindColumnName) Then
mColumn = Table.Columns(FindColumnName)
End If

If mColumn Is Nothing Then
Throw New Exception("表中没有" & FindColumnName & "这个字段")
Return Nothing
End If

Dim mValue As String
mValue = Convert.ToString(Value)

Dim SELECT_STRING As String
If TypeOf mColumn.DataType Is Integer Then
SELECT_STRING = FindColumnName & "={0}"
Else
SELECT_STRING = FindColumnName & "='{0}'"
End If

Dim mRows As DataRow() = Table.Select(String.Format(SELECT_STRING, mValue))
If mRows.Length = 0 Then
Throw New Exception(FindColumnName & " 中没有 " & mValue)
Return Nothing
End If

Dim mArray(mRows.Length - 1) As Array
Dim mRow As DataRow
Dim i As Integer = 0
For Each mRow In mRows
mArray.SetValue(mRow.ItemArray, i)
i += 1
Next
Return mArray
End Function
水如烟 2004-10-15
  • 打赏
  • 举报
回复
Public Function GetItemArray(ByVal Table As DataTable, ByVal FindColumnName As String, ByVal Value As Object) As Array
Dim mColumn As DataColumn
If Table.Columns.Contains(FindColumnName) Then
mColumn = Table.Columns(FindColumnName)
End If

If mColumn Is Nothing Then Return Nothing

Dim mValue As String
mValue = Convert.ToString(Value)

Dim SELECT_STRING As String
If TypeOf mColumn.DataType Is Integer Then
SELECT_STRING = FindColumnName & "={0}"
Else
SELECT_STRING = FindColumnName & "='{0}'"
End If

Dim mRows As DataRow() = Table.Select(String.Format(SELECT_STRING, mValue))
If mRows.Length = 0 Then Return Nothing

Dim mArray(mRows.Length - 1) As Array
Dim mRow As DataRow
Dim i As Integer = 0
For Each mRow In mRows
mArray.SetValue(mRow.ItemArray, i)
i += 1
Next
Return mArray
End Function

'使用
Sub test()
Dim SS As String
Dim mArray As Array
mArray = GetItemArray(OnDutyDt, "EmpNo", LblTxtBtnEmpNo.txt.Text)
If Not mArray Is Nothing Then
SS = CType(mArray(0)(1), String)
MsgBox(SS)
End If
End Sub
tl_pear 2004-10-15
  • 打赏
  • 举报
回复
EmpId int
EmpName varchar(20)
EmpNo varchar(6)
水如烟 2004-10-15
  • 打赏
  • 举报
回复
这样吧,你将你的字段列出来
比如:
字段 Name NO
类型 String Integer
tl_pear 2004-10-15
  • 打赏
  • 举报
回复
忘了说明,LblTxtBtnEmpNo.txt.Text="a6075"
tl_pear 2004-10-15
  • 打赏
  • 举报
回复
我现在的代码是
Dim FIND_EMPNO As String = "empno='{0}'"
Dim dd As New DataTable
dd = OnDutyDt

'Dim mRows As DataRow() = dd.Select(Format(FIND_EMPNO, "a6075"))
Dim mRows As DataRow() = dd.Select(Format(FIND_EMPNO, LblTxtBtnEmpNo.txt.Text))
Dim mRow As DataRow
For Each mRow In mRows
MsgBox(String.Format(FIND_EMPNO, mRow.ItemArray))
Next mRow
dd里明明有empno="a6075"的信息,却返回查找不成功的错误!
水如烟 2004-10-15
  • 打赏
  • 举报
回复
你的表有没有empno这个字段,是不是字符型
tl_pear 2004-10-15
  • 打赏
  • 举报
回复
还是不行呀!
参数FIND_EMPNO错误!
水如烟 2004-10-15
  • 打赏
  • 举报
回复
你不清楚Format.String的用法,建议你先去看看:
dim FIND_EMPNO As String="empno='{0}'"
Dim dd As New DataTable
dd = OnDutyDt
Dim mRows As DataRow() = dd.Select(Format.String(FIND_EMPNO,LblTxtBtnEmpNo.txt.Text))
Dim ss As String
'ss = CStr(dd.)
ss = CStr(dd.Rows.Item(0)(13))
tl_pear 2004-10-15
  • 打赏
  • 举报
回复
Dim dd As New DataTable
dd = OnDutyDt
Dim mRows As DataRow() = dd.Select(Format.String("empno", "王先生"))
dd.Select("EmpNo='" & LblTxtBtnEmpNo.txt.Text & "'")
Dim ss As String
'ss = CStr(dd.)
ss = CStr(dd.Rows.Item(0)(13))
水如烟 2004-10-15
  • 打赏
  • 举报
回复
将你的代码贴出来吧
加载更多回复(13)

16,554

社区成员

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

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