Автоматизированное рабочее место библиотекаря
Основные элементы среды разработки Visual Studio Integrated Development Environment (IDE - интегрированная среда разработки) C# при создании на языке C# приложений с графически интерфейсом. Способы построения панели инструментов и контекстного меню.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 22.05.2013 |
Размер файла | 5,5 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Установка свойств AutoIncrement, AutoIncrementSeed и AutoIncrementStep для колонки первичного ключаEmployeeID таблицы Employee приведена на рисунке 8.12.
Рис. 8.12 Установка свойств для колонки EmployeeID
Аналогичные установки свойств AutoIncrement, AutoIncrementSeed и AutoIncrementStep необходимо сделать и для колонки JobTitleID таблицы JobTitle.
После создания класса DataSetEmployee и адаптера необходимо создать объекты этих классов, добавив следующий код к файлу FormEmployee.cs.
DataSetEmployee dsEmployee = new DataSetEmployee();
DataSetEmployeeTableAdapters.EmployeeTableAdapter daEmployee =
new Project_К4И_01.DataSetEmployeeTableAdapters.
EmployeeTableAdapter();
DataSetEmployeeTableAdapters.JobTitleTableAdapter daJobTitle =
new Project_К4И_01.DataSetEmployeeTableAdapters.
JobTitleTableAdapter();
После того, как созданы объекты адаптеров данных daEmployee и daJobTitle, а также объект классаDataSetEmployee - dsEmployee необходимо создать метод для заполнения объекта dsEmployee из базы данных (в рассматриваемом примере база данных Employee, созданная в СУБД MS SQL Server 2005 ). Для заполнения данными dsEmployee из базы данных Employee создадим метод EmployeeFill( ):
public void EmployeeFill()
{ daJobTitle.Fill(dsEmployee.JobTitle);
daEmployee.Fill(dsEmployee.Employee);
MessageBox.Show("Метод Fill отработал");}
В методе EmployeeFill( ) для объектов класса DataAdapter применяется метод Fill, который производит заполнение таблиц ( JobTitle и Employee ) объекта dsEmployee данными из базы данных. Метод Fill адаптера данных DataAdapter требует указания в качестве параметров задания соответствующей таблицы DataSet, то есть dsEmployee.JobTitle и dsEmployee.Employee.
Метод MessageBox.Show введен в метод EmployeeFill для первоначального тестирования, после которого его нужно убрать.
Вызов метода EmployeeFill необходимо добавить в обработчик события Load для формы FormEmployee, возникающего при нажатии на пункт меню "Сотрудник".
9. Лабораторная работа: Отображение данных на экранной форме
Цель работы: Изучить основные приемы и способы отображения и связывания данных объекта DataSet и элементов управления Windows- формы.
Основные сведения
Для отображения информации на элементах управления Windows Forms необходимо осуществить их заполнение из соответствующих столбцов и строк таблиц DataSet. Это можно сделать путем написания специального кода, который предназначен для заполнения соответствующих элементов управления или использовать механизм привязки данных к пользовательским интерфейсам .NET.
Windows Forms позволяют отображать данные путем привязки их элементов управления к источникам данных. Привязка данных обычно используется для отображения результатов поиска, детализации сводок, генерации отчетов и ввода данных. Существует два типа привязки данных: простая и сложная. В случае простой привязки данных элемент управления привязывается к отдельному элементу данных. Простая привязка, в основном, используется с такими элементами управления, как поле ввода ( TextBox ) и надпись ( Lable ). При сложной привязке данных элемент управления привязывается более чем к одному элементу данных - обычно к одному или нескольким столбцам в нескольких строках результирующего набора строк. К элементам управления, поддерживающим сложную привязку данных, относятся список ( ListBox ), выпадающий список ( ComboBox ), список данных ( DataList ) и табличный элемент ( DataGrid ).
В технологии привязки элементов управления Windows Forms используется абстрактный классBindingManagerBase. Данный класс синхронизирует все элементы управления Windows Forms (т. е. объектыBinding ), привязанные к одному источнику данных, позволяя отображать информацию об объекте в источнике данных - например, о строке в локальной таблице.
Класс BindingContext используется для создания экземпляра объекта BindingManagerBase, и возвращается при этом объект CurrencyManager или PropertyManager в зависимости от типа источника данных:
Класс CurrencyManager является потомком класса BindingManagerBase и поддерживает указатель на текущий элемент в источнике данных, который реализует интерфейсы IList, IListSource или IBindingList. Источники данных не обязательно поддерживают указатель на текущий элемент. CurrencyManager уведомляет все привязанные элементы управления об изменении текущего элемента, чтобы они могли обновить свои данные. Класс CurrencyManager поддерживает текущее свойство объекта, а не сам объект в списке.
Свойство Position - это индекс с отсчетом от нуля, позволяющий узнать или задать текущую позицию в источнике данных. Свойство Count возвращает количество элементов данных в списке. Свойство Currentвозвращает текущий объект в списке, который необходимо привести к типу объекта в соответствующем источнике данных, прежде чем с ним можно будет работать.
При связывании элемента контроля ListBox устанавливается множественная связь с источником данных. Для связи используются свойства списка DataSource и DisplayMember. Свяжем элемент контроля listBoxEmployee, в котором должен отображаться список фамилий сотрудников, со столбцом EmployeeSurname таблицы Employee. Это можно сделать, добавив следующие строки кода в метод загрузки формы FormEmployee_Load.
this.listBoxEmployee.DataSource = this.dsEmployee;
this.listBoxEmployee.DisplayMember =
"Employee.EmployeeSurname";
Протестируйте добавленный в программу код.
В разрабатываемом приложении на Windows -форме FormEmployee имеются четыре текстовых поля:textBoxSurname, textBoxName, textBoxPatronymic и textBoxNetName. Эти текстовые поля предназначены для отображения информации из одной записи таблицы Employee набора данных dsEmployee. Для того чтобы содержимое текстовых полей автоматически обновлялось при смене записи, их необходимо связать с соответствующими колонками набора данных dsEmployee. Связывание можно осуществить, используя свойствоDataBindings элемента управления TextBox. Например, для элемента управления textBoxSurname можно осуществить связь с источником данных, добавив следующую строку кода в метод загрузки формыFormEmployee_Load.
textBoxSurname.DataBindings.Add("Text", dsEmployee,
"Employee.EmployeeSurname");
Протестируйте добавленный в программу код.
Аналогично свяжите текстовые поля textBoxName, textBoxPatronymic и textBoxNetName с источником данных.
Протестируйте добавленный в программу код.
В таблице Employee значения для атрибута Access (доступ) задается в виде символьной строки, значение которой выбирается из списка элемента управления comboBoxAccess. Коллекцию выпадающего списка элемента управления comboBoxAccess можно задать следующей строкой кода:
this.comboBoxAccess.Items.AddRange(new object[] {"не задан", "администратор",
"начальник смены", "старший оператор", "оператор", "аналитик"});
Для заданной записи источника данных (таблица Employee ) значение столбца Access необходимо отобразить в элементе контроля comboBoxAccess. Это можно сделать аналогично тому, как это делалось для элементов управления TextBox, задавая свойство DataBindings
Протестируйте добавленный в программу код.
Для элемента управления comboBoxStatus необходимо сформировать коллекцию выпадающего списка: не задан, активен, выходной, в отпуске, болеет, не работает, помечен как удаленный.
В таблице Employee значения для атрибута EmployeeStatus (статус) задается в виде целого числа ( 0, 1, 2, 3, 4, 6 ), однако статус сотрудника должен отображаться в элементе управления comboBoxStatus в виде строковых значений в соответствии со значениями его коллекции. В программе необходимо реализовать отображение целочисленных данных из DataSet в текстовые значения в элементе контроля comboBoxStatus. Для этого необходимо отслеживать изменение позиции в таблице источника данных dsEmployee и в соответствии со значением столбца EmployeeStatus активизировать требуемый элемент ( Item ) спискаcomboBoxStatus.
Объявим объект bmEmployee класса BindingManagerBase в форме FormEmployee:
BindingManagerBase bmEmployee;
В конструкторе класса FormEmployee, создадим объект bmEmployee применяя индексатор контентаBindingContext включив в него связывание с таблицей Employee и добавим делегат для события, которое формируется при изменении позиции в данной таблице:
public FormEmployee( )
{
InitializeComponent();
bmEmployee = this.BindingContext[dsEmployee, "Employee"];
// Добавляем делегата PositionChanged для события - изменение
//позиции в таблице Employee DataSet dsEmployee
bmEmployee.PositionChanged += new EventHandler(BindingManagerBase_PositionChanged);
}
Кроме того, необходимо создать обработчик для сформированного события, который на основе выбранной строки ( pos ) таблицы Employee будет задавать свойству Text списка comboBoxStatus значение из коллекцииItems по индексу ( sel ), полученному из столбца EmployeeStatus Employee.
private void BindingManagerBase_PositionChanged(object sender, EventArgs e)
{
int pos = ((BindingManagerBase)sender).Position;
int sel = (int)dsEmployee.Employee[pos].EmployeeStatus;
this.comboBoxStatus.Text = this.comboBoxStatus.Items[sel].ToString();
}
Протестируйте добавленный в программу код.
Для задания в элементе контроля comboBoxJobRole должности сотрудника необходимо получить данные из родительской таблицы JobTitle, с которой таблица Employee связана внешним ключом JobRoleID. Фактически необходимо осуществить вывод данных из справочника (таблица JobTitle ) по данным в основной таблицеEmployee.
В Windows Forms элемент управления ComboBox имеет три свойства, управляющих привязкой к источникам данных. Эти свойства описаны в таблице 9.1.
Таблица 9.1. Свойства элемента управления ComboBox, управляющие привязкой к источникам данных
Свойство |
Описание |
|
Data Source |
Позволяет узнать или задать источник данных для элемента управления. Это может быть объектData Table, DataView или вообще любой объект, реализующий интерфейс IList |
|
DisplayMember |
Позволяет узнать или задать свойство источника данных, которое отображается в элементе управления. В случае DataTable и DataView это имя столбца |
|
ValueMember |
Позволяет узнать или задать свойство источника данных, которое предоставляет значения для элемента управления. В случае DataTable и DataView это имя столбца. По умолчанию задана пустая строка |
Свойство DataBindings объекта ComboBox предоставляет доступ к коллекции ControlBindingsCollection. Метод Add этой коллекции добавляет в неё привязку. Перегруженный вариант метода Add принимает три аргумента:
· PropertyName - имя свойства элемента управления, к которому осуществляется привязка;
· DataSource - имя привязываемого источника данных;
· DataMember - имя свойства привязываемого источника данных.
Вначале связываем элемент контроля comboBoxJobRole с набором данных JobTitle (родительская таблица - справочник), в соответствии с кодом, приведенным ниже.
comboBoxJobRole.DataSource = this.dsEmployee.JobTitle;
comboBoxJobRole.DisplayMember = "JobRoleName";
comboBoxJobRole.ValueMember = "JobRoleID";
После этого необходимо связать comboBoxJobRole с полем JobRoleID основной таблицы Employee (дочерняя таблица), в соответствии со следующим кодом
comboBoxJobRole.DataBindings.Add("SelectedValue", dsEmployee,"Employee.JobRoleID");
После компиляции и запуска приложения экранная форма будет иметь вид, приведенный на рисунке 9.1.
Рис. 9.1 Экранная форма в режиме просмотра (только для чтения)
10. Лабораторная работа: Модификация, вставка и удаление записей в наборе данных
Цель работы: Изучить основные приемы и способы заполнения объекта DataSet, работы с записями набора данных
Основные концепции обновления наборов данных в Microsoft .NET
Когда в приложении пользователь работает с наборами данных DataSet, то фактически он оперирует с записями, оторванными от основной базы и находящимися в памяти компьютера. При такой модели доступа к данным возникает необходимость периодического обновления информации, содержащейся в основной базе данных. Когда пользователь вносит какие-либо изменения в записи таблицы объекта DataSet, то DataSetотслеживает и запоминает все эти изменения. По мере необходимости все сделанные изменения можно вернуть источнику данных. В течение процесса обновления источника данных происходит несколько событий, которые можно использовать для проверки правильности введенной пользователем информации.
Поскольку набор данных это фактически набор записей, оторванных от основной базы и помещенных в оперативную память компьютера, то процесс возврата изменений первоначальному источнику данных является изолированной процедурой и отделен от процесса модификации данных в DataSet.
Модификация источника данных через набор данных происходит в два этапа. На первом этапе модифицируется сам набор данных: пользователь добавляет новые записи, изменяет или удаляет существующие. Все эти процессы происходят в копии, оторванной от основного источника данных. На втором шаге необходимо послать эти изменения от оторванного набора данных к первоначальному источнику данных. То есть все изменения в наборе данных не передаются к основному источнику данных автоматически, этот процесс нужного активизировать явно. Это обычно достигается путем вызова метод Update адаптера данных.
На рисунке 10.1 приведен иллюстративный пример обновления полей EmployeeSurname и EmployeeName таблицыEmployee в соответствии с двухступенчатой схемой обновления данных в DataSet.
Рис. 10.1 Схема двухступенчатого обновления данных в DataSet
Информация в объекте DataSet доступна через его коллекции. Набор данных содержит коллекцию таблиц (DataTable ). Таблица содержат коллекции строк ( DataRow ). Строка содержит коллекцию колонок (DataColumn ). Внесение изменений в наборе данных происходит путем навигации по элементам коллекции и модификации значений конкретных колонок. В объекте DataSet имеется набор методов, которые позволяют модифицировать только сам набор записей (их используют тогда, когда заведомо известно, что обновления не будут передаваться источнику данных). И есть набор методов, которые позволяют обновить информацию, как в наборе данных, так и в источнике данных.
Например, чтобы удалить записи из таблицы можно вызвать метод RemoveAt коллекции ROWS таблицы данных, которая физически удаляет записи из набора данных. Если набор данных используется только как элемент для отображения информации, и не предполагается возвращать изменения источнику данных или передавать другому приложению, то это наиболее оптимальный путь.
Однако если необходимо послать изменения источнику данных или другому приложению, то нужно фиксировать (запоминать) все изменения, которые были сделаны в DataSet. Затем, когда потребуется переслать изменения источнику данных, необходимо будет знать, какие записи были изменены в объекте DataSet и как их найти в источнике данных. Например, если удаляется запись в наборе данных, то нужно запомнить ключевую информацию об этой записи, а затем, когда будет вызван метод адаптера данных DeleteCommand, то ему должны быть переданы параметры удаленной записи, чтобы он смог определить местонахождение аналогичной записи в источнике данных и удалить именно ее.
Когда выполняется модификация записи, то пользователь поочередно изменяет значения отдельных столбцов. Если набор данных содержит ограничения (типа внешних ключей или запрещения присвоения значения null ), возможно, что вся запись может временно находиться в состоянии ошибки, поскольку пользователь не может одновременно присвоить или изменить значения всех столбцов.
Чтобы предотвратить преждевременное нарушение работы программы, можно временно приостановить действие ограничений обновления. Такое действие преследует две цели:
· препятствует преждевременной остановке работы приложения по ошибке, когда пользователь еще не закончил модификацию столбцов записи;
· позволяет обработать некоторые события, в которых можно проверить корректность вводимой пользователем информации.
После того, как пользователь завершил обновление всех колонок записи, можно вновь включить действие ограничений.
Когда происходит модификация записи в наборе данных, то могут возникнуть ошибки. Например, столбцу может быть присвоено значение, которое имеет несоответствующий тип данных, превышает допустимую размерность, нарушается целостность данных и т. п. Для предотвращения сбоя работы приложения при возникновении ошибочных ситуаций имеется возможность проверки правильности вводимой информации на любой стадии обновления данных.
Информация об изменениях в наборе данных поддержана двумя способами: наличие в каждой строке признака, указывающего на факт внесения изменения в строку ( RowState ), сохранение нескольких копий (версий) строки ( DataRowVersion ). На основе этой информации можно однозначно определить, что изменялось в наборе данных и куда адресовать эти изменения в источнике данных.
Объект DataRow имеет свойство DataRowState, в котором хранится информация о состоянии строки данных. В таблице 10.1 приведены возможные значения свойства DataRowState.
Таблица 10.1. Значения свойства DataRowState объекта DataRow
Значение свойства |
Описание |
|
Added |
Строка была добавлена к коллекции строк DataRowCollection (для этой строки существует только текущая версия в наборе данных и отсутствует соответствующая оригинальная версия). Ее не было в наборе данных на момент последнего вызова метода AcceptChanges |
|
Deleted |
Строка была удалена использованием метода DataRow.Delete объекта DataRow |
|
Detached |
Строка была создана, но еще не является элементом коллекции DataRowCollection. ОбъектDataRow находится в этом состоянии сразу после того, как был создан, но еще не добавлен к коллекции, или если он был специально удален из коллекции |
|
Modified |
Значение столбца в строке было изменено |
|
Unchanged |
Строка не изменялась с тех пор, как был вызван метод AcceptChanges |
Наборы данных поддерживают множественные версии записей. Объект DataRow имеет свойство DataRowVersion, в котором хранится информации о версии каждой строки. В таблице 10.2 приведены возможные значения свойства DataRowVersion.
Первоначальная (оригинальная) и текущая версии записей используются тогда, когда требуется вернуть изменения источнику данных. Как правило, когда изменения посылаются источнику данных, то все обновления, которые требуется передать базе данных, находятся в текущей версии записи, а информация из первоначальной (оригинальной) версии используется для того, чтобы определить местонахождение записи, которую нужно модернизировать в таблице источника данных.
Таблица 10.2. Значения свойства DataRowVersion объекта DataRow
Значение свойства |
Описание |
|
Current |
Текущая версия записи. В этой строке содержатся все изменения, выполненные с момента последнего вызова метода AcceptChanges. Если строка была удалена, то у нее нет текущей версии |
|
Default |
Значение по умолчанию (как определено схемой набора данных или источником данных) |
|
Original |
Первоначальная (оригинальная) версия записи. Состояние записи до того, как в нее были внесены какие-либо изменения. Практически эта та версия записи, которая была получена от источника данных |
|
Proposed |
Промежуточная версия записей, которая существует временно (в режиме внесения в нее изменений). То есть она существует в промежуток времени между вызовами методов начала редактирования ( BeginEdit ) и завершением редактирования ( EndEdit ). Вы можете обратиться к этой версии записи в обработчике события RowChanging. Вызов метода CancelEdit полностью отменит все внесенные в строку изменения и удалит промежуточную версию строки данных |
Например, если пользователь изменил значение первичного ключа записи, то в этом случае, если не сохранить оригинальную запись, будет просто невозможно определить местонахождение соответствующей записи в источнике данных, чтобы выполнить в ней замену модифицированных пользователем колонок. Перед инициализацией процедуры обновления можно сравнить первоначальную (оригинальную) версию записи с записью в источнике данных, чтобы определить, вносил ли в нее кто-нибудь изменения с тех пор, как она была загружена в набор данных.
Промежуточная версия может быть задействована тогда, когда необходимо выполнить проверку правильности введенной информации перед тем, как изменить текущую версию.
Первоначальная (оригинальная) или текущая версия строки существуют не всегда. Например, когда в таблицу набора данных добавляется новая строка, то первоначальной версии не существует, поскольку этой строки еще нет в источнике данных (существует только текущая версия). Точно так же, если строка была удалена с использованием метода Delete, то остается только первоначальная версия строки, текущая версия отсутствует.
Для проверки существования определенной версии записи можно использовать свойство строки данных HasVersion. Из программы можно обратиться к любой версии записи, передавая значение DataRowVersion как дополнительный параметр при обращении к значению столбца.
Обычно при работе с приложением модифицируются не все записи в наборе данных. Наборы данных и таблицы данных поддерживают метод GetChanges, что позволяет возвратить только те строки, в которые вносились изменения.
Можно создать любые подмножества измененных записей, используя метод GetChanges для любой таблицы данных ( DataTable.GetChanges ) или для всего набора данных ( Dataset.GetChanges ). Если был вызван метод для таблицы данных, то в результате его работы будет возвращена копия таблицы только с измененными записями. Точно так же, если был вызван метод для набора данных, то будет сформирован новый набор данных только с измененными записями этого набора. Вызов метода GetChanges без указания статуса строк, позволит получить все измененные записи. Если методу GetChanges передать в качестве параметра статус строки (DataRowState ), тогда можно получить нужное подмножество измененных записей: только добавленные записи, записи, отмеченные для удаления, отдельные записи (не являющиеся элементами коллекции строк), модифицированные записи.
Получение подмножества измененных записей особенно полезно тогда, когда требуется переслать записи другому компоненту программы для дополнительной обработки. Вместо того чтобы посылать полный набор данных, можно передать только те записи, которые нуждаются в дополнительной обработке, тем самым уменьшить поток передаваемой между компонентами информации.
В процессе появления изменений в наборе данных, изменяется и свойство RowState для отдельных записей. В приложении можно обеспечить доступ, как к первоначальным, так и к текущим версиям записей, используя свойство RowVersion.
Если все изменения, внесенные пользователем в набор данных, переданы источнику данных, то после этого нет необходимости поддерживать информацию о статусе и версиях записей. Как правило, есть два события, после которых набор данных и источник данных находятся в полностью синхронизированном состоянии:
· сразу после того, как информация была загружена из источника данных в набор данных;
· после передачи всех изменений от набора данных до источника данных.
Можно завершить поддержку обработки изменений набора данных, вызвав метод AcceptChanges (принять изменения). Как правило, метод AcceptChanges вызывается в приложении в двух случаях:
· после загрузки набора данных. Если набор данных был загружен путем вызова метода Fill в адаптер данных, то адаптер данных автоматически завершает процедуру поддержки изменений;
· после того, как изменения в наборе данных были пересланы другому процессу, типа XML Web-service.
Работа метода AcceptChanges приводит к следующему результату:
· значения колонок текущей ( current ) версии записей переносятся в колонки первоначальной ( original ) версии записей (поверх имеющихся там данных);
· удаляются все строки, свойство которых RowState имеет значение Deleted ;
· свойству всех записей RowState присваивается значение Unchanged.
Метод AcceptChanges доступен на трех уровнях. Можно вызвать данный метод для строки (для объекта DataRow), но тогда завершаются изменения только в одной строке. Можно также вызвать этот метод для таблицы (для объекта DataTable ), в результате чего изменения будут зафиксированы во всех строках таблицы. И, наконец, метод можно применить ко всему набору данных (для объекта DataSet ), вследствие чего будут завершены все изменения во всех записях всех таблиц набора данных.
В таблице 10.3 показано, какие изменения будут завершены в зависимости от того, к какому объекту адресован метод AcceptChanges.
Таблица 10.3. Результат работы метода AcceptChanges
Метод |
Результат работы метода |
|
DataRow.AcceptChanges |
Завершение изменений только в определенной строке |
|
DataTable.AcceptChanges |
Завершение изменений во всех строках определенной таблицы |
|
DataSet.AcceptChanges |
Завершение изменений во всех строках, во всех таблицах набора данных |
С методом AcceptChanges связан другой метод - RejectChanges, который выполняет противоположное действие - отменяет все изменения. При вызове метода RejectChanges происходит копирование столбцов строки первоначальной версии в строку текущей версии, а свойству RowState каждой записи присваивается значение Unchanged.
Модификация, вставка и удаление записей в наборе данных
После того, как объект DataSet заполнен данными, пользователи приложения обычно модифицируют полученную информацию, и затем эти изменения пересылаются источнику данных. Так как отдельные записи вDataSet представлены объектом DataRow, то все изменения в набор данных производятся путем модификации, добавления и удаления индивидуальных строк.
Чтобы выполнить редактирование какого-либо значения в наборе данных, необходимо обратиться к конкретному столбцу в определенной строке. К определенному значению в наборе данных можно обратиться следующим образом:
· через индексы таблиц, строк и коллекций столбцов;
· передавая в соответствующие коллекции наименования таблиц и столбцов как строковые переменные.
Модифицирование записей в типизированных и нетипизированных наборах данных осуществляется различными способами.
Наименования таблиц и столбцов в наборах данных без контроля типов (нетипизированные наборы) не доступны во времени разработки приложения и к ним нужно обращаться через их соответствующие индексы.
В типизированных наборах данных используется раннее связывание, за счет чего имена таблиц и столбцов доступны на этапе разработки приложения. Это позволяет создавать более удобочитаемый программный код. В следующем примере показано, как можно модифицировать данные в столбцах JobRoleID и EmployeeSurnameпятой записи таблицы Employee в наборе данных dsEmployee1.
dsEmployee1.Employee[4].JobRoleID = 2;
dsEmployee1.Employee[4].EmployeeSurname = "Иванова";
Для добавление записей в набор данных необходимо создать новую строку и добавить ее к коллекции DataRowсоответствующей таблицы. Следующий пример показывает, как вставить дополнительные строки в объектDataTable - Employee набора данных dsEmployee.
Добавление записи в набор данных происходит следующим образом.
1. Вызовите метод таблицы данных NewRow, который создает новую пустую запись. Эта новая запись наследует коллекцию столбцов DataColumnCollection от исходной таблицы данных Employee.
DataRow employeeRow = Employee.NewRow( );
2. Присвойте колонкам этой строки требуемые значения .
3. employeeRow[JobRoleID] = 1;
4. employeeRow[EmployeeSurname] = "Ларина";
5. employeeRow[EmployeeName] = "Татьяна";
employeeRow[EmployeePatronymic] = "Ивановна";
6. Добавьте новую запись в таблицу, вызвав метод Add объекта
dsEmployee.Employee.Rows.Add(employeeRow);
Удаление записей из набора данных. Если в приложении после удаления записи в наборе данных требуется сделать то же самое и в источнике данных, то необходимо использовать метод Delete таблицы данных. Если ваше приложение не должно пересылать обновления назад источнику данных, тогда возможно прямое удаление записи из коллекции строк.
Для удаления записи из таблицы данных вызовите метод Delete. Этот метод физически не удаляет запись из набора данных; он просто меняет ее статус - отмечает как удаленную запись, и она становится невидимой (перестает быть доступной конечному пользователю приложения).
Следующий пример показывает, как вызвать метод Delete для удаления первой строки таблицы Employee набора данных dsEmployee:
dsEmployee.Employee.Rows[0].Delete( );
Когда происходит обновление (модификация) записей, то в объекте DataTable активизируются определенные события, в обработчике которых можно запрограммировать требуемые действия как до, так и после обновления записи.
Завершение изменений в наборе данных. В наборе данных при внесении изменений в записи (обновление, вставка, удаление) поддерживается и первоначальная (оригинальная), и текущая версии записей. Кроме того, в свойстве RowState каждой записи установлен признак (указатель), находятся ли запись в первоначальном состоянии или она была изменена. Эта информация необходима, когда требуется найти определенную версию строки. Как правило, в приложениях возникает необходимость передачи между компонентами только измененных записей. После того, как проведена нужная обработка всех измененных записей, можно завершить процедуру обновления, вызвав метод набора данных AcceptChanges.
Следующий пример показывает, как вызвать метод AcceptChanges для завершения изменений в таблице Employeeпосле передачи обновлений источнику данных.
daEmployee.Update(dsEmployee, "Employee");
dsEmployee.Employee.AcceptChanges( );
Обновление баз данных из наборов данных. После того, как были сделаны изменения в наборе данных, их можно передать источнику данных. Обычно это делается путем вызова метода Update адаптера данных. Данный метод в цикле просматривает все записи таблицы и определяет, какие операции необходимо выполнить (обновление, добавление или удаление), и, если таковые вообще имеются, выполняет соответствующие команды. Если при просмотре очередной строки метода Update адаптера данных обнаруживает, что строка изменялась, то он автоматически вызовет надлежащую команду данных ( DataCommand ) и обновит на ее основе соответствующую строку в базе данных.
Структура SQL -запроса команды данных будет следующая:
· будет задействован SQL -запрос с предложением UPDATE. Адаптер данных знает, что предложение UPDATEприменяется для тех строк, свойства RowState которых имеет значение Modified ;
· в SQL -запрос будет включено предложение WHERE, указывающее, что обновляться будет строка, для которой, например EmployeeID = 4. Эта часть SQL -запроса отличает целевую строку от всех других строк, потому что поле EmployeeID является первичным ключом таблицы базы данных. Информация для предложенияWHERE будет получена не из текущей, а из оригинальной (первоначальной) версии записи (DataRowVersion.Original ), потому что в текущей версии записи пользователь мог изменить значение первичного ключа.
· в SQL -запрос будет включено предложение SET, для того, чтобы установить новые значения столбцов в соответствующей записи таблицы базы данных.
Обработка исключительных ситуаций при обновлении источника данных из набора данных. После того, как набор данных был изменен и эти изменения приняты, приложение должно вернуть новые данные назад источнику данных. Чтобы модернизировать источник данных содержанием набора данных вызывается метод Update адаптера данных. Адаптер данных выполнит соответствующую команду ( insert, update или delete ), используя значение свойства RowState каждой строки набора данных.
Процедура модернизации источника данных зависит от требований конкретного приложения, но в любом случае должны быть выполнены следующие шаги.
1. Вызов метода Update адаптера данных должен выполняться внутри блока Try...Catch.
2. Если возникла исключительная ситуация, то нужно определить при обработке какой строки набора данных произошла ошибка.
3. Исправление возникшей проблемы в строке данных (либо программным способом, либо, представив пользователю ошибочную строку для внесения в нее изменений), и затем - повторная попытка модернизации источника данных.
Следующий пример показывает, как делать модернизацию источника данных внутри блока Try...catchсодержанием набора данных с именем.
try
{ daEmployee.Update(dsEmployee, "Employee"); }
catch (Exception e)
{
// Код обработки ошибочной ситуации.
String err = e.msg;
MessageBox.Show("Ошибка обновления таблицы базы данных
Employee" + err);
}
Обновление связанных таблиц. Если в наборе данных содержится несколько таблиц, то их необходимо модифицировать индивидуально, вызывая отдельно метод Update каждого адаптера данных. Если таблицы имеют реляционные отношения, то потребуется специфическое обновление базы данных. Обычно в этом случае изменяются и родительская запись и связанные с ней дочерние записи набора данных. Например, при добавлении новой должности формируется одна или более связанных записей сотрудников. Если в самой базе данных заданы правила обеспечения целостности, то при обновлении возможно возникновение ошибок. Например, если переслать в базу данных вновь появившиеся дочерние записи раньше, чем была переслана родительская запись. Поэтому необходимо выполнять определенную последовательность в пересылке: сначала должны послаться новые родительские записи, а потом дочерние.
Наоборот, если вы удаляете связанные записи в наборе данных, необходимо посылать обновления в базу данных в обратном порядке: сначала от дочерней таблицы, а потом - от родительской. В противном случае при обновлении информации в базе данных возникнет ошибка, потому что правила обеспечения целостности не позволят удалить родительскую запись, пока существуют связанные дочерние записи.
Последовательность обновления связанных таблиц. При обновлении связанных таблиц набора данных очень важно соблюдать определенную последовательность, чтобы не нарушить целостность данных основного источника и не сгенерировать ошибочную ситуацию. Чтобы предотвратить возможные ошибки нарушения целостности данных необходимо модернизировать источник данных в следующей последовательности:
· дочерняя таблица: удалить записи;
· родительская таблица: добавить, изменить или удалить записи;
· дочерняя таблица: добавить или изменить записи.
Для модернизации источника данных из набора данных, который содержит две или более связанных таблиц вызовите метод Update каждого адаптера данных.
Следующий пример показывает, как модернизировать источник данных из набора данных, который содержит связанные таблицы. Чтобы следовать за вышеупомянутой последовательностью, создаются три временных набора данных дочерней таблицы, которые содержат только добавленные, только удаленные и только измененные записи. Метод Update вызывается для каждого поднабора данных внутри блока Try...catch. Если при обновлении возникнут ошибки, то они будут перехвачены и обработаны также внутри этого блока (в обработчике исключительных ситуаций). После обновления источника данных вызывается метод AcceptChanges, который "принимает" сделанные изменения и, наконец, удаляются временные наборы данных, чтобы освободить ресурсы.
void UpdateAttemp( )
{
//Набор dsl содержит только удаленные записи дочерней таблицы
DataTable dsl = anyDataset.ChildTableName.GetChanges(DataRowState.Deleted);
//Набор ds2 содержит только добавленные записи дочерней таблицы
DataTable ds2 =
anyDataset.ChildTableName.GetChanges(DataRowState.Added);
//Набор ds3 содержит только измененные записи дочерней таблицы
DataTable ds3 =anyDataset.ChildTableName.GetChanges(DataRowState.Modified);
try
{
//Удаление записей дочерней таблицы
DataAdapter2.Update(dsl);
// Добавление и удаление записей родительской таблицы
DataAdapterl.Update(anyDataset, "ParentTable");
// Добавление записей в дочернюю таблицу
DataAdapter2.Update(ds2);
// Обновление записей дочерней таблицы
DataAdapter2.Update(ds3);
// Завершение процесса модернизации набора данных
anyDataset.AcceptChanges( );
// Удаление временных наборов данных
dsl.Dispose ( );
ds2.Dispose( );
ds3.Dispose( );
}
catch (Exception x)
{
// Обработчик ошибочных (исключительных) ситуаций.
}
}
Модификация данных
Модификация данных в приложении реализуется методом Edit. Для модификации данных необходимо для элементов контроля задать режим редактирования, вызвав метод DisplayEdit и запретить доступ к списку сотрудников в элементе listBoxEmployee. Активизация режима модификации данных по сотруднику осуществляется из пункта меню Действие/Изменить.
private void Edit ( )
{
DisplayForm (false);
this.listBoxEmployee.Enabled = false;
}
При проектировании приложения использовалась технология привязки источника ( DataSet ) данных к элементам управления ( TextBox, ListBox, ComboBox ). При выводе данных на экранную форму проведенная привязка обеспечивала корректность работы приложения. При модификации данных в элементах контроля для текстового поля TextBox механизм связывания автоматически поддерживает синхронизацию между элементом контроля и источником данных. Для списка ComboBox необходимо использовать событие SelectionChangeCommitted, которое им генерируется, когда пользователь изменяет выбранный элемент и подтверждает его изменение. Обработчик этого события принимает аргумент EventArgs. Этот обработчик целесообразно использовать для получения нового значения из ComboBox, когда пользователь его изменит. Для элементов управление обработчики событияSelectionChangeCommitted представлены ниже:
private void comboBoxJobRole_SelectionChangeCommitted(object sender, System.EventArgs e)
{
// Определяем позицию в таблице Employee
int pos = -1;
pos = this.BindingContext[dsEmployee1,
"Employee"].Position;
// Изменение в таблице Employee поля JobRoleID при изменении
// выбора должности (comboBoxJobRole)
dsEmployee1.Employee[pos].JobRoleID =
(short)((DataRowView)comboBoxJobRole.Items[comboBoxJobRole.SelectedIndex])
["JobRoleID"];
}
private void comboBoxAccess_SelectionChangeCommitted(object sender, System.EventArgs e)
{
int pos = -1;
pos = this.BindingContext[dsEmployee1,
"Employee"].Position;
dsEmployee1.Employee[pos].Access =
comboBoxAccess.SelectedItem.ToString();
}
private void comboBoxStatus_SelectionChangeCommitted(object sender, System.EventArgs e)
{
int pos = -1;
pos = this.BindingContext[dsEmployee1,
"Employee"].Position;
dsEmployee1.Employee[pos].EmployeeStatus =
comboBoxStatus.SelectedIndex;
}
Далее можно изменять данные по сотруднику на форме. После изменения данных необходимо сохранить сделанные изменения.
Сохранение данных
Сохранение данных в приложении реализуется методом Save, который активизируется при выборе пункта менюДействие/Сохранить. Для сохранения модифицированной информации в приложении необходимо вначале завершить текущее обновление всех связанных с помощью объектов Binding элементов управления Windows Forms и источника данных. Для этого необходимо вызвать метод EndCurrentEdit класса BindingManagerBase:
bmEmployee.EndCurrentEdit( )
Далее формируется таблица ds1, в которую включаются только модифицированные строки:
DataSetEmployee.EmployeeDataTable ds1 = (DataSetEmployee.EmployeeDataTable)dsEmployee.Employee.
GetChanges(DataRowState.Modified);
Если таблица ds1 не пуста (условие - ds1 != null ) осуществляется попытка обновления базы данных с помощью метода Update адаптера daEmployee и далее уничтожается таблица ds1. Если обновить базу данных не удается, то формируется сообщение об ошибке:
if(ds1 != null)
try
{
this.daEmployee.Update(ds1);
ds1.Dispose( );
dsEmployee.Employee.AcceptChanges();
}
catch(Exception x)
{
string mes = x.Message;
MessageBox.Show("Ошибка обновления базы данных Employee "+mes, "Предупреждение");
this.dsEmployee.Employee.RejectChanges();
}
При завершении алгоритма обновления форма FormEmployee переводится в режим "только для чтения" с помощью метода DisplayReadOnly и фокус должен быть на элементе управления textBoxSurname.
Полный текст модифицированного метода Save приведен далее:
private void Save()
{
string mes = "";
// Завершение текущих обновлений всех связанных с помощью
// объектов Binding элементов управления
bmEmployee.EndCurrentEdit();
///Формирование таблицы, в которую включаются только
// модифицированные строки
DataSetEmployee.EmployeeDataTable ds1 = (DataSetEmployee.EmployeeDataTable)dsEmployee.Employee.
GetChanges(DataRowState.Modified);
if(ds1 != null)
try
{
this.daEmployee.Update(ds1);
ds1.Dispose( );
dsEmployee.Employee.AcceptChanges();
}
catch(Exception x)
{
string mes = x.Message;
MessageBox.Show("Ошибка обновления базы данных Employee "+mes, "Предупреждение");
this.dsEmployee.Employee.RejectChanges();
}
DisplayForm(true);
listBoxEmployee.Enabled = true;
textBoxSurname.Focus();
}
Протестируйте добавленный в программу код.
Добавление данных
Создание новой записи с данными по сотруднику в приложении реализуется методом New. При добавлении новых записей в таблицу Employee базы данных необходимо:
1. Создать новую строку
DataRow rowEmployee = this.dsEmployee.Employee.NewEmployeeRow();
2. Сформировать начальные значения для элементов строки
3. rowEmployee["JobRoleID"] = 1;
4. rowEmployee["EmployeeStatus"] = 0;
5. rowEmployee["EmployeeSurname"] = "";
6. rowEmployee["EmployeeName"] = "";
7. rowEmployee["EmployeePatronymic"] = "";
rowEmployee["Access"] = "не задано";
8. Добавить сформированную строку к таблице Employee
dsEmployee.Employee.Rows.Add(rowEmployee);
9. Установить активную позицию в таблице Employee на добавленную строку
10. int pos = this.dsEmployee.Employee.Rows.Count - 1;
this.BindingContext[dsEmployee, EmployeeID].Position = pos;
11. Задать режим редактирования формы
DisplayForm(false);
12. Сделать список сотрудников недоступным для выбора
listBoxEmployee.Enabled = false;
13. Установить фокус на элементе textBoxSurname
textBoxSurname.Focus();
После задания данных по новому сотруднику необходимо их запомнить в базе данных. Для этого требуется модифицировать метод Save, добавив в него фрагмент кода для вставки новых записей перед кодом, модифицирующим записи.
/// Формирование таблицы, в которую включаются только добавленные строки
DataSetEmployee.EmployeeDataTable ds2 = (DataSetEmployee.EmployeeDataTable)dsEmployee.Employee.
GetChanges(DataRowState.Added);
if(ds2 != null)
try
{
daEmployee.Update(ds2);
ds2.Dispose();
dsEmployee.Employee.AcceptChanges( );
}
catch(Exception x)
{
string mes = x.Message;
MessageBox.Show("Ошибка вставки записи в базу данных Employee "+mes, "Предупреждение");
this.dsEmployee.Employee.RejectChanges();
}
В добавляемом фрагменте проверяется наличие в таблице Employee добавленных строк
ds2 != null
и если они имеются, то производится попытка модифицировать базу данных
daEmployee.Update(ds2);
При вставке новых записей в базу данных метод Update адаптера daEmployee вызывает SQL команду INSERT, которая была сформирована при генерации адаптера. Если первичный ключ таблицы базы данных является суррогатным и генерируется сервером автоматически (задано свойство IDENTITY ), которое корректируется в DataSet.
Протестируйте добавленный в программу код.
Удаление данных
Удаление записи с данными по сотруднику в приложении реализуется методом Remove. В процессе удаления записей по сотрудника используется модальное диалоговое окно для вывода сообщения (см. лабораторную работу 4), вид которого представлен на рисунке 10.2, для предупреждения пользователя при проведении операции.
Рис. 10.2 Диалоговое окно предупреждения пользователя
При выборе пункта меню Действие/Удалить формируется событие, которое обрабатывается методом toolStripButtonRemove_Click. Обработчик вызывает метод Remove, который выполняет удаление данных по сотруднику. В методе Remove определяется позиция, которую необходимо удалить в таблице Employee
int pos = -1;
pos = this.BindingContext[dsEmployee, "Employee"].Position;
Затем формируется строка с фамилией, именем и отчеством, удаляемого сотрудника
string mes = textBoxSurname.Text.ToString().Trim() + " "
+ textBoxName.Text.ToString().Trim() + " " +
textBoxPatronymic.Text.ToString().Trim();
и выводится сообщение в диалоговом окне
MessageBox.Show(" Удалить данные \n по сотруднику \n"+ mes+ "?", "Предупреждение",
MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2);
Далее в зависимости от того, какую кнопку нажал пользователь, осуществляется удаление записи. Если пользователь нажал кнопку "Да", то необходимо выполнить следующий код:
this.dsEmployee.Employee.Rows[pos].Delete();
if (this.dsEmployee.Employee.GetChanges(DataRowState.Deleted) != null)
{
try
{
this.daEmployee.Update(dsEmployee.Employee);
this.dsEmployee.Employee.AcceptChanges();
}
catch (Exception x)
{
string er = x.Message.ToString();
MessageBox.Show("Ошибка удаления записи в базе данных Employee " + er, "Предупреждение");
this.dsEmployee.Employee.RejectChanges();
}
}
При нажатии кнопки "Нет", то необходимо выполнить код:
this.dsEmployee.Employee.RejectChanges();
Протестируйте добавленный в программу код.
Отмена изменений
Отмена модификации записи с данными по сотруднику в приложении реализуется методом Undo. При отмене изменений необходимо завершить текущие обновления связанных элементов управления
bmEmployee.EndCurrentEdit();
и с помощью метода RejectChanges отменить изменения в источнике данных
dsEmployee.Employee.RejectChanges();
Далее необходимо задать режим "только для чтения", выбор строки в списке сотрудников listBoxEmployee и установить фокус на форме.
11. Лабораторная работа: Упорядочивание списков и вычисляемые столбцы DataSet
Цель работы: Изучить основные приемы и способы сортировки данных при заполнении данными DataSet, динамическое изменение структуры DataSet, создание вычисляемых столбцов вDataSet и связывание их с элементами представления
Основные положения
В результате выполнения лабораторных работ 1 - 10 разработано приложение для учета сотрудников предприятия, основная экранная форма которого приведена на рисунке 11.1.
Рис. 11.1 Экранная форма учета сотрудников предприятия
При аттестации разработанного приложения конечными пользователями были сделаны следующие замечания:
· список сотрудников необходимо упорядочить по алфавиту;
· в списке сотрудников необходимо указывать фамилию, имя и отчество.
Упорядочение списка сотрудников по алфавиту
Данные о сотрудниках считываются из таблицы Employee базы данных с помощью SQL -запроса в объект классаDataSet, с которым связан элемент визуализации данных listBoxEmployee. Данные из таблицы Employee базы данных заполняют таблицу DataSetEmployee в той последовательности, как они записаны в базе данных и соответственно в той же последовательности и отображаются в элементе визуализации данныхlistBoxEmployee. Для упорядочения списка сотрудников по алфавиту достаточно упорядочить данные получаемые из базы данных с помощью SQL -запроса, т.е. необходимо модифицировать команду Select.
Для формирования новой команды Select необходимо переконфигурировать Data Adapter - daEmployee.
Конфигурирование Data Adapter
1. В дизайнере класса DataSetEmployee выделите EmployeeTableAdapter (рисунок 11.2) и через контекстное меню откройте помощник конфигуратора адаптера Table Adapter Configuration Wizard (рисунок 11.3).
Рис. 11.2 Дизайнер класса DataSetEmployee
Рис. 11.3. Окно помощника конфигуратора адаптера
2. В окне Table Adapter Configuration Wizard нажмите кнопку Query Builder (рисунок 11.3) . В результате будет выведено окно Query Builder построителя SQL -запросов (рисунок 11.4).
Рис. 11.4 Окно Query Builder построителя SQL-запросов
3. В окно Query Builder построителя SQL -запросов для колонки EmployeeSurname укажите тип сортировки (Sort Type ) - по алфавиту - Ascending (рисунок 11.5). После этого в команде Select добавится код
ORDER BY EmployeeSurname
Полный вид команды Select следующий:
SELECT JobRoleID, EmployeeSurname, EmployeePatronymic,
EmployeeID, EmployeeName, EmployeeStatus, Access, NetName, FirstDate
FROM Employee
ORDER BY EmployeeSurname
Рис. 11.5 Задание режима сортировки данных по фамилии сотрудника
4. Завершите формирование SQL -запроса, нажимая кнопки "OK" и "Next" в окне Query Builder.
После компиляции и запуска приложения список сотрудников будет упорядочен по алфавиту, как показано на рисунке 11.6.
Рис. 11.6 Экранная форма с упорядоченным списком сотрудников
Формирование отображения списка сотрудников с полными данными
Для формирования в списке сотрудников информации об фамилии, имени и отчестве необходимо в таблицуEmpoyee объекта dsEmployee класса DataSetEmployee добавить вычисляемый столбец и связать с этом столбцом элемент списка отображения listBoxEmployee.
Модификацию необходимо проводить в следующей последовательности.
1. Для элемента списка listBoxEmployee очистить привязку к источнику данных. Для этого в методеFormEmployee_Load закомментировать следующие строки кода:
2. //this.listBoxEmployee.DataSource = this.dsEmployee;
//this.listBoxEmployee.DisplayMember = //"Employee.EmployeeSurname";
3. Добавляем в класс FormEmployee метод, который будет в таблицу Empoyee объекта dsEmployee класса Data Set добавлять вычисляемый столбец с фамилией, именем и отчеством сотрудника.
4. private void AddColumsFullName()
5. {
6. dsEmployee.Employee.Columns.Add("FullName", typeof(string),
7. "EmployeeSurname+' '+EmployeeName+' '+EmployeePatronymic");
}
8. Добавляем в класс FormEmployee метод, который будет связывать элемент списка очистить привязку listBoxEmployee с объектом dsEmployee класса Data Set.
9. private void AddListBoxEmployeeDataSource()
10. {
11. listBoxEmployee.DataSource = this.dsEmployee;
12. listBoxEmployee.DisplayMember = "Employee.FullName";
}
13. Вновь созданные методы будем вызывать при загрузке формы FormEmployee. Для этого модифицируем методLoad, добавив в него после метода EmployeeFill вызов методов AddColumsFullName иAddListBoxEmployeeDataSource.
14. После компилирования и запуска программы экранная форма "Учет сотрудников" должна иметь вид, аналогичный, приведенному на рисунке 11.7.
Рис. 11.7 Экранная форма с полными данными по сотрудникам
12. Лабораторная работа: Улучшения интерфейса программы
Цель работы: Изучить основные приемы и способы унификации представления информации для конечного пользователя.
Основные положения
При аттестации модифицированного приложения конечными пользователями и менеджерами организации были высказаны ряд пожеланий:
· в информации по сотрудникам желательно добавить данные по дате приема сотрудника на работу и дате рождения;
· при представлении информации по сотруднику в режиме просмотра желательно все атрибуты представлять однотипно.
Дополнение приложения новой информацией
Модификацию приложения по учету сотрудников организации целесообразно проводить поэтапно.
Шаг 1. Модифицируйте форму представления данных по сотруднику FormEmployee (рисунок 12.1).
Для этого добавьте на форму:
· текстовую метку 1, задав свойство name = labelBirthday и свойство text = "Дата рождения" ;
· текстовую метку 2, задав свойство name = labelFirstDate и свойство text = "Дата приема на работу" ;
...Подобные документы
Объектно-ориентированная технология создания программ. Среда разработки Visual Studio.NET. Особенности среды Microsoft Visual Studio 2010. Приложения C# для расчетов по формулам, консольный ввод-вывод. Форматирование значений данных. Программы с циклами.
методичка [2,1 M], добавлен 11.09.2014Основные алгоритмические структуры. Запись алгоритма в словесной форме, в виде блок-схемы. Система команд исполнителя. Язык высокого уровня. Создание программы и её отладка. Интегрированные среды разработки: Integrated Development Environment, IDE.
лекция [61,7 K], добавлен 09.10.2013Интегрированная среда разработки Delphi и элементы, входящие в ее состав. Математическая модель, алгоритм решения и его свойства. Описание операторов, процедур, функций и методов. Создание приложений по аналитической геометрии и теоретической механике.
курсовая работа [1,8 M], добавлен 26.05.2010Редактор Visual Basic в интерпретации Microsoft - интегрированная среда проектирования (IDE). Средства и инструменты, необходимые программисту для разработки и создания приложений. Характеристика основных возможностей редактора. Запись и запуск макроса.
презентация [531,2 K], добавлен 26.10.2011Средства интегрированной среды Microsoft Visual Studio, предоставляемые программисту для реализации программ на языке С++. Особенности стиля написания программ. Типовые приемы и методы создания и отладки программ. Листинги программ и их тестирование.
лабораторная работа [814,3 K], добавлен 26.05.2013Средства разработки, ориентированные на конкретные СУБД. Наиболее известные приложения на основе Eclipse Platform. Проект NetBeans IDE, его возможности. KDevelop — свободная интегрированная среда разработки для UNIX-подобных операционных систем.
реферат [107,5 K], добавлен 14.04.2014Разработка игры "Угадай персонажа", ее суть и содержание. Запоминание новых персонажей и вопросов, коррекция базы данных. Использование языка программирования С++ и среды разработки Microsoft Visual Studio 2010. Алгоритмы и методы, структура программы.
курсовая работа [571,9 K], добавлен 14.07.2012Языки среды программирования Visual Studio. Стартовая страница интегрированной среды разработки. Окно New Project. Вкладка разработки формы. Перемещение и изменение размера кнопки. Прибавление программного кода к кнопке. Запуск и сохранение проекта.
презентация [1,4 M], добавлен 29.04.2014Введение в Microsoft Visual Studio. Диалоговое окно "Восстановленные файлы" интегрированной среды разработки. Веб-обозреватель интегрированной среды разработки. Диалоговое окно "Проверка подлинности прокси-сервера". Сохранение и восстановление файлов.
реферат [22,0 K], добавлен 29.05.2013Создание программы, реализующей игру "Линии". Среда разработки программы, описание ее общего вида. Основные алгоритмы программы. Реализация программы в среде разработки Microsoft Visual Studio 2008 на языке объектно-ориентированного программирования С++.
курсовая работа [639,0 K], добавлен 16.03.2012Требования к MS Office 2007. Набор средств разработки Visual Studio Tools for Office как альтернатива VBA. Разработка СУБД на базе MS Access. Разработка надстройки "Электронные компоненты" для PowerPoint на языке C# в среде MS Visual Studio 2010.
дипломная работа [5,2 M], добавлен 03.05.2013Элементы объектно-ориентированного программирования. Среда Visual Studio: улучшения интегрированной среды разработки и увеличение ее производительности. Проектирование архитектуры программы и ее интерфейса. Использование двухуровневой системы приложения.
курсовая работа [516,8 K], добавлен 09.08.2015Визуальная среда моделирования в масштабе реального времени, типичные проблемы разработки робототехнических систем. Описание среды Apartment Environment, перемещение камеры по осям координат. Описание системы координат и алгоритма перемещения объектов.
контрольная работа [2,1 M], добавлен 20.09.2010Особенности разработки автоматизированного рабочего места (АРМ) на базе профессиональных персональных компьютеров с архитектурой IBM PC. Разработка АРМ заместителя директора по воспитательной работе в колледже. Выбор системы управления базой данных.
курсовая работа [2,2 M], добавлен 18.12.2015Разработка базы данных, содержащей сведения о студентах, их успеваемости и предпочтениях. Создание таблиц, пользовательских форм, запросов, отчетов, строки меню, панели инструментов, контекстного меню в Access. Настройка параметров запуска приложения.
контрольная работа [682,4 K], добавлен 08.05.2015Компьютерная поддержка деятельности фирмы. Организация бизнеса в сети Интернет. Компания "Intway World Corporation" и ее деятельность. Среды разработки приложения. Графическая среда разработки, язык программирования. Рабочее меню и окна программы.
дипломная работа [867,1 K], добавлен 03.07.2015Виды и принципы компьютерного моделирования. Среда моделирования Microsoft Robotic Studio. Моделирование пространства и объектов рабочей области с помощью визуальной среды Visual Simulation Environment. Создание программы управления мобильным роботом.
дипломная работа [5,0 M], добавлен 15.06.2014Общие сведения о работе программы в среде программирования Microsoft Visual Studio 2008, на языке программирования C++. Ее функциональное назначение. Инсталляция и выполнение программы. Разработанные меню и интерфейсы. Алгоритм программного обеспечения.
курсовая работа [585,5 K], добавлен 24.03.2009Принципы визуального программирования. Создание программы, генерирующей звук через определенные промежутки времени. Visual Basic как средство разработки прототипов программы, для разработки приложений баз данных и компонентного способа создания программ.
лабораторная работа [1,1 M], добавлен 10.12.2014Обзор рынка мобильных приложений, социальных сетей, аналогов. Обзор инструментов разработки: Android Studio, Microsoft visual С# 2012, PostgreeSQL, API Открытых данных Вологодской области, API Социальных сетей. Программный код, разработка интерфейса.
дипломная работа [2,6 M], добавлен 10.07.2017