На этом шаге мы рассмотрим создание шаблона и класса диалога для окна Query Results.
- Создание шаблона диалога Query Results.
- Из галереи Components and Controls Gallery добавьте в проект элементы управления
Microsoft ADO Data Control, version 6.0 (OLE DB) и Microsoft DataGrid Control, Version 6.0 (OLE DB).
Убедитесь, что созданы все соответствующие классы. - Пользуясь рисунком 1 в качестве образца, создайте шаблон диалогового окна Results с идентификатором
IDD_RESULTSDIALOG. Оно должно содержать элемент управления ADO Data Control с заданным по
умолчанию идентификатором IDC_ADODC1 и элемент DataGrid Control с идентификатором
IDC_DATAGRID1. Переименуйте кнопку ОК в Close, а кнопку Cancel удалите.
Рис.1. Шаблон диалога - На вкладке Control диалогового окна ADO Data Control Properties задайте строку подключения
к источнику данных Microsoft OLE DB Provider for SQL Server. На вкладке Connection выберите сервер
Ваш SQL Server и базу данных Stocks. - Снова откройте диалоговое окно ADO Data Control Properties и на вкладке RecordSource из
раскрывающегося списка Command Type выберите 1 - adCmdText. В поле Command Text (SQL) введите следующую команду:SELECT * FROM pricehistory
Рис.2. Вкладка RecordSource - Отредактируйте свойства элемента DataGrid. На вкладке Control сбросьте флажок AllowUpdate, а на вкладке
All для свойства DataSource задайте идентификатор IDC_ADODC1 элемента управления ADO Data Control.
Нажав CTRL+T, проверьте вид получившегося окна Query Results. Убедитесь, что в нем отображены
записи из таблицы цен базы данных Stocks.
Рис.3. Диалоговое окно Query Results
- Создание класса диалога CResultsDialog.
- В ClassWizard создайте класс CResultsDialog.
- На вкладке Member Variables добавьте переменные-члены, перечисленные в таблице 1.
Таблица 1. Переменные-члены класса CQueryDialogИдентификатор Категория Тип переменной Имя переменной IDC_ADODC1 Control CAdodc m_adodc IDC_DATAGRID1 Control CDataGrid m_datagrid - Закройте ClassWizard. Откройте файл ResultsDialog.h и добавьте в
открытый раздел класса CResultsDialog следующие переменные.CString m_strQuery; CString m_strCaption;
Далее Вы реализуете функцию CResultsDialog::OnInitDialog() для инициализации диалогового окна
Query Results. Она помещает в поле со списком перечень ценных бумаг из открытого файла, выбирает
текущую бумагу, а также инициализирует элемент управления Date Time Picker, считывая из файла даты начала и конца периода.
- Инициализация диалогового окна Query Results.
- Чтобы включить класс C_Recordset, сгенерированный в результате добавления в проект элемента
управления ADO Data Control, поместите в начало файла ResultsDialog.cpp такую строку:#include "_recordset.h"
- Средствами ClassWizard создайте функцию CResultsDialog::OnInitDialog(). Замените строку
с комментарием //TODO следующим кодом:m_adodc.SetRecordSource( m_strQuery ); m_adodc.Refresh(); C_Recordset cRS = m_adodc.GetRecordset(); long lRecs = cRS.GetRecordCount(); if( lRecs < 1 ) { AfxMessageBox( "No records match this query" ); EndDialog( IDCANCEL ); } m_datagrid.SetCaption( m_strCaption );
Текст измененного приложения можно взять здесь (128,1 Кб).
На следующем шаге мы рассмотрим обработку команды меню Query Database.