📄 subject_38594.htm
字号:
<p>
序号:38594 发表者:zlt 发表日期:2003-05-04 21:19:20
<br>主题:救急!关于CRecordset::DoFieldExchange 函数的自动调用
<br>内容:本人用MFC通过ODBC编写了一个访问Microsoft SQL Server 2000的程序,但在进行数据交换时系统没有自动调用CRecordset::DoFieldExchange,不知怎么回事。<BR> 具体情况是:先用App Wizard生成一个基于对话框的程序筐架,再通过Class Wizard增加CRecordset的派生类CMySet<BR>Class CMySet:public CRecordset<BR>{<BR>.......<BR>CString m_id;//用于和数据库对应字段进行数据交换的成员变量<BR>.......<BR>};<BR>再生成一个CMySet的全局对象<BR>CMySet mySet;<BR>再手动改写了CMySet::DoFieldExchange函数,通过RFX实现数据库和CMySet的成员变量m_id的数据交换,并且编译通过,没有错误和警告信息。<BR>但是运行时并没有自动调用CMySet::DoFieldExchange函数,使用CMySet::GetFieldValue也可以正常读出数据库对应字段内容,数据库连接均正常,CMySet::Move等函数都可以正常使用,只是系统一直都没有自动调用CMySet::DoFieldExchange,不知道系统是如何自动调用CMySet::DoFieldExchange的,而且手动也不知道怎么调用这个函数。试验是否调用CMySet::DoFieldExchange的方法是在函数体中加入<BR>CDialog dlg;<BR>dlg.MessageBox("DoFieldExchange");<BR>只是一直都没有出现这个消息框,系统一直都没有调用CMySet::DoFieldExchange,m_id也一直为空,是不是一定要在App Wizard中选择基于文档而且要选择支持数据库系统才能自动调用CMySet::DoFieldExchange,基于对话框的程序是不是不会自动调用。<BR> 还望高手指点,本人要急用!<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:擎天柱 回复日期:2003-05-04 21:57:36
<br>内容:最好通过向导自动生成一个CRecordset的派生类,不要手工添加。<BR>或者新建一个工程,通过向导自动生成一个CRecordset的派生类,然后进行代码合并。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:zlt 回复日期:2003-05-05 07:31:25
<br>内容:我的派生类CMySet是通过ClassWizard里面的Add new class生成的,基类选择了CRecordset,其框架是自动生成的。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -