Модификации приложения F#
Возможности использования мультипарадигменного языка программирования F# на платформе Microsoft.NET. Алгоритм создания проекта и выбора необходимых параметров. Создание форм и рисование объектов на форме. Работа с базой данных Microsoft Access.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лабораторная работа |
Язык | русский |
Дата добавления | 24.04.2017 |
Размер файла | 1,9 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Лабораторная работа № 22: Различные примеры на F#
Содержание
язык программирование база данные
1. Вводная часть
2. Создание приложения «Приложение F#»
3. Модификация приложения F#: match
4. Модификация приложения F#: создание форм и рисование объектов на форме
5. Модификация приложения F#: работа с базой данных Microsoft Access
6. О приложении к Лабораторной работе № 22
1. Вводная часть
В предыдущей работе было рассказано, что F# -- это язык функционального программирования для платформы.NET. В данной работе будет продолжена работа с этим языком на новых, более объёмных и содержательных примерах.
Повторимся и приведём выдержку из предыдущей лабораторной работы:
F# -- это мультипарадигменный язык программирования, разработанный в подразделении Microsoft Research и предназначенный для исполнения на платформе Microsoft.NET. Он сочетает в себе выразительность функциональных языков, таких как OCaml и Haskell с возможностями и объектной моделью.NET. Язык обеспечивает безопасность относительно типов, неплохую производительность, а также способен выступать в роли языка сценариев.
Поскольку все понятия функционального программирования проникают в основные языки (C#, Visual Basic) через такие технологии, как обобщённые типы.NET или LINQ, язык F# обязан своим успехом, прежде всего сообществу.NET -- причём успешен он был настолько, что в ноябре 2007 года корпорация Microsoft объявила о том, что F# будет переведён в разряд поддерживаемых языков программирования.NET.
Что будет реализовывать в данной работе?
2. Создание приложения «Приложение F#»
После запуска Visual Studio 2010, откроется Начальная страница:
Рис. 2.1 Начальная страница Visual Studio 2010 Professional (русская версия)
Для начала, надо создать пустой проект, для этого выполним последовательно: Файл -> Создать -> Проект… (также можно просто нажать сочетание клавиш Ctrl+Shift+N или пункт «Создать проект…» на Начальной странице):
Рис. 2.2 Создание нового проекта
Откроется окно создания проекта и выбора необходимых нам параметров.
Выберем слева в пункте Установленные шаблоны -> Другие языки -> Visual F#, далее найдём в списке Приложение F#. Также здесь можно выбрать, какой использовать «фреймворк» (набора компонентов для написания программ). В нашем случае выберем.NET Framework 4.
Рис. 2.3 Окно создания нового проекта
В поле Имя вводим LWP22Samples -- это название программы (выбрано по названию лабораторного практикума, номеру и названию работы). В поле Расположение указана конечная директория, где будет находиться весь проект (значение «по умолчанию» можно поменять, выполнив действия: Сервис -> Параметры… -> Проекты и решения -> меняем путь в поле Размещение проектов). Выберем расположение удобное для быстрого поиска. В поле Имя решения вводится либо название программы «по умолчанию» из поля Имя автоматически, либо можно ввести своё собственное. Под этим именем будет создана конечная папка проекта (если Имя и Имя решения разные).
Рис. 2.4 Вводим данные нового проекта «Приложение F#»
После нажатия клавиши ОК, мы увидим сформированный проект и исходный код консольного приложения.
Но на самом деле, после создания такого проекта и ввода имени, мы увидим пустую страницу с кодом и один единственный файл в обозревателе решений (Program.fs):
Рис. 2.5 Обозреватель решений: состав проекта приложения F# сформированного средой разработки
Пустота обусловлена отсутствием нормальных шаблонов в версии среды разработки Visual Studio 2010. Шаблоны приложений (в том числе и консольного) можно получить, например на официальном блоге разработчик F# (Visual Studio F# Team Blog).
Рис. 2.6 Блог команды разработчиков F#: шаблон консольного приложения
Загруженный с сайта шаблон устанавливается в «один клик» (специальное расширение файла, запускает встроенный установщик Visual Studio):
Рис. 2.7 Пример установленного шаблона консольного приложения для F#
Либо можно поискать шаблоны в сети Интернет (окно Создать проект, группа Шаблоны в Интернете):
Рис. 2.8 Шаблоны в Интернете: доступные шаблоны
3. Модификация приложения F#: match
Полностью рабочее приложение будет вовсю использовать директивы open и ссылаться на библиотеки компонентов.NET. Нам понадобятся Ссылки; для добавления ссылок выполним: Проект -> Добавить ссылку...:
В открывшемся окне переходим на вкладку.NET:
Рис. 3.1 Добавление ссылки: добавляем ссылку на компоненты Windows Forms
Нам понадобятся:
System.Windows.Forms;
System.Data;
System.Drawing;
Так будет выглядеть папка «Ссылки» проекта в итоге:
Остальное (библиотеки) будет добавляться использованием «open».
Для начала воспользуемся консолью для реализации следующей функциональности. В F# существует ключевое слово match. Выражение match позволяет управлять ветвлением на основе сравнения выражения с набором шаблонов. Пример:
// Выражение match
match test-expression with
| pattern1 [ when condition ] -> result-expression1
| pattern2 [ when condition ] -> result-expression2
|...
// Шаблон функции
function
| pattern1 [ when condition ] -> result-expression1
| pattern2 [ when condition ] -> result-expression2
|...
И так, реализуем начальную функциональность приложения. Пользователю предложат ввести символы, и на основе ввода будет выдан результат. Добавляем следующий код в файл Program.cs:
// Ключевое слово match: вывод армейских наименований взводов
// Используем библиотеку F#
open System
// Меняем заголовок окна консольного приложения
Console.Title <- "Различные примеры (F#):: Вывод армейских наименований взводов"
// Меняем цвет отображения символов
Console.ForegroundColor <- ConsoleColor.Blue
Console.BackgroundColor <- ConsoleColor.Gray
// Выводим запрос
printfn "Введите букву латинского алфавита (от a до z):"
// Конвертируем введённые символы с заглавные символы
let chrletter = Char.ToUpper(Convert.ToChar(System.Console.ReadLine()))
// match использует переменную chrletter
match chrletter with
// Если значение chrletter "a" или "A", выводим "Alpha"
| 'A' -> printfn "Вам подходит: Alpha"
| 'B' -> printfn "Вам подходит: Bravo"
| 'C' -> printfn "Вам подходит: Charlie"
| 'D' -> printfn "Вам подходит: Delta"
| 'E' -> printfn "Вам подходит: Echo"
| 'F' -> printfn "Вам подходит: FoxTrot"
| 'G' -> printfn "Вам подходит: Golf"
| 'H' -> printfn "Вам подходит: Hotel"
| 'I' -> printfn "Вам подходит: India"
| 'J' -> printfn "Вам подходит: Juliet"
| 'K' -> printfn "Вам подходит: Kilo"
| 'L' -> printfn "Вам подходит: Lima"
| 'M' -> printfn "Вам подходит: Mike"
| 'N' -> printfn "Вам подходит: November"
| 'O' -> printfn "Вам подходит: Oscar"
| 'P' -> printfn "Вам подходит: Papa"
| 'Q' -> printfn "Вам подходит: Quebec"
| 'R' -> printfn "Вам подходит: Romeo"
| 'S' -> printfn "Вам подходит: Sierra"
| 'T' -> printfn "Вам подходит: Tango"
| 'U' -> printfn "Вам подходит: Uniform"
| 'V' -> printfn "Вам подходит: Victor"
| 'W' -> printfn "Вам подходит: Whiskey"
| 'X' -> printfn "Вам подходит: X-Ray"
| 'Y' -> printfn "Вам подходит: Yankee"
| 'Z' -> printfn "Вам подходит: Zulu"
// Если не буква
| _ -> printfn "Вы ввели символ не латинского алфавита"
printfn "\t\t\tНажмите клавишу Enter для продолжения..."
// Пауза
Console.ReadKey()
// Очищаем экран
Console.Clear()
Соответствующие шаблону выражения позволяют выполнять сложное ветвление на основе сравнения тестового выражения с набором шаблонов. В выражении match выражение test-expression по очереди сравнивается с каждым шаблоном, и когда соответствие найдено, вычисляется соответствующее выражение result-expression, а полученное значение возвращается в качестве значения выражения match.
Функция сопоставления шаблонов, продемонстрированная в предыдущей синтаксической конструкции, представляет собой лямбда-выражение (ключевое слово fun), в котором сопоставление шаблонов выполняется непосредственно в аргументе. Функция сопоставления шаблонов, продемонстрированная в предыдущей синтаксической конструкции, эквивалентна следующему:
arg функции ->
сопоставить arg с
| pattern1 [ если condition ] -> result-expression1
| pattern2 [ если condition ]-> result-expression2
|...
Дополнительные сведения о лямбда-выражениях можно посмотреть здесь: Лямбда-выражения: ключевое слово fun (F#).
Полный набор шаблонов должен включать все возможные сочетания входной переменной. Очень часто шаблон с подстановочными знаками «_» используется в качестве последнего шаблона, чтобы обеспечить соответствие любым ранее не сопоставленным входным значениям.
Компилируем приложение (Debug) и запускаем. Вводим любой символ с латинской раскладки клавиатуры и получаем результат:
Рис. 3.1 Результат работы приложения F#: работа match и вывод результата
Добавим следующий код ещё одного примера работы с match:
// Ключевое слово match: вывод календарного месяца
Console.Title <- "Различные примеры (F#):: Вывод календарного месяца"
Console.ForegroundColor <- ConsoleColor.Blue
Console.BackgroundColor <- ConsoleColor.White
printfn "Введите числа в диапазоне от 1 до 12:"
let intmonth = Convert.ToInt32(System.Console.ReadLine())
// match использует переменную intmonth
match intmonth with
// Если значение intmonth = 1, выводим "Январь"
| 1 -> printfn "Вам подходит: Январь (31 день)"
| 2 -> printfn "Вам подходит: Февраль (28/29 дней)"
| 3 -> printfn "Вам подходит: Март (31 день)"
| 4 -> printfn "Вам подходит: Апрель (30 день)"
| 5 -> printfn "Вам подходит: Май (31 день)"
| 6 -> printfn "Вам подходит: Июнь (30 дней)"
| 7 -> printfn "Вам подходит: Июль (31 день)"
| 8 -> printfn "Вам подходит: Август (31 день)"
| 9 -> printfn "Вам подходит: Сетябрь (30 дней)"
| 10 -> printfn "Вам подходит: Октябрь (31 дней)"
| 11 -> printfn "Вам подходит: Ноябрь (30 дней)"
| 12 -> printfn "Вам подходит: Декабрь (31 день)"
| _ -> printfn "Вы ввели число не из диапазона"
printfn "\t\t\tНажмите клавишу Enter для продолжения..."
Console.ReadKey()
Console.Clear()
Рис. 3.2 Результат работы приложения F#: работа match и вывод результата
4. Модификация приложения F#: создание форм и рисование объектов на форме
F# является.NET-языком и ему доступно всё то что можно реализовать и на C#. Например, попробуем поработать с графикой GDI+.
Следующий блок кода будет создавать простую форму Windows Forms и рисовать в ней два объекта. Для выхода с формы будет предусмотрена одна кнопка «Выход» (приложение не будет закрыто).
// Создание формы Windows Forms: Рисование объектов на форме
Console.Title <- "Различные примеры (F#):: Рисование объектов на форме"
open System.Collections.Generic
open System.Windows.Forms
open System.ComponentModel
open System.Drawing
let graphicForm = new Form(Text = "Различные примеры (F#):: Рисование объектов на форме", AutoScaleDimensions = new System.Drawing.SizeF(60.0F, 13.0F), ClientSize = new System.Drawing.Size(500, 200), StartPosition = FormStartPosition.CenterScreen)
// Создаём элементы управления
let exitButton = new Button(Text = "Выход", Location = new System.Drawing.Point(415, 167), Size = new Size(75, 23))
// Событие нажатия на кнопку "Выход"
exitButton.Click.Add(fun quit -> graphicForm.Close())
// Событие прорисовки элементов формы
graphicForm.Paint.Add(fun draw ->
let array = [|new Point(100, 150);new Point(250, 10);new Point(400, 150)|]
// Перо рисования (цвет: синий, толщина 10 пикселей)
let pen = new Pen(Color.Blue, Width = 10.0f)
// Создаём заливку
let brush = new SolidBrush(Color.LightGreen)
// Рисуем треугольник на основе массива точек
draw.Graphics.DrawPolygon(pen, array)
// Заполняем треугольник
draw.Graphics.FillPolygon(brush, array)
// Рисуем эллипс
draw.Graphics.DrawEllipse(pen, 10.0f, 10.0f, 100.0f, 100.0f)
// Заполняем эллипс
draw.Graphics.FillEllipse(brush, 10.0f, 10.0f, 100.0f, 100.0f))
// Добавляем на форму кнопку "Выход"
graphicForm.Controls.Add(exitButton)
// Запускаем новую форму
Application.Run(graphicForm)
printfn "\t\t\tНажмите клавишу Enter для продолжения..."
Console.ReadKey()
Console.Clear()
Компилируем приложение (Debug) и запускаем. Как только доберёмся до этой итерации в приложении, увидим открывшуюся форму и два нарисованных на форме объекта. Для выхода с формы жмём кнопку «Выход»:
Рис. 4.1 Результат работы приложения F#: форма «Рисование объектов на форме»
Следующий пример немного содержательнее. На форме будут создано три кнопки. «Выход», «Загрузить» и «Печать». Вторая кнопка: вызывает стандартный диалог открытия файлов (изображений двух типов: JPEG и GIF). После выбора файла, изображения, оно будет отмасштабировано и помещено в PictureBox на форме. Нажатие на кнопку «Печать» отправит рисунок печататься на первом же возможном принтере (если тот подключен к ПК). Также, если на ПК установлено Microsoft Office 2010 и OneNote 2010 в комплекте с «офисом», нажатие кнопки «Печать» вызовет это приложение. Также, код изменяет курсор на форме на один из стандартных (крест), но можно использовать и свой (закомментированный код). Весь код такой:
// Создание формы Windows Forms: Печать выбранного рисунка
Console.Title <- "Различные примеры (F#):: Печать выбранного рисунка"
open System.Drawing.Printing
open System.Drawing.Imaging
let imageForm = new Form(Text = "Различные примеры (F#):: Печать выбранного рисунка", AutoScaleDimensions = new System.Drawing.SizeF(60.0F, 13.0F), ClientSize = new System.Drawing.Size(500, 250), StartPosition = FormStartPosition.CenterScreen)
// Создаём элементы управления
let exitButton2 = new Button(Text = "Выход", Location=new System.Drawing.Point(400, 210))
let loadButton2 = new Button(Text = "Загрузить", Location=new System.Drawing.Point(320, 210))
let printButton2 = new Button(Text = "Печать", Location=new System.Drawing.Point(240, 210))
let pictueBox2 = new PictureBox(SizeMode = PictureBoxSizeMode.StretchImage, Location = new System.Drawing.Point(20, 20), BorderStyle = BorderStyle.FixedSingle, Size = new System.Drawing.Size(100, 100))
let label2 = new Label(AutoSize = true, Location = new System.Drawing.Point(0, 120))
let openFileDialog2 = new OpenFileDialog()
let draw2 = imageForm.CreateGraphics()
let printDocument2 = new System.Drawing.Printing.PrintDocument()
imageForm.Controls.Add(pictueBox2)
imageForm.Controls.Add(loadButton2)
imageForm.Controls.Add(label2)
imageForm.Controls.Add(printButton2)
imageForm.Controls.Add(exitButton2)
// События нажатия кнопок
printButton2.Click.Add(fun startprint2 -> printDocument2.Print())
loadButton2.Click.Add(fun load2 ->
openFileDialog2.Filter <- "Изображения JPEG (*.jpg,*.jpeg)|*.jpg;*.jpeg|Изображения GIF (*.gif)|*.gif"
openFileDialog2.Title <- "Различные примеры (F#):: Выбор файла изображения"
if (openFileDialog2.ShowDialog() = DialogResult.OK) then
// Создаём растровый рисунок и снимаем поворот и отражение (если есть)
let bitmap2 = new System.Drawing.Bitmap(openFileDialog2.FileName)
bitmap2.RotateFlip(RotateFlipType.RotateNoneFlipNone)
// Помещаем выбранное изображение в PictureBox
pictueBox2.Image <- bitmap2
// Отображаем в Label асболютный путь до изображения
label2.Text <- "\tИмя файла изображения:\n" + Convert.ToString(Convert.ToChar(32)) + (openFileDialog2.FileName))
// Вызываем страницу печати
printDocument2.PrintPage.Add(fun printData2 -> draw2.DrawImage(pictueBox2.Image, 10, 10))
exitButton2.Click.Add(fun quit2 -> imageForm.Close())
// Создание своего курсора (добавленного как ресурс в корень проекта)
// let customCursor2 = new System.Windows.Forms.Cursor("/Pointer.cur")
// imageForm.MouseHover.Add(fun custom2 -> imageForm.Cursor <- customCursor2)
imageForm.MouseHover.Add(fun Cross2 -> imageForm.Cursor <- Cursors.Cross)
[<STAThreadAttribute>]
Application.Run(imageForm)
printfn "\t\t\tНажмите клавишу Enter для продолжения..."
Console.ReadKey()
Console.Clear()
Компилируем приложение (Debug) и запускаем. Жмём «Загрузить», выбираем любое изображение с нужным расширением, затем, если есть принтер жмём на «Печать»:
Рис. 4.2 Результат работы приложения F#: форма «Печать выбранного рисунка»
Наконец добавим последний код, реализующий рисование. На этот раз будем рисовать курсором мыши на форме (аналог инструмент «карандаша»). Толщина пера будет неизменной, а вот цвет будем выбирать через стандартный диалог выбора цвета. Также на форме будет кнопка «Стереть»:
// Создание формы Windows Forms: Рисование мышкой
Console.Title <- "Различные примеры (F#):: Рисование мышкой"
open System.Drawing.Drawing2D
let drawingForm = new Form(Text = "Различные примеры (F#):: Рисование мышкой", AutoScaleDimensions = new System.Drawing.SizeF(60.0F, 13.0F), ClientSize = new System.Drawing.Size(500, 250), StartPosition = FormStartPosition.CenterScreen)
let exitButton3 = new Button(Text = "Выход", Location = new System.Drawing.Point(400, 210))
let eraseButton3 = new Button(Text = "Очистить", Location = new System.Drawing.Point(320, 210))
let colorButton3 = new Button(Text = "Цвет пера", Location = new System.Drawing.Point(240, 210))
drawingForm.Controls.Add(exitButton3)
drawingForm.Controls.Add(eraseButton3)
drawingForm.Controls.Add(colorButton3)
// Создаём диалог выбора цвета
let colorDialog3 = new ColorDialog()
// Создаём объект ColorBlend
let mutable color3 = new ColorBlend()
// Инициализируем объекты рисования
let createGraphics3 = drawingForm.CreateGraphics()
createGraphics3.SmoothingMode<-SmoothingMode.HighQuality
drawingForm.Load.Add(fun background3 ->
// Устанавливаем цвет заливки по умолчанию: Indigo
color3.Colors <- [|Color.Indigo|])
// Событие перемещения мыши на форме
drawingForm.MouseMove.Add(fun trail->
// Когда мышка двигается и левая кнопка нажата
if (trail.Button = System.Windows.Forms.MouseButtons.Left) then
//Рисуем объект с выбранным цветом из диалога выбора цвета (или цвета по умолчанию)
createGraphics3.FillRectangle(new SolidBrush(color3.Colors.[0]),new Rectangle(trail.X,trail.Y,5,5)))
// Событие нажатия кнопки "Очистить", возвращаем цвет формы и стираем всё на форме
eraseButton3.Click.Add(fun erase3-> createGraphics3.Clear(drawingForm.BackColor))
exitButton3.Click.Add(fun quit3 -> drawingForm.Close())
colorButton3.Click.Add(fun colors3 ->
// Вызываем диалог выбора цвета
if colorDialog3.ShowDialog() = DialogResult.OK then
// Сохраняем выбранный цвет
color3.Colors<-[|colorDialog3.Color|])
Application.Run(drawingForm)
printfn "\t\t\tНажмите клавишу Enter для продолжения..."
Console.ReadKey()
Console.Clear()
Компилируем приложение (Debug) и запускаем. Зажимаем левую кнопку мыши на форме, рисуем, выбираем другой текст, рисуем, стираем, выходим:
Рис. 4.3 Результат работы приложения F#: форма «Рисование мышкой»
5. Модификация приложения F#: работа с базой данных Microsoft Access
Для следующего примера понадобится простенькая база данных в формате *.mdb. Запускаем Microsoft Access любой имеющейся версии и создаём простую таблицу с именем Главная таблица. Ключевое поле (Счётчик): «Номер». Далее идут два текстовых столбца: «Имя» и «Фамилия». Заполняем данными (добавляем три-четыре записи в базу данных). Базу назовём, например Работники:
Рис. 5.1 Содержимое таблицы базы данных Работники.mdb
Импортируем эту базу данных в сам проект. Для этого выполним: Проект -> Существующий элемент... (Shift+Alt+A). После вставки базы в проект приложения F#, перейдём на панель Свойства для файла базы и изменим значение свойства «Копировать в выходной каталог» на «Всегда копировать».
Приготовления завершены. Теперь о коде. Код будет создавать форму с кнопками «Выход» и «Поиск». В качестве поля для поиска будет выступать столбец Номер. Также на форме будет DataGridView для отображения всех записей из базы. Нажатие на «Поиск» отобразить в Label'ах другие параметры запроса. Код всего этого дела такой:
// Создание формы Windows Forms: Работа с базой данных Microsoft Access
Console.Title <- "Различные примеры (F#):: Работа с базой данных Microsoft Access"
open System.Data
open System.Data.OleDb
// Создаём шрифт
let ffont = new Font("Verdana", 9.75F,FontStyle.Regular, GraphicsUnit.Point)
// Создаём объект соединения с базой данных
let oleconn = new System.Data.OleDb.OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0;
Data Source = Работники.mdb")
// СоздаёмOleDbDataAdapter
let dataAdpter4 = new System.Data.OleDb.OleDbDataAdapter("Select * from [Главная таблица]", oleconn)
// Генерируем DataSet
let dataSet4 = new DataSet()
//fills the dataset with recod values
dataAdpter4.Fill(dataSet4,"[Главная таблица]") |> ignore
// Создаём форму и элементы управления
let dataForm = new Form(Text = "Различные примеры (F#):: Работа с базой данных Microsoft Access", AutoScaleDimensions = new System.Drawing.SizeF(60.0F, 13.0F), ClientSize = new System.Drawing.Size(500, 360), StartPosition = FormStartPosition.CenterScreen)
let exitButton4 = new Button(Text = "Выход", Location = new System.Drawing.Point(300, 320))
let searchButton4 = new Button(Text = "Поиск", Location = new System.Drawing.Point(220, 320))
let label14 = new Label(Text = "Введите \"Номер\":", Location = new System.Drawing.Point(0, 10), AutoSize = true)
let label24 = new Label(Text = "Номер:", Location = new System.Drawing.Point(0, 50), AutoSize = true)
let label34 = new Label(Text = "Имя:", Location = new System.Drawing.Point(0,100), AutoSize = true)
let label44 = new Label(Text = "Фамилия:", Location = new System.Drawing.Point(0,150), AutoSize = true)
let textBoxNumber4 = new TextBox(Location = new System.Drawing.Point(200,10))
let labelNumber4 = new Label(Location = new System.Drawing.Point(100,50), BorderStyle = BorderStyle.FixedSingle)
let labelFirstName4 = new Label(Location = new System.Drawing.Point(100,100), BorderStyle = BorderStyle.FixedSingle)
let labelLastName4 = new Label(Location = new System.Drawing.Point(100,150), BorderStyle = BorderStyle.FixedSingle)
// Создаём DataGridView
let dataGridView4 = new DataGridView(ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize,Size = new System.Drawing.Size(480, 120), Location = new System.Drawing.Point(10, 180))
// Создаём столбцы DataGridView
let chrnumbercol = new DataGridViewTextBoxColumn()
let chrfnamecol = new DataGridViewTextBoxColumn()
let chrlnamecol = new DataGridViewTextBoxColumn()
// Добавляем данные в столбцы
dataGridView4.Columns.Add(chrnumbercol) |> ignore
dataGridView4.Columns.Add(chrfnamecol) |> ignore
dataGridView4.Columns.Add(chrlnamecol) |> ignore
dataGridView4.DataSource <- dataSet4.Tables.["[Главная таблица]"]
// Применяем шрифт для формы
dataForm.Font <- ffont
// Применям связь данных базы с DataGridView (имя стоблца в базе / имя столбца в элементе)
chrnumbercol.DataPropertyName <- "Номер"
chrnumbercol.HeaderText <- "Номер"
chrfnamecol.DataPropertyName<-"Имя"
chrfnamecol.HeaderText<-"Имя работника"
chrlnamecol.DataPropertyName<-"Фамилия"
chrlnamecol.HeaderText<-"Фамилия работника"
// Добавляем элементы на форму
dataForm.Controls.Add(dataGridView4)
dataForm.Controls.Add(exitButton4)
dataForm.Controls.Add(searchButton4)
dataForm.Controls.Add(label14)
dataForm.Controls.Add(label24)
dataForm.Controls.Add(label34)
dataForm.Controls.Add(label44)
dataForm.Controls.Add(textBoxNumber4)
dataForm.Controls.Add(labelNumber4)
dataForm.Controls.Add(labelFirstName4)
dataForm.Controls.Add(labelLastName4)
// Связываем Label'ы со столбцами базы данных
labelNumber4.Text <- Convert.ToString(dataSet4.Tables.["[Главная таблица]"].Rows.Item(0).Item(0))
labelFirstName4.Text <- Convert.ToString(dataSet4.Tables.["[Главная таблица]"].Rows.Item(0).Item(1))
labelLastName4.Text <- Convert.ToString(dataSet4.Tables.["[Главная таблица]"].Rows.Item(0).Item(2))
searchButton4.Click.Add(fun search->
// Обрабатываем номер строки индекса
let mutable introws = 0
// Определяем, была найдена запись или нет
let mutable blnfound = false
// Обрабатываем общее количество записей
let mutable inttotrec = Convert.ToInt32(dataSet4.Tables.["[Главная таблица]"].Rows.Count)
// Обрабатываем данные вводимые пользователем
let strtext = Convert.ToString(textBoxNumber4.Text)
// До тех пор, пока совпадений не найдено и конец записей не достигнут
while((blnfound = false) && (introws <= inttotrec-1)) do
let strempnum = Convert.ToString(dataSet4.Tables.["[Главная таблица]"].Rows.Item(introws).Item(0))
// Сравниваем данные введённые в TextBox пользователем с нашей таблицей ("Номер")
// Если есть совпадений, отображаем результат запроса
if strtext.ToUpper() = strempnum.ToUpper() then
blnfound<-true
labelNumber4.Text <- Convert.ToString(dataSet4.Tables.["[Главная таблица]"].Rows.Item(introws).Item(0))
labelFirstName4.Text <- Convert.ToString(dataSet4.Tables.["[Главная таблица]"].Rows.Item(introws).Item(1))
labelLastName4.Text <- Convert.ToString(dataSet4.Tables.["[Главная таблица]"].Rows.Item(introws).Item(2))
// Сравниваем со следующей запись до появления совпадений
introws<-introws + 1
// Если совпадения не найдены
if blnfound = false then
MessageBox.Show("Запись не найдена!", "Работа с базой данных Microsoft Access:: Сообщение об ошибке", MessageBoxButtons.OK, MessageBoxIcon.Information) |> ignore)
exitButton4.Click.Add(fun exit->
dataForm.Close()
oleconn.Close())
Application.Run(dataForm)
printfn "\t\t\tНажмите клавишу Enter для продолжения..."
Console.ReadKey()
Console.Clear()
Application.Exit() // Завершаем приложение
Компилируем приложение (Debug) и запускаем. Вводим «номер работника» из базы данных (смотрим все доступные записи в DataGridView на форме) в текстовое поле и жмём «Поиск»:
Рис. 5.1 Результат работы приложения F#: форма «Работа с базой данных Microsoft Access»
Компилируем приложение (Release) и запускаем.
6. О приложении к Лабораторной работе № 22
Получившуюся программу (LWP22Samples.exe), собранную из кусков кода приведённых в данной лабораторной работе, а также установочный файл шаблона консольного приложения для F# (FSharp.Console.vsix) и архив с базой данных Работники.mdb (DB.zip), можно загрузить по ссылке в конце этого материала.
Размещено на Allbest.ru
...Подобные документы
История использования механических и полуавтоматических средств для арифметических операций. Работа с табличным процессором Microsoft Excel. Поиск и замена данных в таблице Microsoft Access. Сортировка записей в запросе, его создание с помощью мастера.
контрольная работа [22,8 K], добавлен 13.01.2010Состав, расширение баз данных Access (Microsoft Office). Выполнение запросов, заполнение форм и таблиц. Типы данных Microsoft Access. Средства создания объектов базы данных СУБД. Дополнительные возможности запросов. Свойства полей. Режим работы с формами.
презентация [3,0 M], добавлен 28.10.2014Рассмотрение интерактивной реляционной системы управления базами данных Microsoft Access. Графические возможности программы; создание таблиц, запросов, формуляров, отчетов, макросов и модулей. Сравнительная характеристика баз данных Clipper и Access.
курсовая работа [1,1 M], добавлен 22.01.2013Анализ основных возможностей программы Microsoft Access. Особенности использования форм для ввода и редактирования данных, а также кнопок управления для перехода из одного уровня Меню в другой. Характеристика проектирования многотабличных баз данных.
методичка [330,7 K], добавлен 05.07.2010Техника создания списков, свободных таблиц и диаграмм в среде табличного процессора Microsoft Excel. Технология создания базы данных в среде СУБД Microsoft Access. Приобретение навыков подготовки и демонстрации презентаций в среде Microsoft Power Point.
лабораторная работа [4,8 M], добавлен 05.02.2011Основные понятия баз данных: нормализация, связи и ключи. Создание и этапы проектирования базы данных, решение задачи о предметной области. Изучение СУБД Microsoft Access s 2003: пользовательский интерфейс, главное окно приложения, создание таблиц.
реферат [2,1 M], добавлен 10.11.2010Access как система управления базами данных, типы задач, для решения которых он предназначен. Рекомендации для пользователей, принципы работы с базой данных в Microsoft Access. Приемы ввода данных в режиме таблицы, перемещения по строкам и столбцам.
курс лекций [53,6 K], добавлен 26.05.2010Запуск приложения Access. Сохранение базы данных в формате Microsoft Access. Алгоритм создания пользовательской маски ввода. Заполнение и установка связей между таблицами. Сортировка и фильтрация записей. Интерфейс окна базы данных. Работа с полями OLE.
контрольная работа [5,5 M], добавлен 29.06.2015Краткая характеристика и функциональные возможности MS Access. Базы данных и системы управления базами данных. Проектирование в теории и создание на практике базы данных в продукте корпорации Microsoft для управления базами данных "Microsoft Access".
курсовая работа [1,6 M], добавлен 07.03.2015Особенности и преимущества Microsoft Office Access как системы управления базами данных реляционного типа. Процесс создания новой таблицы с помощью конструктора, построение схемы данных, создание запроса с помощью языка SQL, вывод информации в отчёте.
контрольная работа [199,2 K], добавлен 15.12.2014Характеристика Microsoft Access как реляционной системы управления базами данных производства корпорации Microsoft. Причины ее популярности и основные версии. Описание ее объектов и характерных особенностей. Основные достоинства и недостатки СУБД Access.
презентация [1,5 M], добавлен 17.02.2014Microsoft Access как система управления базами данных (СУБД), ее предназначение. Организованная структура для хранения данных. Типы данных при работе с Microsoft Access 2003 и Microsoft Access 2007. Проектирование баз данных и построение ER-диаграммы.
контрольная работа [16,3 K], добавлен 10.10.2010Роль автоматизированных систем в туристической сфере. Принципы проектирования баз данных в Microsoft Access. Проектирование и планирование в Microsoft Project. Реализация базы данных ООО "Акварели" в Microsoft Access. Создание запросов, форм и отчетов.
курсовая работа [3,5 M], добавлен 19.11.2012Начало работы в Microsoft Access. Основные моменты создания несложной базы данных: создание титульного листа в режиме конструктор, базы данных, порядок занесения данных для базы в режиме презентации. Особенности оформления отчета и настройки программы.
лекция [2,4 M], добавлен 07.02.2010Создание базы данных в среде MS Access. Создание и работа с базой данных в ателье. Алгоритм решения задачи. Выбор пакета прикладных программ. Проектирование форм выходных документов с использованием СУБД MS Access. Структура записи таблиц базы данных.
курсовая работа [1,6 M], добавлен 30.01.2009Создание вспомогательных таблиц (шлифование, обрабатываемый материал, зернистость, твердость) и основной таблицы с помощью приложения Microsoft Access. Установление связей между ними. Формирование запросов с отбором данных, разработка форм и отчетов.
курсовая работа [944,6 K], добавлен 17.03.2015Создание базы данных, планирование разработки и системные требования. Проектирование базы данных в среде Microsoft Access, элементы и типы данных. Создание таблицы и использование конструктора для их модернизации. Построение запросов и создание макросов.
курсовая работа [2,0 M], добавлен 16.04.2011Определение (задание структуры) данных. Обработка данных. Управление данными. Microsoft Access - нечто большее, чем СУБД. Проектирование, создание и управление базой данных на примере переплетной мастерской в пакете MS Access.
курсовая работа [470,8 K], добавлен 30.10.2002Создание базы данных в среде MS Access. Создание и работа с базой данных на бирже труда. Алгоритм решения. Выбор пакета прикладных программ. Проектирование форм выходных документов и описание структуры таблиц базы данных. Отчеты по запросам и таблицам.
курсовая работа [2,1 M], добавлен 30.01.2009Создание моделей данных, основных таблиц с помощью конструктора таблиц, связей между таблицами, форм для заполнения таблиц, запросов на выборку данных, отчетов для вывода на печать и начальной кнопочной формы. Основные объекты Microsoft Access.
контрольная работа [4,5 M], добавлен 18.03.2012