Авторизация

Рубрики блога


Рекомендуем



Последние комментарии

Облако тегов


Устами великих

"Странный этот мир, где двое смотрят на одно и то же, а видят полностью противоположное." © Агата Кристи

Реклама



MS Office и VBA Рубрика содержит интересные решения, малоизвестные функции и возможности, надстройки и макросы, в общем, все то, что может сделать вашу работу в пакете программ MS Office (в первую очередь - Excel, Word, Access) более эффективной.
19
Июл

Добавление данных из ячеек формы в таблицу

рейтинг материал 5.0 (8) | количество просмотров 23248 | количество коментариев 1
Как внести данные из полей формы в нужную нам таблицу ценой лишь одного щелчка.

Можно создать новую форму с помощью Мастера форм, указав при этом таблицу, которая служит источником данных, далее подбирая под себя более удобный вид, сможем просматривать содержимое таблицы, с помощью формы и соответсвенно сможем вносить необходимые изменения в существующие данные или же добавлять новые.

Но как быть в случае, если мы хотим сделать отдельную форму лишь для добавления данных, без просмотра существующих?

Для этого создаем в конструкторе форму с необходимыми нам полями и оформляем ее как вам нравится

А добавлять данные будем в строки таблицы с необходимыми нам столбцами.

Мы помним, что форма никак не связана с таблицей, у нее есть поля которые существуют сами по себе. Поэтому для того чтобы добавить данные из формы в таблицу, нужна кнопка (в нашем примере, который видно на скриншоте, это кнопка ОК), по клику которой выполнялось бы необходимое нам событие.

При просмотре формы в режиме конструктора, кликаем правой кнопкой мыши, по созданной нами, кнопочке ОК и с выпадающего списка выбираем пункт Обработка событий..., далее Программы. В результате клика откроется Visual Basic с полем для указания необходимых свойств или событий, которые будут происходить по клику кнопки ОК


Private Sub OK_Click() 

End Sub

Собственно здесь мы и будем прописывать, то что заставит работать нашу задумку. И так, приведем несколько примеров.

Пример 1 - Добавление только одного значения поля в один столбец таблицы

все остальные столбцы в таблице будут пустыми, если они есть)


Private Sub OK_Click() 
Dim strSQL As String 
strSQL = " Insert Into Test(Номер) values ('" & Me.Number_NN & "') " 
CurrentProject.Connection.Execute (strSQL) 
MsgBox ("Добавлено!") 
End Sub

Test(Номер) - Название таблицы (Название столбца в таблице) - место куда нужно вставить необходимую информацию

Number_NN - Название поля в форме - значение, которое нам необходимо вставить в таблицу

MsgBox ("Добавлено!") - Всплывающее окошко с текстом Добавлено! - в принципе, необязательный элемент, но он помогает донести информацию до пользователя, что добавление данных через форму в таблицу выполнено успешно, если же его не будет, то пользователь не будет знать добавил данные он или нет и поэтому будет нажимать еще несколько раз, а значит только дублировать данные.

Пример 2 - когда нужно добавить в таблицу одной записью значения нескольких полей формы


Private Sub OK_Click() 
Dim strSQL As String 
strSQL = " Insert Into Test(Номер, Дата, Описание) values ('" & Me.Number_NN & "', '" & Me.Date_NN & "', '" & Me.Opisanie & "');" 
CurrentProject.Connection.Execute (strSQL) 
MsgBox ("Добавлено!") 
End If 
End Sub

Test(Номер, Дата, Описание) - Название таблицы (Название первого необходимого столбца, название необходимого второго столбца, Название третьего необходимого столбца) - таким образом указываем адрес куда нужно добавить данные из полей формы

Number_NN, Date_NN, Opisanie - Названия полей формы из которых берем данные - указывать в таком же логическом порядке как и соответствующие столбцы таблицы

Пример 3 - Аналог второго варианта, только другой вариант записи.


Private Sub OK_Click() 
Dim rs As dao.Recordset 
Set rs = CurrentDb.OpenRecordset("Test", dbOpenDynaset) 
rs.AddNew 
rs!Номер = Me!Number_NN 
rs!Дата = Me!Date_NN 
rs!Описание = Me!Opisanie 
rs.Update 
rs.Close 
Set rs = Nothing 
End Sub

Test - название таблицы, с которой будет работать сценарий - таблица куда нужно записать данные из формы

AddNew - процедура для создание новой строки в таблице с пустыми записями

Номер, Дата, Описание - название столбцов в таблице, которым присваиваются значения из формы.

Number_NN, Date_NN, Opisanie - название полей из формы значения которые будут присвоены новой записи в таблице - источник данных

Как вариант, еще встречал такой способ, но фактически он почти ничем не отличается от второго способа.

Пример 4 - использует ту же процедуру Insert Into, что и Пример 2.


Private Sub OK_Click() 

Dim dbs As Database 

Set dbs = OpenDatabase("D:\Documents and Settings\Admin\Рабочий стол\MyDataBase.mdb") 
 
dbs.Execute " INSERT INTO Test " _ 
 & "(Номер, Дата, Описание) VALUES " _ 
 & "('" & Me.Number_NN & "', '" & Me.Date_NN & "', '" & Me.Opisanie & "');" 
 
dbs.Close 
End Sub

D:\Documents and Settings\Admin\Рабочий стол\MyDataBase.mdb - путь размещения базы данных, в которой находится таблица, для внесения необходимых данных.

Test - название таблицы, в которую будут добавлены новые данные.

Номер, Дата, Описание - наименования столбцов таблицы, в ячейки которых будут добавлены новые данные.

Number_NN, Date_NN, Opisanie - название полей из формы значения которые будут присвоены новой записи в таблице - источник данных

Удачи ;)

K_ID Спасибо, грамотный мануал. Было бы неплохо еще добавить способ записи многих данных во много таблиц, одной кнопкой, с использованием внешних ключей, но и на этом спасибо. Стало понятнее.
написал(а)
07 Янв 2014
в 09:02
0

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]