[在线等]怎么样获得一条记录和它的下一条记录?

lotus_dr 2008-03-06 02:12:02
我有一个表,名为GPS,需要按时间顺序进行处理,于是我就按时间排序读出数据集,然后再取里面的记录,但是不能得到一条记录的下一条。

string str = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\复件 DB.mdb";
OleDbConnection thisConnection = new OleDbConnection(str);
thisConnection.Open();// open the mdb
string str_sql = @"SELECT PT_CODE,VT_X,VT_Y,VT_DATE FROM GPS ORDER BY VT_DATE ASC";
OleDbDataAdapter thisAdaper = new OleDbDataAdapter(str_sql, thisConnection);
OleDbCommandBuilder thisBuider = new OleDbCommandBuilder(thisAdaper);
DataSet thisDataSet = new DataSet();
thisAdaper.Fill(thisDataSet, "GPS");
int i=0;
foreach (DataRow datarow in thisDataSet.Tables["GPS"].Rows)
{
i++;
double x_1 = Convert.ToDouble(datarow["VT_X"]);
double y_1 = Convert.ToDouble(datarow["VT_Y"]);
DataRow next_row = thisDataSet.Tables["GPS"].Rows[i + 1];
double x_2 = Convert.ToDouble(next_row["VT_X"]);
double y_2 = Convert.ToDouble(next_row["VT_Y"]);
double k_pt = (y_1-y_2)/(x_1-x_2);//两点的斜率
if (i == 2)//用来调试的
{
MessageBox.Show("x1:"+x_1.ToString()+" y1:"+y_1.ToString());
MessageBox.Show("x2:" + x_2.ToString() + " y2:" + y_2.ToString());
MessageBox.Show(k_pt.ToString());
}

}


红色部分是我采取的方法,既按当前行数+1取得下一条,但是结果发现她不是按我排序的行数算的,是按原表的函数排的!怎么办?
...全文
44 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lotus_dr 2008-03-06
  • 打赏
  • 举报
回复
嗯 是 好拉 谢谢!
visir 2008-03-06
  • 打赏
  • 举报
回复
不用foreach用for试试,说不定就好了
lotus_dr 2008-03-06
  • 打赏
  • 举报
回复
DataRow next_row = thisDataSet.Tables["GPS"].Rows[i + 1];
红色的是这句 发贴的时候没弄好 即:
DataRow next_row = thisDataSet.Tables["GPS"].Rows[i + 1];

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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