我有几个问题需要解决,希望能得到大家的帮助
1、我用MSFlexGrid控件把数据库中的数据调出来,但是显示的时候空了4行才开始显示数据,请问是哪里的原因(代码如下)
Dim txtsql As String
Dim mrc As ADODB.Recordset
With MSFlexGrid1
.Cols = 7
.FixedRows = 1
.FixedCols = 0
.Height = 5655
.Width = 9015
.BackColorFixed = &HC0E0FF
.BackColorSel = &H8000000D 'vbWhite
.ForeColorSel = vbWhite
.BackColorBkg = &H8000000E
.ForeColorFixed = &HC0& '&HFF&
.FormatString = "^学生姓名" & vbTab _
& "^学生学号" & vbTab _
& "^所属班级" & vbTab _
& "^预约课程" & vbTab _
& "^预约实验" & vbTab _
& "^预约时间" & vbTab _
& "^刷卡卡号" & vbTab
Dim i As Integer
For i = 0 To .Rows - 1
If i = 0 Then
.RowHeight(i) = 336
Else
.RowHeight(i) = 336
End If
Next
For i = 0 To .Cols - 1
.ColWidth(i) = 1500
Next
End With
txtsql = "select * from tBookRecord where courseName='" & Form1.str1 & "' and experimentName='" & Form1.str2 & "'"
Set mrc = ExecuteSQL(txtsql, "xxx.mdb")
If mrc.RecordCount > 0 Then
mrc.MoveFirst
Do While Not mrc.EOF
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 1) = mrc.Fields(1)
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 2) = mrc.Fields(8)
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 3) = mrc.Fields(2)
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 4) = mrc.Fields(3)
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 5) = mrc.Fields(5) & "--" & mrc.Fields(9)
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 6) = mrc.Fields(11)
MSFlexGrid1.Rows = MSFlexGrid1.Rows + 1
mrc.MoveNext
Loop
End If
Set mrc = Nothing2、用MSFlexGrid控件把数据库中的数据调出来后,我想实现当鼠标左键点击一行中的一个字段就显示选中一行数据,点击右键弹出菜单,将一行的数据的值传到另一个窗体中,请问该如何实现
1、我用MSFlexGrid控件把数据库中的数据调出来,但是显示的时候空了4行才开始显示数据,请问是哪里的原因(代码如下)
Dim txtsql As String
Dim mrc As ADODB.Recordset
With MSFlexGrid1
.Cols = 7
.FixedRows = 1
.FixedCols = 0
.Height = 5655
.Width = 9015
.BackColorFixed = &HC0E0FF
.BackColorSel = &H8000000D 'vbWhite
.ForeColorSel = vbWhite
.BackColorBkg = &H8000000E
.ForeColorFixed = &HC0& '&HFF&
.FormatString = "^学生姓名" & vbTab _
& "^学生学号" & vbTab _
& "^所属班级" & vbTab _
& "^预约课程" & vbTab _
& "^预约实验" & vbTab _
& "^预约时间" & vbTab _
& "^刷卡卡号" & vbTab
Dim i As Integer
For i = 0 To .Rows - 1
If i = 0 Then
.RowHeight(i) = 336
Else
.RowHeight(i) = 336
End If
Next
For i = 0 To .Cols - 1
.ColWidth(i) = 1500
Next
End With
txtsql = "select * from tBookRecord where courseName='" & Form1.str1 & "' and experimentName='" & Form1.str2 & "'"
Set mrc = ExecuteSQL(txtsql, "xxx.mdb")
If mrc.RecordCount > 0 Then
mrc.MoveFirst
Do While Not mrc.EOF
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 1) = mrc.Fields(1)
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 2) = mrc.Fields(8)
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 3) = mrc.Fields(2)
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 4) = mrc.Fields(3)
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 5) = mrc.Fields(5) & "--" & mrc.Fields(9)
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 6) = mrc.Fields(11)
MSFlexGrid1.Rows = MSFlexGrid1.Rows + 1
mrc.MoveNext
Loop
End If
Set mrc = Nothing2、用MSFlexGrid控件把数据库中的数据调出来后,我想实现当鼠标左键点击一行中的一个字段就显示选中一行数据,点击右键弹出菜单,将一行的数据的值传到另一个窗体中,请问该如何实现
可以通过点击form窗体中的msflexgrid某行得到该行记录的ID 并存储于text1,在另一个窗体的load 事件里
执行sql语句
sql="select * from id="& form1.text1.text
不就可以了吗
MSFlexGrid1.TextMatrix(rs.AbsolutePosition+1, 1) = mrc.Fields(1)
MSFlexGrid1.Rows = MSFlexGrid1.Rows + 1
mrc.MoveNext
Loop
改成这样
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 1) = mrc.Fields(1)
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 2) = mrc.Fields(8)
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 3) = mrc.Fields(2)
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 4) = mrc.Fields(3)
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 5) = mrc.Fields(5) & "--" & mrc.Fields(9)
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 6) = mrc.Fields(11)
MSFlexGrid1.Rows = MSFlexGrid1.Rows + 1
mrc.MoveNext
Loop
============================================================================
你没有从第1行开始填充,而是从.rows-1行开始的
如果你的Msflexgrid开始的时候已经有好几行,必然会有空行
试着在循环填充前面加一句msflexgrid1.rows=2
至于窗体传值可以在弹出的新窗体中直接读取前一窗体的选中行记录
Public tab1 As Integer
调数据库数据的时候把对应行的ID取出来tab1 = mrc.Fields(0)
但是传到另一个窗体的时候值是不变的,请教原因是什么?解决完了就可以给分了
我用MSFlexGrid控件把数据库中的数据调出来,双击一行的时候弹出另一个窗体,将相应的一行数据的值传到这个窗体上,我设了Public tab1 As Integer,代码如下
txtsql = "select * from tBookRecord where courseName='" & Form1.str1 & "' and experimentName='" & Form1.str2 & "'"
Set mrc = ExecuteSQL(txtsql, "huatec1.mdb")
If mrc.RecordCount > 0 Then
mrc.MoveFirst
Do While Not mrc.EOF
tab1 = mrc.Fields(0)------这个取不出相应的ID号
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 1) = mrc.Fields(1)
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 2) = mrc.Fields(8)
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 3) = mrc.Fields(2)
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 4) = mrc.Fields(3)
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 5) = mrc.Fields(5) & "--" & mrc.Fields(9)
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 6) = mrc.Fields(11)
MSFlexGrid1.Rows = MSFlexGrid1.Rows + 1
mrc.MoveNext
Loop
End If
Set mrc = Nothing