Private Sub msflexgrid7_KeyPress(KeyAscii As Integer) MSFlexGrid1.Col = WgridCol% MSFlexGrid1.Row = WgridRow% If KeyAscii = 8 Then 'keyascii=8为退格删除键 If MSFlexGrid1.Text <> "" Then MSFlexGrid1.Text = Mid$(MSFlexGrid1.Text, 1, Len(MSFlexGrid1.Text) - 1) '除最后一个字符 Else MSFlexGrid1.Text = MSFlexGrid1.Text + Chr$(KeyAscii) End IfEnd SubPrivate Sub msflexgrid1_RowColChange() WgridCol% = MSFlexGrid1.Col WgridRow% = MSFlexGrid1.Row End Sub 但连数据库的时候比较麻烦。
我就是修改部分不太会做,用mshflexgrid好解决吗?
Dim CN As New ADODB.Connection '定义数据库的连接存放数据和代码 Dim Rs As New ADODB.Recordset CN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\NWIND.MDB;Persist Security Info=False" CN.Open Rs.CursorLocation = adUseClient Rs.Open "select * from employees", CN, adOpenDynamic, adLockBatchOptimistic Set mshflexgrid1.DataSource = Rs
gridInput.Rows = 2 rsInput.MoveFirst '**************************************读取数据************************** Do While Not rsInput.EOF ' Loops until the Recordset is at end. (EOF = End Of File) gridInput.TextMatrix(gridInput.Rows - 1, 0) = rsInput.Fields(1).Value gridInput.TextMatrix(gridInput.Rows - 1, 1) = rsInput.Fields(2).Value gridInput.TextMatrix(gridInput.Rows - 1, 2) = rsInput.Fields(3).Value gridInput.TextMatrix(gridInput.Rows - 1, 3) = rsInput.Fields(4).Value gridInput.TextMatrix(gridInput.Rows - 1, 4) = rsInput.Fields(6).Value gridInput.TextMatrix(gridInput.Rows - 1, 5) = rsInput.Fields(7).Value gridInput.TextMatrix(gridInput.Rows - 1, 6) = rsInput.Fields(8).Value
gridInput.Rows = gridInput.Rows + 1 rsInput.MoveNext ' Remember to move to the next record. Loop End Function
建议用Datagrid好些!! Dim CN As New ADODB.Connection '定义数据库的连接存放数据和代码 Dim Rs As New ADODB.Recordset CN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\NWIND.MDB;Persist Security Info=False" CN.Open Rs.CursorLocation = adUseClient Rs.Open "select * from employees", CN, adOpenDynamic, adLockBatchOptimistic Set DataGrid1.DataSource = Rs 直接在表格上修改保存只需要 Rs.Update Rs.UpdateBatch就可以了
MSFlexGrid1.Col = WgridCol%
MSFlexGrid1.Row = WgridRow%
If KeyAscii = 8 Then 'keyascii=8为退格删除键
If MSFlexGrid1.Text <> "" Then MSFlexGrid1.Text = Mid$(MSFlexGrid1.Text, 1, Len(MSFlexGrid1.Text) - 1) '除最后一个字符
Else
MSFlexGrid1.Text = MSFlexGrid1.Text + Chr$(KeyAscii)
End IfEnd SubPrivate Sub msflexgrid1_RowColChange()
WgridCol% = MSFlexGrid1.Col
WgridRow% = MSFlexGrid1.Row
End Sub
但连数据库的时候比较麻烦。
Dim Rs As New ADODB.Recordset CN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\NWIND.MDB;Persist Security Info=False"
CN.Open Rs.CursorLocation = adUseClient
Rs.Open "select * from employees", CN, adOpenDynamic, adLockBatchOptimistic Set mshflexgrid1.DataSource = Rs
On Error Resume Next gridInput.Cols = 7
'************************************显示网格的字段名************************
gridInput.ColWidth(0) = 1350
gridInput.ColWidth(1) = 1200
gridInput.ColWidth(2) = 1900
gridInput.ColWidth(3) = 600
gridInput.ColWidth(4) = 900
gridInput.ColWidth(5) = 750
gridInput.ColWidth(6) = 1000
'定义要的字段名到第一行!
gridInput.TextMatrix(0, 0) = " 日 期"
gridInput.TextMatrix(0, 1) = " 种 类"
gridInput.TextMatrix(0, 2) = " 规 格 "
gridInput.TextMatrix(0, 3) = " 数 量"
gridInput.TextMatrix(0, 4) = " 材 积"
gridInput.TextMatrix(0, 5) = " 单 价"
gridInput.TextMatrix(0, 6) = " 金 额"
gridInput.Rows = 2
rsInput.MoveFirst
'**************************************读取数据**************************
Do While Not rsInput.EOF ' Loops until the Recordset is at end. (EOF = End Of File)
gridInput.TextMatrix(gridInput.Rows - 1, 0) = rsInput.Fields(1).Value
gridInput.TextMatrix(gridInput.Rows - 1, 1) = rsInput.Fields(2).Value
gridInput.TextMatrix(gridInput.Rows - 1, 2) = rsInput.Fields(3).Value
gridInput.TextMatrix(gridInput.Rows - 1, 3) = rsInput.Fields(4).Value
gridInput.TextMatrix(gridInput.Rows - 1, 4) = rsInput.Fields(6).Value
gridInput.TextMatrix(gridInput.Rows - 1, 5) = rsInput.Fields(7).Value
gridInput.TextMatrix(gridInput.Rows - 1, 6) = rsInput.Fields(8).Value
gridInput.Rows = gridInput.Rows + 1
rsInput.MoveNext ' Remember to move to the next record.
Loop
End Function
Dim Rs As New ADODB.Recordset CN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\NWIND.MDB;Persist Security Info=False"
CN.Open Rs.CursorLocation = adUseClient
Rs.Open "select * from employees", CN, adOpenDynamic, adLockBatchOptimistic Set DataGrid1.DataSource = Rs
直接在表格上修改保存只需要
Rs.Update
Rs.UpdateBatch就可以了
比如数据库有id字段,如何在msflexgrid显示之后当用户单击某一条记录时能获得id
就是吧msflexgrid与数据库记录对应起来???