DataGrid1_KeyPress困扰了N长时间没解决~达人帮忙,高分送上

scteam 2011-09-24 03:32:36
Private Sub DataGrid1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then '若按回车
Adodc1.Recordset.MoveFirst '解决输入数值按回车数值向后偏移
If DataGrid1.Col < DataGrid1.Columns.Count - 1 Then '若列数小于列总数则通过
DataGrid1.Col = DataGrid1.Col + 1 '光标右移
Else '若到列尾
If DataGrid1.Row < Adodc1.Recordset.RecordCount - 1 Then '若行数小于数据总数则通过
DataGrid1.Row = DataGrid1.Row + 1 '光标移到下行
DataGrid1.Col = 0 '光标到列头
Else '若到行尾
DataGrid1.Row = 0 '光标到第一行
DataGrid1.Col = 0 '光标到第一列
End If
End If
End If
End Sub

问题1: DataGrid1.Columns.Count - 1 可以判断是否到列尾,那怎么判断是否到行尾呢?除了Adodc1.Recordset.RecordCount - 1 还有什么方法能判断是否到行尾

问题2:datagrid表格如下
------------------
序号 名称 公司

------------------
我在序号列输入1按回车,名称列输入2按回车,公司列输入3按回车.
按正常因该如下:
------------------
序号 名称 公司
1 2 3
------------------
但却是:
------------------
序号 名称 公司
1 2
------------------
如果加上Adodc1.Recordset.MoveFirst填入的数值都会正确,但加入后一直按回车光标只在第1行至第2行列头之间游走,我明明有N行的

看别人说:这是因为datagrid1的行号移动后,其值的改变会传送到Ado的记录集中,否则这个变动会保存在缓存中,所以会发现移动列号后将改变传到移动后的列中。记得在移动前先作行号等安全检查?

请问如何解决问题1和问题2,请测试完或解决了此问题的达人帮忙,粘贴复制的就别来了.
...全文
73 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
scteam1 2011-09-27
  • 打赏
  • 举报
回复
楼上没仔细看 代码已经全写了
算了 结贴换控件了
coolmoon1973 2011-09-24
  • 打赏
  • 举报
回复
你其他的修改表格内容的程序也应该放出来看看,否则,只是个程序片段,分析的时候不充分。
另外,Adodc1.Recordset.MoveFirst按说不应该用在这里,你又不需要回到记录集的第一条记录上,因为不知道你是怎么去写表格的,所以不清楚为什么要用这个。
scteam 2011-09-24
  • 打赏
  • 举报
回复
按正常因该如下:
------------------
序号 名称 公司
1 2 3
------------------
但却是:
------------------
序号 名称 公司
空白 1 2
------------------
scteam 2011-09-24
  • 打赏
  • 举报
回复
按正常因该如下:
------------------
序号 名称 公司
1 2 3
------------------
但却是:
------------------
序号 名称 公司
1 2
------------------
scteam 2011-09-24
  • 打赏
  • 举报
回复
芝麻来人

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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