Модификации приложения 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.2010

  • Access как система управления базами данных, типы задач, для решения которых он предназначен. Рекомендации для пользователей, принципы работы с базой данных в 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.2014

  • Microsoft 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.