Модификация приложения 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) и запускаем.
Дата добавления: 2019-09-13; просмотров: 173; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!