|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.06.2012, 00:36 | #1 |
Новичок
Джуниор
Регистрация: 22.06.2012
Сообщений: 1
|
DAO, Recordset, текущий элемент
Здравствуйте! Помогите пожалуйста, никак не получается разобраться. На форме есть таблица (три поля idPerson идентификатор, FNPerson текст, LNPerson текст), четыре кнопки и поле с текстом addFN. Первая функция для кнопки «Добавить». Всё добавляет правильно, но запись появляется в таблице только если закрыть форму и открыть её заново. Вторая функция – для кнопки «Удалить». Она удаляет всегда первую запись, хотя должна бы удалять текущую. Видимо, текущая – всегда первая, изменить это вручную у меня не получается. Третья функция – для кнопки «Редактировать». С ней проблема та же, что и с предыдущей, редактируется всегда первая запись. Четвёртая функция - для кнопки «Найти». Здесь у меня основательные проблемы с синтаксисом, видимо.
Private Sub bAdd_Click() 'обновляет только если закрыть и открыть форму Dim db As DAO.Database Dim rs As DAO.Recordset Dim fid As Field Dim fidn As Field Set db = Access.CurrentDb Set rs = db.OpenRecordset("Persons") rs.AddNew rs.Fields("FNPerson").Value = addFN.Value rs.Update End Sub Private Sub bDel_Click() 'удаляет первую запись Dim db As DAO.Database Dim rs As DAO.Recordset Set db = Access.CurrentDb Set rs = db.OpenRecordset("Persons") rs.Delete End Sub Private Sub Edit_Click() 'редактирует первую запись Dim db As DAO.Database Dim rs As DAO.Recordset Set db = Access.CurrentDb Set rs = db.OpenRecordset("Persons") rs.Edit rs.Fields("FNPerson").Value = addFN.Value rs.Update End Sub Private Sub search_Click() ‘? Dim db As DAO.Database Dim rs As DAO.Recordset Set db = Access.CurrentDb Set rs = db.OpenRecordset("Persons") Dim s As String s = addFN.Value rs.FindFirst "[FNPerson] = '" & Me![addFN] & "'" End Sub |
22.06.2012, 11:53 | #2 |
Форумчанин
Регистрация: 09.06.2011
Сообщений: 515
|
Добрый день.
Может как-то так попробовать: 1. После процедуры закрыть и открыть форму (я думаю что это не на что не повлияет) 2. Как то так: Код:
Код:
Код:
|
22.06.2012, 22:47 | #3 |
Участник клуба
Регистрация: 10.08.2009
Сообщений: 1,796
|
Здравствуйте Y4va.
"..не получается разобраться. На форме есть таблица.." очевидно Вы хотели сказать "есть таблица подключенная к форме в качестве источника данных" "проблема" в отсутствии связи рекордсета формы и используемого Вами внешнего DAO рекордсета. думаю на данном этапе проще обращаться не к внешнему а к собственному набору записей формы: bAdd_Click набор записей (рекордсет) отображаемый формой после добавления (удаления, изменения) в источнике необходимо обновить, с этим справится команда Requery, но после её выполнения (как и после открытия) всегда первая запись становится текущей. Для добавления исправить ситуацию может подобная конструкция: Код:
Код:
Код:
Код:
Код:
Евгений. P.S. для удобочитаемости выкладываемый код заключайте в тэги [соde] ... [/соde]. для этого на панели инструментов расположена кнопка - # Последний раз редактировалось Teslenko_EA; 22.06.2012 в 22:55. |
23.06.2012, 15:25 | #4 |
Участник клуба
Регистрация: 10.08.2009
Сообщений: 1,796
|
Y4va, если у таблицы (источника) есть идентификатор записи (ключевое поле kod)
и в конструкции используется подчиненная форма (sf1), код может быть таким: Код:
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как заменить элемент элемент одномерного массива? Паскаль | Женька Good | Помощь студентам | 5 | 21.12.2011 00:07 |
Одномерный массив. Необходимо заменить последний положительный элемент на второй элемент массива | кумитэ | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 19.12.2011 16:44 |
DAO php class | Abuhamed | PHP | 8 | 31.10.2011 23:19 |
Delphi + Oracle + DAO | habias2006 | БД в Delphi | 4 | 12.08.2010 16:38 |
Service и Dao | Jakethefish | Java для Web (EE, Servlet, JSP, Tomcat, Spring MVC) | 3 | 13.06.2010 13:59 |