Методические указания по выполнению лабораторных и практических работ по мдк
Скачать 3.25 Mb.
|
Этап 3. Получение данных 1. Откройте код события Load формы, и проверьте, сгенерировался ли там автоматически вызов метода Fill. (может быть с разницей в именах). Если нет такого кода запишите (исправив если это необходимо имена объектов). Найдите в лекционном материале для сего вызывается метод Fill объекта DataAdapter ЗаказTableAdapter.Fill(Mmm_sqlDataSet3.заказ) Этап 4. Перемещение по результатам 2. Добавим на форму возможность навигации по записям. Перетащите элемент управления BindingNavigator с закладки Data Toolbox на свою форму. Выбрав элемент управления BindingNavigator, нажмите свойство BindingSource в окне Properties и выберите в ниспадающем списке объект BindingSource (созданный на 2-ом этапе). Элемент управления BindingNavigator по умолчанию включает в себя кнопки, по- зволяющие пользователю добавлять и удалять элементы. Для демонстрации возможностей изменим действия связанные с кнопкой «Удалить» - чтобы на экран выводилось диалоговое окно с предложением пользователю подтвердить удаление текущего элемента. Существует следующая проблема - пока код выполняется, элемент управления BindingNavigator уже неявно вызывает метод RemoveCurrent соответствующего объекта BindingSource. Элемент управления BindingNavigator имеет свойство Deleteitem. Как только вы нажмете связанный с ним тип ToolStripitem, этот элемент вызовет метод RemoveCurrent соответствующего объекта BindingSource. Сбрасывание свойства Deleteitem элемента управления BindingNavigator не позволит последнему неявно вызвать указанный метод. 1. В окне Properties для элемента управления BindingNavigator выберите свойство DeleteItem. Затем выберите вверху списка вариант none. 2. Теперь дважды щелкните пункт Delete ToolStripButton на элементе управления BindingNavigator — и добавьте следующий код. Dim result As DialogResult result = MsgBox("Вы действительно хотите удалить заказ?", MsgBoxStyle.YesNo) If result = Windows.Forms.DialogResult.Yes Then BindingSource1.RemoveCurrent() End If Этап 6. Передача изменений Добавим на навигатор кнопку “Сохранить” для передачи изменений в БД 1. Для добавления нового элемента выберите элемент управления BindingNavigator. На нем справа от последнего элемента появится маленькая направленная вниз стрелочка. Нажмите эту стрелку и вы увидите список всех доступных элементов (Button, Label и других). Добавьте новый элемент Button, задайте ему Свойство DisplayStyle=Text, Cвойство text = Сохранить. 25 2. Добавьте в событие «Щелчок по кнопке Сохранить» соответствующий обработчик. (если необходимо измените имен ЭУ так как они называются у вас) Me.Validate Me.BindingSource1.EndEdit() Me. ЗаказTableAdapter.Update(me.Mmm_sqlDataSet) 1-ая строка = После вызова метода Validate форма проверяет достоверность данных. 2-ая строка = Благодаря объекту BindingSource можно соответственно записывать или пропускать изменения с помощью методов EndEdit или CancelEdit. При переxоде к другой записи будет неявно вызван метод EndEdit, если изменения были внесены через связанные элементы управления. 3-ая строка = метод Update передает отложенные изменения, хранимые в объекте DataTable. Этап 7. Просмотр дочерних данных На данном этапе приложение позволяет просматривать и изменять данные таблицы Заказы. Доработаем форму так, чтобы можно было работать с составом заказов. 1. Откройте в конструкторе класс DataSet со строгим контролем типов (созданный на 1-ом этапе данной лабораторной работе) – это можно сделать, например, дважды щелкнув по объекту DataSet в окне SolutionExplorer. 2. Конструктор класса DataSet со строгим контролем типов автоматически добавляет объект DataRelation между двумя таблицами DataSet, но не связывает новый объект DataRelation с объектом ForeignKeyConstraint. Дважды щелкните объект DataRelation между таблицами Заказ и Состав_заказа в конструкторе, выберите опцию Both Relation And Foreign Key Constraint и задайте свойствам Update Rule и Delete Rule значения Cascade. 3. Закройте конструктор окна DataSet с сохранением 4. Теперьпосмотрите содержимое объекта DataSet со строгим контролем типов в окне Data Sources. Вы увидите два отдельных узла состав_заказа, как на рисунке 18: один из узлов — брат, а второй — сын узла «Заказ». Рисунок 18 – Источник данных Если пытаться перетащить один из узлов на форму, то произойдет создание объектов DataGndView, TableAdapter, BindingSource для работы с составом_заказов. Разница между показанными на рисунке двумя объектами состоит в том, что при перетаскивании узла состав_заказа БРАТ элемент управления DataGridView выводит на экран все записи таблицы состав_заказа. Если перетащить узел состав_заказа, который приходится узлу заказ сыном, то в DataGridView выводится на экран будут только записи таблицы состав_заказа для нужного нам заказа. ПОЭТОМУ перетащите на вашу форму объект-сын состав_заказов. 5. Для объекта DataSet необходимо, чтобы записи в таблице состав_заказа соответствовали выбранному в данный момент в верхней части формы значению таблицы Заказ. Попробуйте запустить форму. Запустив форму в таком виде, как мы сейчас ее сделали, вы получите сообщение об исключительной ситуации. Чтобы указанного сообщения не было, необходимо изменить код таким образом, чтобы код для получения информации о составе заказа появлялся после запроса информации о заказе. Откройте код события Load формы, и исправьте код следующим образом (возможно имена объектов у вас будут другими). Порядок 26 вызова метода Fill должен быть именно таким (сначала для родительской Заказ, потом для дочерней состав_заказов) Me.ЗаказTableAdapter.Fill(Me.Mmm_sqlDataSet3.заказ) Me.Состав_заказаTableAdapter.Fill(Me.Mmm_sqlDataSet3.состав_заказа) Этап 8. Совершенствование пользовательского интерфейса Cделаем так, чтобы работать с приложением стало удобнее. Основные усовершенствования формы это: 1. элемент управления СотbоВох для таблицы Магазины, Создадим аналог МастераПодстановки в Access для поля Код_магазина в оформлении таблиц Заказы. Для этого: Убедитесь, что информация из таблицы Магазины (код, название) ранее была добавлена вами в объект DataSet со строгим контролем типов, например, открыв его в окне DataSolution. (если информации из таблицы Магазины нет, добавьте ее, например, с помощью контекстного меню на DataSet Configure DataSet with Wizard) Удалите элемент управления TextBox, который отображал столбец код_магазина. Теперь перетащите элемент управления ComboBox из окна Toolbox на форму. Нажмите небольшую стрелку прямо над этим элементом управления и укажите, что вы хотите использовать элементы, которые можно связывать с данными «Use data Bound Items», как изображено на рисунке 19. Рисунок 19 – Смарт-теги элемента управления ComboBox Диалоговое окно под названием ComboBox Tasks расширится. В ниспадающем списке Data Source выберите таблицу Магазины (под элементами Other Data Sources Project Data Sources ВашDataSet Магазины). Теперь задайте свойству DisplayMember имя столбца название_магазина, а свойству ValueMember имя столбца код_магазина. Наконец, задайте свойству SelectedValue имя столбца код_магазина ИЗ объекта BindingSource, созданного вами для таблицы Заказы. 2. улучшенный формат для числовых значений и столбцы на основе выражения (название_модели и суммаИтого), предназначенные для отображения на экране полезных расчетных значений. Добавим в наше приложение возможность узнать общую стоимость каждого вида товара, а также общую сумму всего товара в заказе. Для создания столбцов, значения которых вычисляются на основе выражений можно использовать свойство Expression объекта DataColumn. Таблица состав_заказа содержит столбцы количество и стоимость. Откройте в конструкторе объект DataSet (2 раза левой кнопкой мыши по dataset в окне SolutionExplorer). С помощью контекстного меню добавьте в таблицу Состав_заказа новый столбец (Add column) с названием итого. В окне свойств задайте свойству Expression объекта DataColumn значение количество*стоимость. Аналогично в открытом окне конструктора DataSet в таблицу Заказы добавьте столбец сумма_заказа, который отображает общую сумму заказа, задав свойству Expression объекта DataColumn значение Sum(Child(FK_состав_заказа_заказ).итого) Свойству DataType всех только что добавленных объектов DataColumn нужно присвоить значение System.Decimal. 27 После этого все новые столбцы можно добавить на форму. Для создания нового столбца сумма_заказа перетащите его из окна Data Sources на форму. Чтобы поместить столбец итого на элемент управления DataGridView, щелкните правой кнопкой мыши структуру, выберите сначала пункт Add Column, а затем — столбец итого. Тип данных нового столбца сумма_заказа — System.Decimal. Поэтому элемент управления TextBox на форме с информацией отображает содержимое этого столбца в стандартном числовом формате. Так, стоимость единицы товара, равная 491,20 руб, в элементе TextBox будет отображаться как 491,2000. Изменим формат этого столбца, чтобы данные отображались в более привычном виде. Для этого выберите этот элемент на форме в среде Visual Studio. Затем перейдите в окно Properties, откройте свойство DataBindings, расположенное в верхней части окна, выберите вариант Advanced и нажмите кнопку с многоточием (...). Появится диалоговое окно Formatting and Advanced Binding. Задайте свойству FormatType значение Currency. Теперь элемент управления TextBox будет отображать содержимое столбца в формате денежных единиц ($491.20, €491.20 и т. п.). Элемент управления DataGridView также позволяет указывать формат строки для столбцов в структуре. Выберите на форме элемент управления DataGridView, щелкните его правой кнопкой мыши и выберите в контекстном меню пункт Edit Columns. В появившемся диалоговом окне выберите столбец, формат которого необходимо изменить (столбец Итого), выберите свойство DefauItCellStyle и нажмите кнопку с многоточием (...).В появившемся диалоговом окне CellStyle Builder выберите свойство Format и нажмите кнопку с многоточием (...). Наконец, в появившемся диалоговом окне Format String укажите нужный формат. Задания для самостоятельной работы. 1. Откройте форму, созданную в лабораторной работе №3 - Разработка формы для работы с данными в среде Vsual Studio без кода, и убедитесь, что при использовании вами мастера он автоматически добавил объект ИмяТаблицыBindingSource в форму. 2. Добавьте на форму следующие элементы управления: 1 Label (название модели), 1 элемент TextBox и 2 кнопки («Поиск по названию», «Фильтр по названию») и напишите обработчики на данные кнопки, выполняющие поиск и фильтр соотвественно, с использованием свойств и методов объекта BindingSource. Практическая работа № 1.58. Безопасность вMssqlServer Цель работы:Познакомиться с политикой безопасности MS SQL Server, с возможностями Transact – SQL по созданию схем, логинов, пользователей и определения прав пользователей. Научиться организовывать со стороны клиентского приложения удаленное управление правами доступа к данным БД. Задание №1: Создание логинов, пользователей и предоставление прав пользователям средствами transact-sql. Указание: Перед выполнением работы ознакомьтесь с теоретическим материалом в презентации к лекции Введение в SQL Server, тема Безопасность. Ход работы: 1. Запустите MS SQL Server Management Studio, подключитесь к серверу, используя технологию 1 2. Выберите контекстом свою базу данных свою БД, используя технологию 6 3. Найдите на панели инструментов среды кнопку «Создать запрос» и нажмите ее. 4. С помощью команд Transact – SQL создадим новый логин для вашей базы данных с именем «qwerty» и паролем «123456». Для создания логинов используется запрос CREATE LOGIN. Ознакомьтесь с синтаксисом запроса, представленным на рисунке 20. 28 Рисунок 20 – Синтаксис запроса Create Login 5. Для создания нашего логина необходимо набрать и выполнить следующий запрос: CREATE LOGIN qwerty WITH PASSWORD='123456' 6. После создания логина, можно приступить к созданию пользователя для этого логина. Создадим одноименного пользователя «qwerty». Для создания пользователей используется запрос CREATE USER. Ознакомьтесь с синтаксисом запроса, представленным на рисунке 21. Рисунок 21 – Синтаксис запроса Create User 7. Для создания нашего пользователя необходимо набрать и выполнить следующий запрос: CREATE USER qwerty FOR LOGIN qwerty 8. После добавления логина и пользователя отключитесь от сервера, нажав в обозревателе объектов кнопку «Отключить», изображение которой представлено на рисунке 22. 29 Рисунок 22 – Отключение от сервера 9. Подключитесь к серверу с помощью нажатия на кнопку «Подключение» под именем qwerty с паролем 123456 10. Разверните в обозревателе объектов свою БД, разверните узел «Таблицы» и убедитесь, что данный пользователь не имеет доступа ни к каким таблицам БД. 11. Отключитесь и подключитесь заново к серверу с правами администратора (то есть пользователь sa). 12. Добавим для пользователя qwerty возможность просмотра таблицы Модель и добавления записей в таблицу Модель. Для передачи прав пользователю используется SQL запрос GRANT. Ознакомьтесь с синтаксисом запроса, представленным на рисунке 23. Рисунок 23 – Синтаксис запроса GRANT 13. Для передачи прав пользователю qwerty на просмотр и добавления записей в таблице Модель необходимо набрать и выполнить следующие два запроса: Grant Select On модель to qwerty; Grant Insert On модель to qwerty; 14. После успешного выполнения предыдущих запросов, отключитесь и подключитесь заново к серверу как пользователь qwerty. 15. Разверните в обозревателе объектов свою БД, разверните узел «Таблицы» таблица Модель, просмотрите записи, добавьте новую и убедитесь, что данный пользователь имеет права просмотра и добавления для таблицы. Задание №2: В среде MS Visual Studio необходимо создать Windows-приложение, которое позволит добавлять новых пользователей для вашей БД вида, представленного на рисунке 24. Рисунок 24 – Форма для добавления пользователя Ход работы: 30 1. Добавьте в проект новую форму. Добавьте на форму следующие компоненты: 2 Label, 2 textBox, 1 Button и измените их свойства в соответствии с рисунком 24. 2. Добавьте обработчик для открытия только что добавленной формы при выборе в главном меню проекта пункта АдминистрированиеДобавить пользователя. 3. Добавьте в код формы ссылку на пространства имен для работы с объектами ADO: Imports System.Data Imports System.Data.SqlClient 4. В коде формы «Добавить пользователя», в процедуре-обработчике кнопки «Добавить» опишите переменную и создайте экземпляр объекта Connection и задайте ей параметры подключения, используя технологии 9,10. 5. Опишите переменную и создайте экземпляр объекта Cоmmand, используя технологию 11. Создаваемый вами объект Command должен быть подключен к ранее (в четвертом пункте) созданному объекту Connection. 6. Задайте для только что созданного объекта Command текст запроса на добавление логина (CREATE LOGIN) с использованием информации из текстовых полей на форме, используя технологию 12 ИЛИ технологию 13. 7. Откройте подключение к БД, используя технологию 15. 8. Выполните одним из методов объект Command, используя ОДНУ из следующих технологий 16,17,18. 9. Закройте подключение к БД, используя технологию 15. 10. Запустите проект, добавьте нового пользователя к вашей БД. 11. Подключитесь к базе данных МММ в среде MS SSMS, используя технологию 1 под именем только что добавленного пользователя. Убедитесь что это возможно. Задание №3. В среде MS Visual Studio необходимо создать Windows-приложение, которое позволит добавлять новых пользователей для вашей БД вида, изображенного на рисунке 25. Рисунок 25 – Форма для добавления привилегий пользователя Ход работы: 1. Добавьте в проект новую форму. Добавьте на форму следующие компоненты: 3 Label, 2 ComboBox, 1 textBox, 1 Button и измените их свойства в соответствии с рисунком 25. В список ComboBox1 занести перечень значений: INSERT; UPDATE; 31 DELETE. В список ComboBox2 занести перечень значений = название таблиц Вашей БД, например: Модель; Готовый_продукт; Заказ; Состав_заказа; Магазин. 2. Добавьте обработчик для открытия только что добавленной формы при выборе в главном меню проекта пункта АдминистрированиеДобавить права для пользователя 3. Добавьте в код формы ссылку на пространства имен для работы с объектами ADO: Imports System.Data Imports System.Data.SqlClient 4. В коде формы «Добавить права для пользователя», в процедуре-обработчике кнопки «Назначить привилегию» опишите переменную и создайте экземпляр объекта Connection и задайте ей параметры подключения, используя технологии 9,10. 5. Опишите переменную и создайте экземпляр объекта Cоmmand, используя технологию 11. Cоздаваемый вами объект Command должен быть подключен к ранее созданному объекту Connection. 6. Задайте для только что созданного объекта Command текст запроса на добавление Прав пользователю (GRANT) с использованием информации из полей со списком и текстовых полей на форме, используя технологию 12 ИЛИ технологию 13. 7. Откройте подключение к БД, используя технологию 15. 8. Выполните одним из методов объект Command, используя ОДНУ из следующих технологий 16,17,18. 9. Закройте подключение к БД, используя технологию 15. 10. Запустите проект, добавьте для какого-либо пользователя права на просмотр таблицы Модели вашей БД. 11. Подключитесь к базе данных МММ в среде MS SSMS под именем только что добавленного пользователя. Убедитесь что возможно просматривать записи из таблицы Модели. |