怎样建立一个新的dataset,并给其添加数据???我快疯了!!请高手帮忙!!!~~

ireance 2002-03-20 01:55:55
在数据表里有多个员工的多次提交的记录
我怎么才能得到一个人最新的一笔呢?
我的思路是得到先把所有的资料都select出来,并按倒序
(也就是每个人最新的一条在最前面,并且一个人的所有记录都会在一起)
把这些记录放在一个dataset里面了
我再新建另外一个dataset

我把这些记录逐条读出来
逐一比较它们的员工id
员工id相同则说明为同一个人只取其第一个记录
id不同,则为不同员工
取出这条记录
放在我新建的dateset里
再把新建的dataset值绑定在datagrid里

我现在想要向高手请教的是:如何把需要的数据行(datarow)
(比较以后的需要得到的记录)放在新建的daterow????
怎么定义这个datarow??????
救命!!!!!!!!!!!!!!!

本姑娘折腾一上午了
这个问题还没解决
我要疯了~~~~~~~~~~~~~~
时间紧迫
快救命呀~~~~~~~~~~~~~~~~~~~~~~~~~~~~
...全文
150 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhq2000 2002-03-21
  • 打赏
  • 举报
回复
呵呵!我用C#及C++习惯了,老是没改过来 :)
yxrj 2002-03-21
  • 打赏
  • 举报
回复
vb能ds.Tables[0].Rows[index]这么写?
改成()
ireance 2002-03-21
  • 打赏
  • 举报
回复
zhq2000(俗子) :
下面这句话在编译的时候有问题

tb.ImportRow(ds.Tables[0].Rows[index])

提示错误信息是:
无法将类型“System.Data.DataTableCollection”的值转换为“System.Data.DataRow”。

怎么办?????????
zhq2000 2002-03-20
  • 打赏
  • 举报
回复
Dim index As integer
Dim tb As datatable
tb= ds.Tables("tblformal").Clone()

Dim row as DataRow
for each row in ds.Tables("tblformal").Rows
If cint(year(row("fm_date")))=cint(trim(years)) then
tb.ImportRow(ds.Tables[0].Rows[index])
End if
next

DataGrid1.DataSource = tb.DefaultView
DataGrid.DataBind()
DindDataSource()

注:
一、 ds.Tables("tb").DefaultView , 如果 ds.Tables("tb") 是指新建的表tb , 则这句肯定出错,因为你只是创建了tb并没有向ds.Tables中加入tb,同时变量名tb并不等于表名,如果要这句正常工作,则要先作以操作:
tb.TableName = "tb"
ds.Tables.Add(tb)

二、tb.Rows.Add(ds.Tables[0].Rows[index])出错的原因可能是tb与ds.Tables[0]的表结构(包括字段类型)不同。
DataTable.Clone() 方法可以复制表结构,
DataTable.Copy() 可能复制整个表(包括数据)
ireance 2002-03-20
  • 打赏
  • 举报
回复
编译说::: 没有用这些参数可调用的可访问重载“Add”。
请告诉我怎么改啊??????????????
ireance 2002-03-20
  • 打赏
  • 举报
回复
icyer() :下面这段代码是我出现问题的那部分
用了你说的方法后: tb.Rows.Add(ds.Tables[0].Rows[index])
这句话编译出错!!!!


DS = New DataSet()
Dim rowcount As integer
rowcount=MyCommand.Fill(ds, "tblformal")

If rowcount=0 then
DataGrid1.DataSource=ds.Tables("tblformal").DefaultView
DataGrid1.DataBind()
BindDataSource()
else
Dim index As integer
Dim tb As datatable
tb= New DataTable()
tb.Columns.Add("fm_id")
tb.Columns.Add("fm_usid")
tb.Columns.Add("fm_date")
tb.Columns.Add("fm_stat")
tb.Columns.Add("fm_main")
tb.Columns.Add("fm_hard")
tb.Columns.Add("fm_study")
tb.Columns.Add("fm_first")
tb.Columns.Add("fm_second")
tb.Columns.Add("fm_third")
tb.Columns.Add("fm_forth")


For index=0 to rowcount-1
Dim row As Datarow
row=ds.Tables("tblformal").rows(index)
If cint(year(row("fm_date")))=cint(trim(years)) then
tb.Rows.Add(ds.Tables[0].Rows[index])
End if
next
DataGrid1.DataSource=ds.Tables("tb").DefaultView
DataGrid1.DataBind()
BindDataSource()
end if
bigtree21cn 2002-03-20
  • 打赏
  • 举报
回复

DataTable dt=new DataTable();
DataColumnCollection columns=dt.Columns;
columns.Add(employeeID,typeof(System.Int32));
columns.Add(employeeName,typeof(System.String));
columns.Add .....

//accord to your true need,the following statement in the loop
// "foreach(DataRow dr in myOldDataSet.Tables[0].Rows)"

DataRow dr=dt.NewRow();
dr["employeeID"]=1;
dr["employeeName"]="myName';
dr[....]=...;

dt.AcceptChanges();

DataSet newDS=new DataSet();
newDs.Tables.Add(dt);
icyer 2002-03-20
  • 打赏
  • 举报
回复
假设你的表里有两个字段:ID,WorkDate
DataTable tb = new DataTable();
tb.Columns.Add("ID");
tb.Columns.Add("WorkDate", DateTime);

添加ds的一行到tb:
tb.Rows.Add(ds.Tables[0].Rows[j]);

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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