使用产品:iobject.net 9D(2019) 操作系统:WIN10X64
您好,我现在有一个点数据集和相应的九条记录,我要遍历这个记录集,循环给服务器发送每一行记录对应的“trasID”字段,现在我调用超图的记录集移动到首尾,然后利用
recordset.movefirst()
for(int i;i<=recordset.readcount)
{
...........
message = Convert.ToString(recordset.GetFieldValue("trasID"));//获取当前行的字段值,并发送给服务器
.....
recordset.movenext();
}
这种遍历并定位记录的方法,我现在能遍历前两行的记录,并把服务器返回来的值存储在属性表,但是永远卡在第二行,遍历不到第三行了。就是我上面的message只能获取第二行记录的相应字段值,转不到第三行。请问是出了什么问题呢。我遍历后的结果如下
属性表说明
遍历后结果:预期结果是3-9行的数据不是初始的1,像前两行那样是接受的返回值。我断点调试过,每次遍历完第二行后,记录集移动不到下一行了,一直只能返回第二行的相应字段值。
详细遍历存储部分代码如下
Recordset recordset = ((DatasetVector)mapControl2.Map.Workspace.Datasources[1].Datasets["point"]).GetRecordset(false, CursorType.Dynamic);//获取工作空间对应的点数据集的记录
Int32 count = recordset.RecordCount;//我这个记录集有九条点记录
recordset.MoveFirst();//移动到记录集的首位
string message;
byte[] byteArray;
int length;
string receieveMessage;
for (int i=1; i <= count; i++)
{
#region 发送给服务器数值
message = Convert.ToString(recordset.GetFieldValue("trasID"));
//MessageBox.Show("发送:“" + message + "”--" + DateTime.Now.ToShortTimeString());
NetworkStream stream = tcpClient.GetStream();
byteArray = Encoding.Unicode.GetBytes(message);
stream.Write(byteArray, 0, byteArray.Length); //发送字节数组
//接收服务器返回的数值
stream = tcpClient.GetStream();
byteArray = new byte[1024];
length = stream.Read(byteArray, 0, 1024);
receieveMessage = Encoding.Unicode.GetString(byteArray, 0, length);
string[] ss = receieveMessage.Split();//把返回值存储为字符串数组
//把范围值分别存储在对应的字段中
bool b1=recordset.SetFieldValue("dryNum", Convert.ToInt32(ss[0]));
bool b2 = recordset.SetFieldValue("wetNum", Convert.ToInt32(ss[1]));
bool b3 = recordset.SetFieldValue("cirNum", Convert.ToInt32(ss[2]));
bool b4 = recordset.SetFieldValue("harNum", Convert.ToInt32(ss[3]));
recordset.Update();//提交记录更新
recordset.Refresh();
bool b5 = recordset.MoveNext();//移动到下一行记录
bool b6=recordset.Edit();
//MessageBox.Show("收到:“" + receieveMessage + "”--" + DateTime.Now.ToShortTimeString());