现在的位置: 首页 > 综合 > 正文

冰冻三尺 之 “分页显示记录”

2013年08月31日 ⁄ 综合 ⁄ 共 1406字 ⁄ 字号 评论关闭

   又做完了一个例子,很明显的感觉到理解起来有点吃力了。这几天做例子始终有一种感觉就是水中月,镜中花,看的朦朦胧胧的。很努力的让自己去懂,可是往往事与愿违。有时候想,学习和理解是个过程,不能一蹴而就。每个例子或多或少总有解决不了的问题,不知道应该是想尽办法的去解决掉,还是就是记下来然后往后走。总说学习是个过程,或许现在觉得是个问题等到越往后走学的多的时候才会发现这里原来这么的简单。做不到一蹴而就,那也只求点滴的进步了,冰冻三尺非一日之寒,点滴积累,慢慢的就什么都懂了。

     
做了好几个例子了,想想过程其实很简单,无非也就是窗体加载连接数据库,然后就是数据库操作,最后窗体卸载释放数据库。其中比较复杂的就是数据库的操作。由于操作数据库的复杂性,一般都会定义一个过程或者函数来实现操作。比如今天这个例子“分页显示记录”。定义了一个过程。过程中实现了让记录分页显示在datagrid控件上,完成了大部分的功能。代码如下:

PublicSub ShowData(ByVal intPage As Integer)
   Dim intPageCount As Integer
   Dim intrecord As Integer
   Dim objDataSource As New Recordset
  
   For intrecord = 0 To objRs.Fields.Count - 1
      objDataSource.Fields.AppendobjRs.Fields(intrecord).Name, adVarChar, objRs.Fields(intrecord).DefinedSize
   Next
  
   objDataSource.Open
   objRs.PageSize = Val(txtPagesize)
   objRs.AbsolutePage = intPage
  
   For intrecord = 1 To objRs.PageSize
      objDataSource.AddNew
      objDataSource!用户名 = objRs!用户名
      objDataSource!口令 = objRs!口令
      objRs.MoveNext
 
      If objRs.EOF Then Exit For
   Next
  
   Set DataGrid1.DataSource = objDataSource
   txtPageMsg = intPage & "/"& objRs.PageCount
End Sub

     这其中还有一个小插曲,就是刚写完例子的时候发现每一页上显示的记录都是某一条记录的重复,后来经过仔细回想整个过程的原理,终于想到了可能是在将记录写到datagrid控件中的时候没有让记录集向下一位移动,然后查看了下代码,一看果然如此,objRs.MoveNext这条代码没有写上。经过这么个小插曲,觉得先理解整个小程序的运作原理很重要,至少不会当出现错误的时候就和没头苍蝇一样重头到尾的查看代码哪里出错了。当然现在是有例子可以对比是哪里出错了,如果到时候自己做的时候没有对照,一旦出错,估计工作量就大了。

         
这个小例子中还用了一个datagrid控件,这个控件就是这个例子的关键,更关键的就是这个控件不能够将记录集中的数据直接连接给它,必须借助另一个中间记录集来传递,原因就是这个控件不能够智能选择,只要和记录集数据连接上就能够自动获得记录集中的数据,并且是全部数据不能够智能选择和分配。

        
体会比较少,总结的也不多,贵在点滴积累,冰冻三尺非一日之寒。

抱歉!评论已关闭.