用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心编程技巧Visual C++

用VC++设计基于ODBC的数据库管理系统

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-03-16 20:37:28
动,若nRows为正数,则向前移动,若nRows为负数,则向后移动。

  如果在建立记录集时选择了CRecordset::skipDeletedRecords选项,那么除了SetAbsolutePosition外,在滚动记录时将跳过被删除的记录,这一点对象FoxPro这样的数据库十分重要。如果记录集是空的,那么调用上述函数将产生异常。另外,必须保证滚动没有超出记录集的边界。调用IsEOF()和IsBOF()可以进行这方面的检测。

BOOL IsEOF( ) const;

  如果记录集为空或滚动过了最后一个记录,那么函数返回TRUE,否则返回FALSE。

BOOL IsBOF( ) const;

  如果记录集为空或滚动过了第一个记录,那么函数返回TRUE,否则返回FALSE。

  调用GetRecordCound可获得记录集中的记录总数,该函数的原型如下:

long GetRecordCount( ) const;

  要注意这个函数返回的实际上是用户在记录集中滚动的最远距离。要想真正返回记录总数,只有调用MoveNext移动到记录集的末尾(MoveLast不行)。

  要修改当前记录,应该按下列步骤进行:

  (1)调用Edit()成员函数。调用该函数后就进入了编辑模式,程序可以修改域数据成员。注意不要在一个空的记录集中调用Edit,否则会产生异常。Edit()函数会把当前域数据成员的内容保存在一个缓冲区中,这样做有两个目的,一是可以与域数据成员作比较以判断哪些字段被改变了,二是在必要的时侯可以恢复域数据成员原来的值。若再次调用Edit(),则将从缓冲区中恢复域数据成员,调用后程序仍处于编辑模式。调用Move(AFX_MOVE_REFRESH)或Move(0)可退出编辑模式(AFX_MOVE_REFRESH的值为0),同时该函数会从缓冲区中恢复域数据成员。

  (2)设置域数据成员的新值。

  (3)调用Update()函数完成编辑。Update把变化后的记录写入数据源并结束编辑模式。

  要向记录集中添加新的记录,应该按下列步骤进行:调用AddNew()成员函数。调用该函数后就进入了添加模式,该函数把所有的域数据成员都设置成NULL(注意,在数据库术语中,NULL是指没有值,这与C++的NULL是不同的)。与Edit()一样,AddNew()会把当前域数据成员的内容保存在一个缓冲区中,在必要的时侯,程序可以再次调用AddNew()取消添加操作并恢复域数据成员原来的值,调用后程序仍处于添加模式。调用Move(AFX_MOVE_REFRESH)可退出添加模式,同时该函数会从缓冲区中恢复域数据成员。最后调用Update()函数把域数据成员中的内容作为新记录写入数据源,从而结束了添加。

  如果记录集是快照,那么在添加一个新的记录后,需要调用Requery重新查询,因为快照无法反映添加操作。

  要删除记录集的当前记录,应按下面两步进行:调用Delete()成员函数。该函数会同时给记录集和数据源中当前记录加上删除标记。注意不要在一个空记录集中调用Delete(),否则会产生一个异常。滚动到另一个记录上以跳过删除记录。上面提到的函数声明为:

virtual void Edit( );
virtual void AddNew( );
virtual void Delete( );
virtual BOOL Update( );

  若更新失败则函数返回FALSE,且会产生一个异常。

  在对记录集进行更改以前,程序也许要调用下列函数来判断记录集是否是可以更改的,因为如果在不能更改的记录集中进行修改、添加或删除将导致异常的产生。

BOOL CanUpdate( ) const; //返回TRUE表明记录是可以修改、添加和删除的。
BOOL CanAppend( ) const; //返回TRUE则表明可以添加记录。

  3、CRecordView类

  CRecordView(记录视图)是CFormView的派生类,它提供了一个表单视图来显示当前记录,用户可以通过表单视图显示、修改、添加和删除数据,用户一般需要创建一个CRecordView的派生类并在其对应的对话框模板中加入控件。

  记录视图使用DDX数据交换机制在表单中的控件和记录集之间交换数据。在前面介绍的DDX都是在控件和控件父窗口的数据成员之间交换数据,而记录视图则是在控件和一个外部对象(CRecordset的派生类对象)之间交换数据,交换数据的代码是ClassWizard自动加入的。在后面的例子中,将向读者介绍用ClassWizard连接记录视图与记录集对象的方法.
天极yesky

上一页  [1] [2] [3] [4] [5] [6] [7] [8]  下一页

Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:18,031.25000 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号