if (min_time > m_timeFrom)
IsArhiveUsed = 1;
db.Close();
CDialog::OnOK();
}
5.1.4 Функция AddToolTipText
Функция предназначена для добавления всплывающих подсказок к форме “Запрос 1”
Используются следующие переменные:
m_tt – управляющая переменная класса CToolTipCtrl
lf – переменная, являющаяся структурой LOGFONT
str_ToolTip – переменная класса CString, содержащая текст подсказки
Логика работы функции следующая: на первом этапе при помощи переменной m_tt инициализируется параметры всплывающей подсказки, устанавливается возможность вывода многострочных форматированных подсказок, время задержки перед появлением и продолжительность отображения. Далее структура lf инициализируется характеристиками шрифта и выбранный шрифт устанавливается для всплывающей подсказки.
m_tt.Create(this);
m_tt.Activate(TRUE);
m_tt.SetMaxTipWidth(0xFFFFFF);
m_tt.SetDelayTime(TTDT_INITIAL,800);
m_tt.SetDelayTime(TTDT_AUTOPOP,10000);
LOGFONT lf;
memset(&lf,0,sizeof(LOGFONT));
strcpy(lf.lfFaceName,"Times New Roman");
lf.lfHeight = 16;
lf.lfCharSet = RUSSIAN_CHARSET;
font.CreateFontIndirect(&lf);
m_tt.SetFont(&font,TRUE);
Следующий фрагмент программного кода ассоциирует текст всплывающих подсказок с элементами управления диалогового окна.
CString str_ToolTip;
str_ToolTip.Format("Начальная дата\nСнимите флажок чтобы разблокировать начальную дату.");
m_tt.AddTool(GetDlgItem(IDC_CHECK_FROM),str_ToolTip);
str_ToolTip.Format("Конечная дата\nСнимите флажок чтобы разблокировать конечную дату.");
m_tt.AddTool(GetDlgItem(IDC_CHECK_TO),str_ToolTip);
str_ToolTip.Format("Начальная дата\nВыберите начальную дату для запроса");
m_tt.AddTool(GetDlgItem(IDC_DATE_FROM),str_ToolTip);
str_ToolTip.Format("Конечная дата\nВыберите конечную дату для запроса");
m_tt.AddTool(GetDlgItem(IDC_DATE_TO),str_ToolTip);
str_ToolTip.Format("Наименование материала\nВыберите необходимый материал.");
m_tt.AddTool(GetDlgItem(IDC_MATERIAL_NAME),str_ToolTip);
str_ToolTip.Format("Материально ответственное лицо\nВыберите ФИО материально ответственного лица.");
m_tt.AddTool(GetDlgItem(IDC_RECIEVED),str_ToolTip);
str_ToolTip.Format("Сумма\nУкажите искомую сумму.");
m_tt.AddTool(GetDlgItem(IDC_SUM),str_ToolTip);
str_ToolTip.Format("Знак\nВыберите уровень соответствия искомой суммы\nсумме по документу.");
m_tt.AddTool(GetDlgItem(IDC_SIGN),str_ToolTip);
str_ToolTip="Выполнить запрос";
m_tt.AddTool(GetDlgItem(IDOK),str_ToolTip);
str_ToolTip="Отмена";
m_tt.AddTool(GetDlgItem(IDCANCEL),str_ToolTip);
5.2 Программный код, реализующий выполнение запроса и отображающий результаты в экранной форме.
Основные переменные, используемые в функции Filter1.
dialog – переменная класса диалогового окна CQuery1
match – переменная-индикатор, показывающая были ли найдены записи при данном сочетании реквизитов запроса
row – переменная, содержащая следующий номер ряда в таблице, в который будет занесена следующая строка, полученная в результате запроса.
pTrebSet - указатель на класс набора записей, с помощью которого осуществляется доступ к таблице базы данных “Материальное требование”.
pMaterialSet - указатель на класс набор записей, с помощью которого осуществляется доступ к таблице базы данных “Справочник материалов”,
pTrebMaterialSet - указатель на класс набора записей, с помощью которого осуществляется доступ к таблице базы данных “Состав материального требования”.
strSQL – SQL предложение, отправляемое базе данных для выполнения.
NotEmpty – переменная индикатор, показывающее наличие или отсутствие данных в наборе pTrebMaterialSet
m_Grid - управляющая переменная электронной таблицы
Header1, Header2,Header3,Header4 – управляющие переменные заголовков таблицы
Первый этап алгоритма представлен нижеследующим фрагментом программного кода. Логика его работы следующая: имеется основной цикл из двух итераций. На первой итерации происходит обращение к основной базе данных, на второй итерации, если есть такая необходимость, происходит обращение к архивной базе данных.
В процессе выполнения формируются SQL предложения для выборки информации из базы данных на основании реквизитов, введенных в форму входной информации. Результаты запросов заносятся в наборы записей, работы с которыми будем осуществляться на следующем этапе.
for (int i=1;i<=2;i++)
{
if ((i==2) && (dialog.IsArhiveUsed==FALSE))
break;
TrebSet *pTrebSet;
if (i==1)
pTrebSet = new TrebSet(&db);
else
pTrebSet = new TrebSet(&db_arhiv);
CString strSQL = "SELECT * FROM [Материальное требование] WHERE Принял = '" +
dialog.m_strRecieved + "'";
strSQL += " AND [Сумма по документу] "+dialog.m_strSign+dialog.m_strSum;
if (dialog.m_bFrom==FALSE)
{
CTime time = dialog.m_timeFrom;
CString strTime;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.