![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Задание 7. Разработать методы поиска данных – 1 час. ⇐ ПредыдущаяСтр 8 из 8
Функцию поиска данных в приложений необходимо выполнить на основе данных, имеющихся в базе данных варианта лабораторной работы. параметры поиска необходимо согласовать с преподавателем. Общий подход к поиску реализации поиска данных, получаемых из базы данных, рассмотрим на примере поиска сотрудника по фамилии и должности. Для реализации функций поиска добавьте на страницу приложения элементы контроля в соответствии с рис. 6.18.
XAML-описание элементов контроля, поддерживающих поиск имеет следующий вид. < TextBlock Name=" TextBlockSurname" Text=" Фамилия" /> < TextBlock Name=" TextBlockTitle" Text=" Должность" /> < TextBox Name=" TextBoxSurname" TextChanged=" TextBoxSurname_TextChanged" /> < ComboBox Name=" ComboBoxTitleItemsSource=" {Binding Source={StaticResource listTitle}}" DisplayMemberPath=" Title1" SelectionChanged=" ComboBoxTitle_SelectionChanged" /> < Button Name=" ButtonFindSurname" ToolTip=" Поиск по фамилии" IsEnabled=" False" Click=" ButtonFindSurname_Click" > < Image Source=" Images/Search.jpg" /> < /Button> < Button Name=" ButtonFindTitle" ToolTip=" Поиск по должности" IsEnabled=" False" Click=" ButtonFindTitle_Click" > < Image Source=" Images/Search.jpg" /> < /Button>Элементы контроля размещаем в рамке BorderFind. В рамке располагаем сетку gridFind с тремя колонками и строками. Первая строка в объединенных колонках содержит текстовый блок find с текстом " Поиск". Во второй и третьей строках первой колонки размещены текстовые блоки TextBlockSurname и TextBlockTitle соответственно. Во второй колонке размещаются элементы контроля для ввода информации: текстовый блок TextBoxSurname (вторая строка) и выпадающий список ComboBoxTitle (третья строка). В третьей колонке размещаются кнопки: для поиска по фамилии ButtonFindSurname (вторая строка) и для поиска по должности ButtonFindTitle (третья строка). При загрузке страницы PageEmployee рамка BorderFind невидима, так как свойству Visibility задано значение " Hidden". При активизации команды Find из меню или панели инструментов запускается обработчик FindCommandBinding_Executed, который делает рамку ButtonFindTitle видимой. private void FindCommandBinding_Executed(object sender, ExecutedRoutedEventArgs e) { BorderFind.Visibility = System.Windows.Visibility.Visible; }Если в текстовом блоке TextBoxSurname не введена информация или в выпадающем списке ComboBoxTitle не сделан выбор, то кнопки ButtonFindSurname и ButtonFindTitle будут недоступны. При вводе информации в текстовый блок TextBoxSurname запускается обработчик TextBoxSurname_TextChanged, который делает доступной кнопку ButtonFindSurname. private void TextBoxSurname_TextChanged(object sender, TextChangedEventArgs e){ ButtonFindSurname.IsEnabled = true; ButtonFindTitle.IsEnabled = false; ComboBoxTitle.SelectedIndex = -1; }При нажатии кнопки ButtonFindSurname запускается обработчик ButtonFindSurname_Click. private void ButtonFindSurname_Click(object sender, RoutedEventArgs e){ string surname = TextBoxSurname.Text; DataEntitiesEmployee = new TitlePresonalEntities(); ListEmployee.Clear(); ObjectQuery< Employee> employees = DataEntitiesEmployee.Employees; var queryEmployee = from employee in employees where employee.Surname == surname select employee; foreach (Employee emp in queryEmployee) { ListEmployee.Add(emp); } if (ListEmployee.Count > 0) { DataGridEmployee.ItemsSource = ListEmployee; ButtonFindSurname.IsEnabled = true; ButtonFindTitle.IsEnabled = false; } else MessageBox.Show(" Сотрудник с фамилией \n" +surname+" \n не найдан", " Предупреждение", MessageBoxButton.OK, MessageBoxImage.Warning); }В данном обработчике события Click выполняется LINQ запрос на получение данных из базы TitlePersonal в соответствии с заданной фамилией сотрудника. var queryEmployee = from employee in employees where employee.Surname == surname select employee;При выполнении запроса по фамилии страница PageEmployee имеет вид, приведенный на рис. 6.19
Найденные данные по сотруднику можно редактировать и удалять. Если поиск в базе данных не привел к нахождению информации, то выдается информационное сообщение (рис. 6.20).
Для поиска информации из базы данных по должности сотрудников необходимо сделать выбор из выпадающего списка ComboBoxTitle. В результате выбора срабатывает обработчик ComboBoxTitle_SelectionChanged, который делает доступной кнопку ButtonFindTitle. При нажатии на кнопку ButtonFindTitle срабатывает обработчик ButtonFindTitle_Click. private void ButtonFindTitle_Click(object sender, RoutedEventArgs e){ DataEntitiesEmployee = new TitlePresonalEntities(); ListEmployee.Clear(); Title title = ComboBoxTitle.SelectedItem as Title; ObjectQuery< Employee> employees = DataEntitiesEmployee.Employees; var queryEmployee = from employee in employees where employee.TitleID == title.ID orderby employee.Surname select employee; foreach (Employee emp in queryEmployee) { ListEmployee.Add(emp); } DataGridEmployee.ItemsSource = ListEmployee; }При запуске данного обработчика выполняется LINQ-запрос к базе данных TitlePersonal для выборки данных по сотрудникам, имеющим заданную должность. Для обновления выводимого списка сотрудников в приложение добавлена функция обновления, которая реализуется командой Refresh. Данная команда добавлена в коллекцию команд страницы PageEmployee. < Page.CommandBindings>.... < CommandBinding Command=" Refresh" Executed=" RefreshCommandBinding_Executed" />... < /Page.CommandBindings>Вызов команды добавлен в меню < MenuItem Header=" Обновить" Command=" Refresh" />и панель инструментов < Button Name=" Refresh" Margin=" 5, 2, 5, 2" Command=" Refresh" ToolTip=" обновить данные по сотрудникам" > < Image Source=" Images/Refresh.jpg" > < /Image> < /Button>Основное назначение обработчика команды RefreshCommandBinding_Executed – обновление списка ListEmployee. private void RefreshCommandBinding_Executed(object sender, ExecutedRoutedEventArgs e){ RewriteEmployee(); DataGridEmployee.IsReadOnly = false; isDirty = false; SetUnvisibilityFind(); }Команда " Обновить" обычно используется после поиска данных или ввода данных по новому сотруднику. Варианты заданий На рис. l.1 приведена структура базы данных информационной системы внутреннего учета инвестиционной компании. Задачей лабораторной работы является разработка одной из подсистем для данной информационной системы.
Вариант 1. Информационная подсистема ведения счетов клиентов Назначение подсистемы поддержание в актуальном состоянии инвестиционных счетов клиентов.
Назначение атрибутов таблицы Счет – Account:
Назначение атрибутов таблицы Тип счета – TypeAccount:
Назначение атрибутов таблицы Банк – Bank:
Назначение атрибутов таблицы Договор –Agreement:
Вариант 2. Информационная подсистема ведения адресов клиентов Назначение подсистемы поддержание в актуальном состоянии адресов клиентов.
Назначение атрибутов таблицы Адрес – Address:
Назначение атрибутов таблицы Город –City:
Назначение атрибутов таблицы Регион –Region:
Назначение атрибутов таблицы Страна –Country:
Вариант 3. Информационная подсистема ведения договоров клиентов Назначение подсистемы поддержание в актуальном состоянии договоров клиентов.
Назначение атрибутов таблицы Договор –Agreement:
Назначение атрибутов таблицы Статус договор –StatusAggrement:
Назначение атрибутов таблицы Клиент –Person:
Вариант 4. Информационная подсистема ведения клиентов – физических лиц Назначение подсистемы поддержание в актуальном состоянии информации по клиентам – физическим лицам.
Назначение атрибутов таблицы Клиент –Person:
Назначение атрибутов таблицы Физическое лицо –Citizen:
Назначение атрибутов таблицы Документ – Document:
Вариант 5. Информационная подсистема ведения клиентов – юридических лиц Назначение подсистемы поддержание в актуальном состоянии информации по клиентам – юридическим лицам.
Назначение атрибутов таблицы Клиент –Person:
Назначение атрибутов таблицы Физическое лицо –Company:
Назначение атрибутов таблицы Организационно-правовая форма –OrgLegForm:
Назначение атрибутов таблицы Орган лицензирования – OrgLecenses
Назначение атрибутов таблицы Орган регистрации – OrgRegistration
Вариант 6. Информационная подсистема учета сделок с ценными бумагами Назначение подсистемы поддержание в актуальном состоянии информации по сделкам с ценными бумагами клиентов.
Назначение атрибутов таблицы Сделка – Deal:
Назначение атрибутов таблицы Вид сделки –DealVerity:
Назначение атрибутов таблицы Тип сделки –DealType:
Назначение атрибутов таблицы Вид взаиморасчетов по сделке –DealKind:
Назначение атрибутов таблицы Место проведения сделки –DealPlace:
Назначение атрибутов таблицы Валюта – Currency:
Вариант 7. Информационная подсистема учета ценных бумаг Назначение подсистемы поддержание в актуальном состоянии информации по торгуемым ценным бумагам.
Назначение атрибутов таблицы Финансовый инструмент –FinAsset:
Назначение атрибутов таблицы Тикер ценной бумаги–Tiker:
Назначение атрибутов таблицы Акция–Security:
Назначение атрибутов таблицы Облигация – Bond:
Вариант 8. Информационная подсистема поручений по сделкам с ценными бумагами Назначение подсистемы поддержание в актуальном состоянии информации по поручениям клиентов.
Назначение атрибутов таблицы Поручение –Order:
Назначение атрибутов таблицы Тип сделки – OrderDealType:
Назначение атрибутов таблицы Вид сделки – OrderVeriety:
Назначение атрибутов таблицы Валюта – Currency:
Вариант 9. Информационная подсистема учета клиентов компании Назначение подсистемы поддержание в актуальном состоянии информации по клиентам компании.
Назначение атрибутов таблицы Клиент –Person:
Назначение атрибутов таблицы Адрес электронной почты –Email:
Назначение атрибутов таблицы Телефон – Telephone:
Назначение атрибутов таблицы Статус – Status:
Назначение атрибутов таблицы Вид клиента –Veriety:
Вариант 10. Информационная подсистема учета операций с ценными бумагами Назначение подсистемы поддержание в актуальном состоянии информации по операциям с ценными бумагами клиентов компании. Рис. l.11. Структура базы данных подсистемы учета операций с ценными бумагами Назначение атрибутов таблицы Операция – Operation:
Назначение атрибутов таблицы Субсчет –SubAccount:
Назначение атрибутов таблицы План счетов –AccountPlan:
Назначение атрибутов таблицы Сделка – Deal:
|