Разработка программного изделия «Материальное требование» (раздел курсовой работы "Тексты программ"), страница 2

                    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;