⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chap10_7.htm

📁 着重介绍基于C++的web编程技术
💻 HTM
📖 第 1 页 / 共 5 页
字号:
    <p></font><b><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3"> </p>
    <p ALIGN="JUSTIFY">清单</font><font FACE="Times New Roman" SIZE="3">10.9 </font><font SIZE="3">派生类的</font><font FACE="Times New Roman" SIZE="3">OnInitialUpdate</font><font SIZE="3">函数</font></b><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY">void CSectionForm::OnInitialUpdate()</p>
    <p ALIGN="JUSTIFY">{</p>
    <p ALIGN="JUSTIFY">m_pSet = &amp;GetDocument()-&gt;m_sectionSet;</p>
    <p ALIGN="JUSTIFY">CRecordView::OnInitialUpdate();</p>
    <p ALIGN="JUSTIFY">}</p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p></font><b><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font></b><font SIZE="3">注意到在</font><font FACE="Times New Roman" SIZE="3">CRecordView:: OnInitialUpdate</font><font SIZE="3">中调用</font><font FACE="Times New Roman" SIZE="3">CRecordset::Open</font><font SIZE="3">时未提供任何参数,这意味着</font><font FACE="Times New Roman" SIZE="3">Open</font><font SIZE="3">函数将从</font><font FACE="Times New Roman" SIZE="3">CRecordset::GetDefaultSQL</font><font SIZE="3">中获取</font><font FACE="Times New Roman" SIZE="3">SQL</font><font SIZE="3">信息。</font><font FACE="Times New Roman" SIZE="3">CSectionSet</font><font SIZE="3">提供了虚拟函数</font><font FACE="Times New Roman" SIZE="3">GetDefaultSQL</font><font SIZE="3">的新版本,如清单</font><font FACE="Times New Roman" SIZE="3">10.10</font><font SIZE="3">所示,该函数返回了“</font><font FACE="Times New Roman" SIZE="3">Section</font><font SIZE="3">”表名。</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font><b><font SIZE="3"> </p>
    <p ALIGN="JUSTIFY">清单</font><font FACE="Times New Roman" SIZE="3">10.10 </font><font SIZE="3">派生类的</font><font FACE="Times New Roman" SIZE="3">GetDefaultSQL</font><font SIZE="3">函数</font></b><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY">CString CSectionSet::GetDefaultSQL()</p>
    <p ALIGN="JUSTIFY">{</p>
    <p ALIGN="JUSTIFY">return _T(&quot;[Section]&quot;);</p>
    <p ALIGN="JUSTIFY">}</p>
    <p></font><b><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font></b><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3">至于记录的滚动和修改的实现,请参看</font><font FACE="Times New Roman" SIZE="3">10.6</font><font SIZE="3">。而与</font><font FACE="Times New Roman" SIZE="3">DDX</font><font SIZE="3">和</font><font FACE="Times New Roman" SIZE="3">DFX</font><font SIZE="3">有关的代码已在清单</font><font FACE="Times New Roman" SIZE="3">10.3</font><font SIZE="3">和</font><font FACE="Times New Roman" SIZE="3">10.2</font><font SIZE="3">中列出。</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3">如果读者对上面的分析还有不明白的地方,那么请再把本章的前几节内容再仔细阅读一遍。</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <b><p ALIGN="JUSTIFY"></b></font><font color="#3973DE" FACE="Times New Roman" SIZE="3">10.7.3 
    Enroll</font><font SIZE="3" color="#3973DE">的第二个版本</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY">Enroll</font><font SIZE="3">的第二个版本向读者演示了在一个记录视图中使用两个相关联的记录集,以及记录的过滤和排序技术,该版本使读者真正接触到了关系数据库。本小节还将向读者介绍如何用</font><font FACE="Times New Roman" SIZE="3">ClassWizard</font><font SIZE="3">建立记录集类,以及参数化记录集的方法。</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3">读者可以先运行</font><font FACE="Times New Roman" SIZE="3">VC 5.0</font><font SIZE="3">提供的</font><font FACE="Times New Roman" SIZE="3">Enroll</font><font SIZE="3">例子的第二步看看。</font><font FACE="Times New Roman" SIZE="3">Enroll</font><font SIZE="3">的界面有了一个变化,原来的</font><font FACE="Times New Roman" SIZE="3">Course</font><font SIZE="3">编辑框被替换成了组合框,如图</font><font FACE="Times New Roman" SIZE="3">10.10</font><font SIZE="3">所示。组合框中的内容来自同一数据源的另一张表</font><font FACE="Times New Roman" SIZE="3">Course</font><font SIZE="3">的</font><font FACE="Times New Roman" SIZE="3">CourseID</font><font SIZE="3">字段。</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="center"></font><font SIZE="3"><img src="T10_10.gif" alt="T10_10.tif (174388 bytes)" WIDTH="480" HEIGHT="342"></font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="center"></font><font SIZE="3">图</font><font FACE="Times New Roman" SIZE="3">10.10 
    Enroll</font><font SIZE="3">的第二个版本</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY">Course</font><font SIZE="3">表的内容如表</font><font FACE="Times New Roman" SIZE="3">10.5</font><font SIZE="3">所示,与表</font><font FACE="Times New Roman" SIZE="3">10.2</font><font SIZE="3">相对照,读者可以发现</font><font FACE="Times New Roman" SIZE="3">Course</font><font SIZE="3">表和</font><font FACE="Times New Roman" SIZE="3">Section</font><font SIZE="3">表有一个公共字段</font><font FACE="Times New Roman" SIZE="3">CourseID</font><font SIZE="3">。记录视图程序正是利用这个公共字段把两张表联系起来的。例如,当用户在</font><font FACE="Times New Roman" SIZE="3">Course</font><font SIZE="3">组合框中选择了</font><font FACE="Times New Roman" SIZE="3">MATH202</font><font SIZE="3">时,程序将选择</font><font FACE="Times New Roman" SIZE="3">Section</font><font SIZE="3">表中所有</font><font FACE="Times New Roman" SIZE="3">CourseID</font><font SIZE="3">为</font><font FACE="Times New Roman" SIZE="3">MATH202</font><font SIZE="3">的记录并建立新的记录集。</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3">事实上,在</font><font FACE="Times New Roman" SIZE="3">STDREG32.MDB</font><font SIZE="3">的大部分表都共享了</font><font FACE="Times New Roman" SIZE="3">CourseID</font><font SIZE="3">。在主表</font><font FACE="Times New Roman" SIZE="3">Course</font><font SIZE="3">表中,每个记录的</font><font FACE="Times New Roman" SIZE="3">CourseID</font><font SIZE="3">是唯一的,我们称其为主关键字</font><font FACE="Times New Roman" SIZE="3">(Primary key)</font><font SIZE="3">。在</font><font FACE="Times New Roman" SIZE="3">Course</font><font SIZE="3">的相关表中,</font><font FACE="Times New Roman" SIZE="3">CourseID</font><font SIZE="3">不一定唯一,如</font><font FACE="Times New Roman" SIZE="3">Section</font><font SIZE="3">表,我们称相关表中的</font><font FACE="Times New Roman" SIZE="3">CourseID</font><font SIZE="3">为外关键字</font><font FACE="Times New Roman" SIZE="3">(Foreign key)</font><font SIZE="3">。通过关键字可以把多张表联系到一起,这样的数据库就是关系数据库。</font><font FACE="Times New Roman" SIZE="3">SectionNo</font><font SIZE="3">也是一个关键字,在</font><font FACE="Times New Roman" SIZE="3">Section</font><font SIZE="3">表中,</font><font FACE="Times New Roman" SIZE="3">SectioinNo</font><font SIZE="3">字段是主关键字,它的值是唯一的。</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font><b><font SIZE="3"> </p>
    <p ALIGN="CENTER">表</font><font FACE="Times New Roman" SIZE="3">10.5 Course</font><font SIZE="3">表</font></b></p>
    <table BORDER="1" CELLSPACING="1" CELLPADDING="1" WIDTH="579">
      <tr>
        <td WIDTH="33%"><font FACE="Times New Roman" SIZE="3"><b><p ALIGN="JUSTIFY">CourseID(Text)</b></font></td>
        <td WIDTH="33%"><font FACE="Times New Roman" SIZE="3"><b><p ALIGN="JUSTIFY">CourseTitle(Text)</b></font></td>
        <td WIDTH="33%"><font FACE="Times New Roman" SIZE="3"><b><p ALIGN="JUSTIFY">Hours(int)</b></font></td>
      </tr>
      <tr>
        <td WIDTH="33%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">MATH101</font></td>
        <td WIDTH="33%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">Algebra</font></td>
        <td WIDTH="33%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">4</font></td>
      </tr>
      <tr>
        <td WIDTH="33%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">MATH201</font></td>
        <td WIDTH="33%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">Calculus I</font></td>
        <td WIDTH="33%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">4</font></td>
      </tr>
      <tr>
        <td WIDTH="33%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">MATH202</font></td>
        <td WIDTH="33%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">Calculus II</font></td>
        <td WIDTH="33%"><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">4</font></td>
      </tr>
    </table>
    <p><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3">现在就让我们开始在上一小节</font><font FACE="Times New Roman" SIZE="3">Enroll</font><font SIZE="3">的基础上制作新版本。若当前工程不是</font><font FACE="Times New Roman" SIZE="3">Enroll</font><font SIZE="3">,请读者打开上一小节创建的</font><font FACE="Times New Roman" SIZE="3">Enroll</font><font SIZE="3">工程。</font><font FACE="Times New Roman" SIZE="3"></p>
    <p ALIGN="JUSTIFY"></font><font SIZE="3">首先要把</font><font FACE="Times New Roman" SIZE="3">Course</font><font SIZE="3">编辑框替换成组合框,这包括下面几步:</p>
    <blockquote>
      <blockquote>
        <p ALIGN="JUSTIFY">打开</font><font FACE="Times New Roman" SIZE="3">IDD_ENROLL_FORM</font><font SIZE="3">对话框模板并删除</font><font FACE="Times New Roman" SIZE="3">Course</font><font SIZE="3">编辑框。</p>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -