我现在做用MSHFlexGrid控件做了一个数据库的链接。当我点击MSHFlexGrid的某一行时,使数据显示在文本框中。但现在遇到一个奇怪的问题(以前用的时候从来没遇到过)。
当我点击某一行的时候,文本框里显示的是前一行的内容。也就是说我点击鼠标第3行时显示的是第2行的内容。这样有个问题就是最后一行总显示不了。这是什么原因啊。
有遇到过这样现象的朋友吗?怎么解决啊!
很着急,在线等!
Private Sub MSHFlexGrid1_Click()
for i= 1 to 10
text1(i).text= MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, i)
next
...全文
17323打赏收藏
关于MSHFlexGrid控件的一个疑问??
我现在做用MSHFlexGrid控件做了一个数据库的链接。当我点击MSHFlexGrid的某一行时,使数据显示在文本框中。但现在遇到一个奇怪的问题(以前用的时候从来没遇到过)。 当我点击某一行的时候,文本框里显示的是前一行的内容。也就是说我点击鼠标第3行时显示的是第2行的内容。这样有个问题就是最后一行总显示不了。这是什么原因啊。 有遇到过这样现象的朋友吗?怎么解决啊! 很着急,在线等! Private Sub MSHFlexGrid1_Click() for i= 1 to 10 text1(i
Private Sub Form_Load()
Call Link
rs.Open "select * from 表1", cn, adOpenKeyset, adLockOptimistic
Set MSHFlexGrid1.DataSource = rs
' rs.Close
' cn.Close
' Set rs = Nothing
' Set cn = Nothing
End Sub
2 利用绑定,单击单元格后,数据游标会自动迁移,你可以直接从记录集中取数据,不必重新查询。
Private Sub MSHFlexGrid1_RowColChange()
For i = 0 To 8
Text1(i).Text = rs.Fields(i)
Next
End If
我把对比的情况说详细些。
正常的情况:界面中一个命令按钮,一个MSHFlexGrid表格框,9个文本框
Private Sub Form_Load()
Call Link
rs.Open "select * from 表1", cn, adOpenKeyset, adLockOptimistic
Set MSHFlexGrid1.DataSource = rs
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
End Sub
Private Sub MSHFlexGrid1_Click()
Dim i As Integer
For i = 0 To 8
Text1(i).Text = MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, i)
Next
End Sub
其中 link是链接数据库的函数。运行一切正常。鼠标停留的也对。点击第一行,第一行出现光标框,文本框显示第一行的数据,其他依次类推,没有任何问题
不正常的情况
Private Sub Form_Load()
Call Link
cn.Execute ("delete from 表1")
rs.Open "select * from 表1", cn, adOpenKeyset, adLockOptimistic
Set MSHFlexGrid1.DataSource = rs
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
End Sub
启动时先把数据库的数据情况,然后用界面的添加命令添加数据
Private Sub ComAdd_Click()
rs.Open "select * from 表1 where 名称='" & text1(0).Text & "'", cn, adOpenKeyset, adLockOptimistic
If rs.RecordCount = 0 Then
rst.Open "select * from 表1", cn, adOpenKeyset, adLockOptimistic
rst.AddNew
For i = 0 To 8
rst.Fields(i) = text1(i).Text
Next
rst.Update
rst.MoveLast
Else
MsgBox "很抱歉,该名称已经存在,请查询确认后重新输入!", vbOKOnly + vbExclamation, "添加"
Exit Sub
End If
End Sub
添加完毕后,MSHFlexGrid1显示数据库中新添加的数据。(我尝试了很多次,添加了很多条数据)
然后点击MSHFlexGrid1。点击代码如下
Private Sub MSHFlexGrid1_Click()
Dim i As Integer
For i = 0 To 8
Text1(i).Text = MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, i)
Next
End Sub
Private Sub MSHFlexGrid1_Click()
dim i as long
dim r as long
r=MSHFlexGrid1.MouseRow
for i= 1 to 10
text1(i).text= MSHFlexGrid1.TextMatrix(r, i)
next
end ……
[/Quote]
楼上的朋友,还是不行。每次我用鼠标点击的时候,光标总是会向上一行。
Private Sub MSHFlexGrid1_Click()
dim i as long
dim r as long
r=MSHFlexGrid1.MouseRow
for i= 1 to 10
text1(i).text= MSHFlexGrid1.TextMatrix(r, i)
next
end sub