Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как программно добавить данные в базу / 7 сообщений из 7, страница 1 из 1
02.04.2010, 16:02
    #36558222
Kavalergrad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно добавить данные в базу
Учусь программировать в Visual Basic 6.0. Есть расчетная программа, результаты которой выводятся в TextBox-сы. Создал базу данных «MyDB.mdb». База создавалась при помощи библиотек Microsoft DAO 3.6 Object Library. Соответственно база девственно чиста. В ней есть 5 столбцов. Создана CommandButton - «Записать в базу». Теперь мне надо по нажатию на CommandButton записать данные из TextBox-сов в соответствующие столбцы. Соответственно – сколько будет нажатий на CommandButton – столько должно и записей получиться. При этом каждая новая запись должна быть в новой строке. Никак не могу понять как это делается! Помогите, кто знает!
Я делал следующее:
Создал пробную БД - probnaya_bd.mdb
Создал новый проект
Подключил библиотеку Microsoft DAO 3.15 Object Library
В форму вставляю объект Data из окна ToolBox
Свойства Data :
имя –Data1
DatabaseName - C:\Program Files\Microsoft Visual Studio\VB98\проба записи данных в БД\probnaya_bd.mdb
Connect – Access
EOFAction –Add New
RecordSource - bd_proba_1
Вставил в форму 3 объекта TxtBox cо свойствами:
Имя- txt_Znachenie1 (и соответственно 2 и 3)
DataSource - Data1
DataField - Znacheni1 (и соответственно 2 и 3)
Вставил в форму объект CommandButton - «Записать в базу»
В поле код записал:
Private Sub Command_Click()
Data1.Recordset.Update
Data1.Recordset.Bookmark = Data1.Recordset.LastModified 'сохраняет последнее что было введено в объект
Data1.Recordset.AddNew
On Error Resume Next
MsgBox ("Данные добавлены в Базу данных.")
End Sub
Жму СТАРТ. В TxtBox –сы вставляю произвольные цифры, а затем кнопку «Записать в базу». Появился MsgBox. Открываю базу – записи есть. Все на своих местах. Меняю в TxtBox-сах значения, а затем жму кнопку «Записать в базу»… И появляется ошибка «Ошибка во время выполнения программы '3020': Uhdate or CancelUhdate without AddNew or Edit.». В коде желтым цветом выделено - Data1.Recordset.Update
Проверил несколько раз - бестолку. Открыл базу данны Access-ом и обнаружил, что несмотря на появляющуюся ошибку данные в базе меняютя. Но меняются-то в одной и той же строке. А надо, что бы каждая новая запись шла с новой строки
...
Рейтинг: 0 / 0
02.04.2010, 16:08
    #36558254
Gwa
Gwa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно добавить данные в базу
Kavalergrad,
Вы мешаете всё в одну кучу..

обновление делается так
Data1.Recordset.Edit
' здесь меняем значения полей
Data1.Recordset.Post

добавление делается так
Data1.Recordset.AddNew
' здесь меняем значения полей
Data1.Recordset.Post
...
Рейтинг: 0 / 0
02.04.2010, 16:16
    #36558279
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно добавить данные в базу
Все, что вам нужно:

Код: plaintext
1.
2.
Private Sub cmd_Zahis_v_bazu_Click()
    Data1.Recordset.Update
End Sub


остальной код убирайте.
Чтобы добавить новую запись в базу, вам нужно жать стрелочку "вправо" на Data1 до тех пор, пока поля не очистятся (то есть перейдете на новую запись). Потом вводите в поля нужные данные и жмете кнопку cmd_Zahis_v_bazu
...
Рейтинг: 0 / 0
02.04.2010, 16:17
    #36558285
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно добавить данные в базу
GwaKavalergrad,
Data1.Recordset.Post

Нет такого метода у рекордсета, не путайте человека
...
Рейтинг: 0 / 0
02.04.2010, 16:23
    #36558307
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно добавить данные в базу
А теперь немного занудства

KavalergradСоответственно база девственно чиста. В ней есть 5 столбцов.

Во-первых 5 столбцов не в базе, а в таблице
Соответственно, база не девственно чиста, в ней есть таблица.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Private Sub Command_Click() 
Data1.Recordset.Update 
Data1.Recordset.Bookmark = Data1.Recordset.LastModified 'сохраняет последнее что было введено в объект 
Data1.Recordset.AddNew 
On Error Resume Next 
MsgBox ("Данные добавлены в Базу данных.") 
End Sub 

Такое впечатление, что вы писали программу снизу вверх
зачем вам строка "On Error Resume Next" перед MsgBox? Почему Update идет раньше, чем AddNew (о чем вам, собственно, и сообщает сообщение об ошибке. Впрочем, все это вам не нужно, как я написал выше.

KavalergradОткрыл базу данны Access-ом и обнаружил, что несмотря на появляющуюся ошибку данные в базе меняютя. Но меняются-то в одной и той же строке. А надо, что бы каждая новая запись шла с новой строки

Это если вы не будете переходить на новую строку (как я написал выше). Будет меняться текущая строка. Заполниите вручную в аксессе таблицу несколькими тестовыми строками, потом запустите свою программу, понажимайте стрелочки вправо-влево на Data1 и поймете, что к чему
...
Рейтинг: 0 / 0
02.04.2010, 16:23
    #36558309
Gwa
Gwa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно добавить данные в базу
Shocker.ProGwaKavalergrad,
Data1.Recordset.Post

Нет такого метода у рекордсета, не путайте человека

Sorry, видимо всё-таки Update..
Но тема-то "Как ПРОГРАММНО добавить данные"
...
Рейтинг: 0 / 0
02.04.2010, 16:31
    #36558330
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно добавить данные в базу
GwaSorry, видимо всё-таки Update..
Но тема-то "Как ПРОГРАММНО добавить данные"

Можно сделать кнопку "новая запись"
Код: plaintext
1.
2.
3.
Private Sub Command1_Click()
  Data1.Recordset.AddNew
End Sub
Жмешь кнопку - появляется новая запись. Пользователь заполнил поля и нажал
Код: plaintext
1.
2.
Private Sub cmd_Zahis_v_bazu_Click()
    Data1.Recordset.Update
End Sub
запись появилась в базе. При этом сохраняется возможность листать записи с помощью Data1

Все это предлагаю решать в рамках предложенной автором структуры (поля, привязанные к контролу Data). Если же необходимо другое - выдадим еще 200 советов.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как программно добавить данные в базу / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]