网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
用VC++6.0开发多表联接的数据库应用程序
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式
记录和FSB表记录同步移动(BZM编辑框内容与HH编辑框内容相同)。如果,要求按照具体的关键字值来查询二个表中的相关记录,那么,在“定位” 编辑框中输入具体的关键字值,然后,用鼠标点击“关联”按钮,就会见到二个表在新的记录集实现关联。

表1: FSB表结构
字段名
类型
备注
BZM
C
索引关键字
DGDL1
N

DGZD1
N

其它字段



表2: DBK1表
字段名
类型
备注
HH
C
索引关键字
BL
N

ZZCM
C

其它字段

  基于MFC ODBC类开发的数据库应用程序,是通过MFC ODBC类使用SQL语句方式操纵数据表的。数据库中表FSB与表DBK1关联查询的SQL语句是:
SELECT * FROM FSB,DBK1 WHERE FSB.BZM=DBK1.HH
由于创建一个CRecordset派生类时,一般只选择一个数据源中的一个表,因此基于MFC ODBC类开发的数据库应用程序要实现二个表关联,就要使用CRecordset类的参数m _strFilter。它相当于SQL语句中的WHERE子句。参数m _strSort相当于SQL语句中的GROUP BY子句。要注意m_strFilter字符串中不要包含“WHERE”关键字。本例在表FSB与表DBK1对应的CRecordset派生类中分别使用了mbzm和mhh二个m _strFilter参数。用鼠标点击“关联”按钮时,程序首先根据“定位” 编辑框中的内容作为mbzm的值,在表FSB检索结果集。表DBK1对应的CRecordset派生类根据表FSB对应的CRecordset派生类的当前记录m_bzm值,作为mhh的值实行检索,从而得到与表FSB关键字段BZM对应的表DBK1的记录。实现了表FSB与表DBK1的关联。由此可见,二表关联的关键是m _strFilter参数的设置。

图 1

3.2 数据库应用程序创建
3.2. 1 创建单表单文档的数据库应用程序
根据前面建立的数据源DB-FSB,使用VC++ Appwizard 生成一个单表单、单文档的数据库应用程序。选择数据源DB-FSB的数据表时应选择FSB.DBF。应用程序名为ZF0001(具体步骤可参考有关VC++资料)。ZF0001应用程序中创建了CZf0001Doc、CZf0001Set、CZf0001View等派生类。
3.2.2 设置m _strFilter参数
在上一步生成的CZf0001Set类中,按以下方式,在① ② ③程序中设置m _strFilter参数(黑体部分的语句都是为CZf0001Set的参数mbzm而手动增加的)。为节省篇幅,省略程序清单的部分内容。
①. 在Crecordset派生类的定义中,描述了被连接的数据源表的字段,并在VC++ Appwizard 生成的程序注释“// Field/Param Data ”中提示在此可定义参数。
CRecordset派生类:CZf0001Set的定义
class CZf0001Set : public Crecordset //Crecordset派生类CZf0001Set
{
public:
CZf0001Set(CDatabase* pDatabase = NULL);
DECLARE_DYNAMIC(CZf0001Set)
// Field/Param Data
//{{AFX_FIELD(CZf0001Set, CRecordset) //被绑定的字段
CString m_bzm;
CString m_dgqd1;
、、、、、、 //为节省篇幅,省略部分字段
CString m_bz;
//}}AFX_FIELD
CString mbzm; // 参数mbzm
// Overrides
// ClassWizard generated virtual function overrides
、、、、、、、
virtual void Dump(CDumpContext& dc) const;
#endif
};
②.Crecordset派生类:CZf0001Set的构造函数
其中,对被绑定字段的相应内存变量进行了初始化。
CZf0001Set::CZf0001Set(CDatabase* pdb) : CRecordset(pdb)
{
//{{AFX_FIELD_INIT(CZf0001Set)
m_bzm = _T("");
m_dgqd1 = _T("");
、、、、、、
m_bz = _T("");
m_nFields = 16; //数据源表的记录字段个数
//}}AFX_FIELD_INIT
m_nDefaultType = snapshot;
m_nParams=1; // CZf0001Set的参数个数
mbzm=""; //参数初始化
}
③.记录字段交换(RFX)
通过使用RFX,MFC框架可以在数据库和CRecordset类变量之间交换。交换是通过执行DoFieldExchange()函数而建立的。
void CZf0001Set::DoFieldExchange(C

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号