home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tricks of the Windows Gam…ming Gurus (2nd Edition)
/
Disc2.iso
/
msdn_vcb
/
samples
/
vc98
/
mfc
/
database
/
bindenrl
/
sectndlg.cpp
< prev
next >
Wrap
C/C++ Source or Header
|
1998-03-26
|
4KB
|
137 lines
// SectnDlg.cpp : implementation file
//
// This is a part of the Microsoft Foundation Classes C++ library.
// Copyright (C) 1992-1998 Microsoft Corporation
// All rights reserved.
//
// This source code is only intended as a supplement to the
// Microsoft Foundation Classes Reference and related
// electronic documentation provided with the library.
// See these sources for detailed information regarding the
// Microsoft Foundation Classes product.
#include "stdafx.h"
#include "SectnDlg.h"
// #include "dbcombo.h"
#include "msmask.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CSectionPage property page
// IMPLEMENT_DYNCREATE(CSectionPage, CPropertyPage)
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
CSectionPage::CSectionPage() : CPropertyPage(CSectionPage::IDD)
{
m_initiated=FALSE;
//{{AFX_DATA_INIT(CSectionPage)
//}}AFX_DATA_INIT
}
CSectionPage::~CSectionPage()
{
}
void CSectionPage::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSectionPage)
//}}AFX_DATA_MAP
}
BOOL CSectionPage::OnInitDialog()
{
CPropertyPage::OnInitDialog();
CMSMask* pCourseID = (CMSMask*) GetDlgItem(IDC_COURSE);
// bind the edit
if(m_pCourseRDC!=NULL)
pCourseID->BindDefaultProperty(0x16,VT_BSTR,_T("CourseID"),m_pCourseRDC);
if(m_pCourseRDC!=NULL)
{
m_initiated=TRUE;
OnCourseChanged(); // adjust the rowset for Course & students
}
return TRUE;
}
BOOL CSectionPage::OnCourseChanged()
{
if(m_initiated==FALSE)
return TRUE;
TRACE(_T("-----------Course changed for section.\n"));
CRdc* pSectionRDC = (CRdc*) GetDlgItem(IDC_RDCSECTION);
CMSMask* pCourseID = (CMSMask*) GetDlgItem(IDC_COURSE);
ASSERT(pSectionRDC!=NULL && pCourseID!=NULL);
if(pSectionRDC!=NULL && pCourseID!=NULL)
{ // change the DataSource and refresh everything
CString strCourseID=pCourseID->GetText();
strCourseID=_T("SELECT * from Section WHERE CourseID='")+strCourseID+_T("'");
pSectionRDC->SetSql(strCourseID);
pSectionRDC->Refresh();
return TRUE;
}
return FALSE;
}
BOOL CSectionPage::OnStudentsChanged()
{
if(m_initiated==FALSE)
return TRUE;
TRACE(_T("----------- Section changed for Students.\n"));
CRdc* pStudentRDC = (CRdc*) GetDlgItem(IDC_RDCSTUDENT);
CMSMask* pCourseID = (CMSMask*) GetDlgItem(IDC_COURSE);
CMSMask* pSection = (CMSMask*) GetDlgItem(IDC_SECTION);
ASSERT(pStudentRDC!=NULL && pCourseID!=NULL && pSection!=NULL);
if(pStudentRDC!=NULL && pCourseID!=NULL && pSection!=NULL)
{ // change the DataSource and refresh everything
CString strCourseID=pCourseID->GetText();
CString strSection=pSection->GetText();
// get the SQL defining the columns
CString strSQL=_T("SELECT Student.StudentID, Name, GradYear, Grade from Student, Enrollment WHERE Student.StudentID=Enrollment.StudentID");
// add the search condition to restrain the rowset to active section only
strCourseID=strSQL+
_T(" and Enrollment.CourseID='")+strCourseID+_T("'")+
_T(" and Enrollment.SectionNo='")+strSection+_T("'");
pStudentRDC->SetSql(strCourseID);
pStudentRDC->Refresh();
return TRUE;
}
return FALSE;
}
BEGIN_MESSAGE_MAP(CSectionPage, CPropertyPage)
//{{AFX_MSG_MAP(CSectionPage)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSectionPage event handlers
BEGIN_EVENTSINK_MAP(CSectionPage, CPropertyPage)
ON_DSCNOTIFY(CSectionPage, IDC_RDCSECTION, OnDSCSectionNotify)
END_EVENTSINK_MAP()
//////////////////////////////////////////////////////
// This function is called each time the event was fired in IDC_RDCSECTION control
// We use it to adjust STUDENT query parameter in
//
BOOL CSectionPage::OnDSCSectionNotify(DSCSTATE nState, DSCREASON nReason, BOOL* pBool)
{ // Section RDC's state changed
if(nReason==dscMove && nState==dscDidEvent) // row moved in course cursor
{ // notify the student list
return OnStudentsChanged(); // pass the event
}
return TRUE; // event handled
}