老有关问题,新手问。请问MSHFlexGrid分页。小弟我用的是Access数据库的。请看源码,帮助增加
老问题,新手问。请教MSHFlexGrid分页。我用的是Access数据库的。请看源码,帮助增加
全部只有40分了。望谅解。
以下是全部代码。
全部只有40分了。望谅解。
以下是全部代码。
- VB code
Option Explicit Private Const c_bh = 0 Private Const c_xm = 1 Private Const c_xb = 2 Private Const c_nl = 3 Private Const c_dh = 4 Private Const c_dz = 5 Private Const c_tu = 6 Private Sub cmdDelete_Click() Dim sql As String MSHFlexGrid1.Col = c_bh If MSHFlexGrid1.Text <> "" Then sql = "delete from 通讯录 where 号码=" & MSHFlexGrid1.Text conn.Execute sql ReadDataToGrid End If End Sub Private Sub Command2_Click() Call ReadDataToGrid '加载数据 End Sub Private Sub Form_Load() connectToDatabase Call ShowOrHideAdmin Call initGrid 'Call ReadDataToGrid End Sub '初始化表格 Private Sub initGrid() Dim formatString As String formatString = "^号码|^姓名|^性别|^年龄|^电话|^地址|<照片" MSHFlexGrid1.formatString = formatString MSHFlexGrid1.ColWidth(c_bh) = 500 MSHFlexGrid1.ColWidth(c_xm) = 1200 MSHFlexGrid1.ColWidth(c_xb) = 1000 MSHFlexGrid1.ColWidth(c_nl) = 500 MSHFlexGrid1.ColWidth(c_dh) = 600 MSHFlexGrid1.ColWidth(c_dz) = 1000 MSHFlexGrid1.ColWidth(c_tu) = 1250 MSHFlexGrid1.rows = 2 'mshflexgrid1.RowHeight(1) = 2000 End Sub '读取数据到表格 Private Sub ReadDataToGrid(Optional sqlWhere As String = "") Dim rst As New ADODB.Recordset Dim sql As String Dim i As Long sql = "select * from 通讯录 where 1=1 " & sqlWhere & " order by 号码" rst.CursorLocation = adUseClient rst.Open sql, conn, adOpenForwardOnly, adLockReadOnly MSHFlexGrid1.rows = 1 MSHFlexGrid1.rows = 2 MSHFlexGrid1.FixedRows = 1 MSHFlexGrid1.Redraw = False If rst.RecordCount > 0 Then MSHFlexGrid1.rows = rst.RecordCount + 1 i = 1 Do Until (rst.EOF Or rst.BOF) MSHFlexGrid1.RowHeight(i) = 400 MSHFlexGrid1.Row = i MSHFlexGrid1.Col = c_bh: MSHFlexGrid1.Text = myTrim(rst.Fields("号码")) MSHFlexGrid1.Col = c_xm: MSHFlexGrid1.Text = myTrim(rst.Fields("姓名")) MSHFlexGrid1.Col = c_xb: MSHFlexGrid1.Text = myTrim(rst.Fields("性别")) MSHFlexGrid1.Col = c_nl: MSHFlexGrid1.Text = myTrim(rst.Fields("年龄")) MSHFlexGrid1.Col = c_dh: MSHFlexGrid1.Text = myTrim(rst.Fields("电话")) MSHFlexGrid1.Col = c_dz: MSHFlexGrid1.Text = myTrim(rst.Fields("地址")) MSHFlexGrid1.Col = c_tu: MSHFlexGrid1.Text = "" Set MSHFlexGrid1.CellPicture = _ LoadPicture("C:\Documents and Settings\Administrator\桌面\C1_Login_Btn.bmp") rst.MoveNext i = i + 1 Loop End If MSHFlexGrid1.Redraw = True rst.Close Set rst = Nothing End Sub Private Function myTrim(ByVal strIn As Variant) As String If IsNull(strIn) Then myTrim = "" Exit Function End If myTrim = Trim(strIn) End Function Private Sub ShowPhoto(rf As ADODB.Field) Dim Chunk() As Byte Const ChunkSize As Integer = 2384 Dim DataFile As Integer, Chunks, Fragment As Integer Dim MediaTemp As String Dim lngOffset, lngTotalSize As Long Dim i As Integer MediaTemp = App.Path & "\picturetemp.tmp" DataFile = 1 Open MediaTemp For Binary Access Write As DataFile lngTotalSize = rf.ActualSize Chunks = lngTotalSize \ ChunkSize Fragment = lngTotalSize Mod ChunkSize ReDim Chunk(Fragment) Chunk() = rf.GetChunk(Fragment) Put DataFile, , Chunk() For i = 1 To Chunks ReDim Chunk(ChunkSize) Chunk() = rf.GetChunk(ChunkSize) Put DataFile, , Chunk() Next i Close DataFile Picture1.Picture = LoadPicture(MediaTemp) Kill MediaTemp End Sub Private Sub mshflexgrid1_Click() Dim rst As New ADODB.Recordset Dim sql As String MSHFlexGrid1.Col = c_bh If MSHFlexGrid1.Text <> "" Then sql = "select * from 通讯录 where 号码=" & MSHFlexGrid1.Text rst.Open sql, conn, adOpenStatic, adLockOptimistic If rst.RecordCount <> 0 Then Text1.Text = (rst.Fields("地址")) If Not IsNull(rst.Fields("照片")) Then ShowPhoto rst.Fields("照片") Else Picture1.Picture = LoadPicture("") End If End If End If End Sub