|
Посоветуйте как спозиционировать курсор в ленточной форме
|
|||
---|---|---|---|
#18+
Есть ленточная форма и на каждой строке есть кнопка "редактировать" В вызываемой форме редактирования возможно удаление записи и после её закрытия нужно установить фокус ленточной формы на записи визуально предшествующей удаленной записи. Сама ленточная форма сложно отсортирована - стало быть чтение предыдущей записи через Recordset мало что дает. Задача - при нажатии на конпку редактирования - нужно определить запись на форме которая на строку выше нажимаемой кнопке . Чтобы в случае удаления записи сделать вменяемый фокус на строке ленточной формы. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2019, 12:59 |
|
Посоветуйте как спозиционировать курсор в ленточной форме
|
|||
---|---|---|---|
#18+
Access что ли? Неужели так сложно указывать среду разработки? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2019, 13:01 |
|
Посоветуйте как спозиционировать курсор в ленточной форме
|
|||
---|---|---|---|
#18+
Sorry! Да ACCESS. Ключевое поле в главной таблице [Дата ввода]; ленточная форма это formL enterdate_clicked глобальная перепенная это Дата ввода на той строке где был вызов редактирования Сначала я сделал функцию GetPrevDataEntry для нахождения Дата ввода на предыдущей строке формы formL Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38.
В кнопке удаления перед удалением я вызываю GetPrevDataEntry и после удаления пытаюсь спозиционировать вызывающую formL по предыдущему времени. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44.
После вызова функции GetPrevDataEntry перестает работать удаление записи - пишет команда удаления записи временно недоступна. Как только закоментировать вызов GetPrevDataEntry - удаление работает. Прямо замучился. ;) Модератор: Тема перенесена из форума "Visual Basic". ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2019, 16:37 |
|
Посоветуйте как спозиционировать курсор в ленточной форме
|
|||
---|---|---|---|
#18+
alexkoпишет команда удаления записи временно недоступна.установи курсор на запись - либо через любой метод Move рекордсета, либо GotoRecord ... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2019, 16:55 |
|
Посоветуйте как спозиционировать курсор в ленточной форме
|
|||
---|---|---|---|
#18+
А это не спасет "отца русской демократии" (Ильф,Петров 12 стульев) Код: vbnet 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2019, 18:03 |
|
Посоветуйте как спозиционировать курсор в ленточной форме
|
|||
---|---|---|---|
#18+
sdkuА это не спасет "отца русской демократии" (Ильф,Петров 12 стульев) Код: vbnet 1. 2. 3.
Спасло! ;-) Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
PS: Хотя мне, как говорил Граф Калиостро, было видение - я вдруг осознал, что будет гораздо красивее и яснее для пользователя если добавить кнопку "удалить запись" на ленточную форму, рядом с кнопкой "редактировать". Вероятно так и переделаю. А вообще это мой первй проект на VBA. До этого был правда CBuilder. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2019, 08:52 |
|
Посоветуйте как спозиционировать курсор в ленточной форме
|
|||
---|---|---|---|
#18+
Sorry, забыл сказать спасибо! ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2019, 08:53 |
|
Посоветуйте как спозиционировать курсор в ленточной форме
|
|||
---|---|---|---|
#18+
Немного замечаний... alexkoСпасло! ;-)Зачем столько телодвижений с перемещением курсора в наборе, с поисками? Да ещё и без проверок... А если запись последняя? Куда же acPrevious ? А если вообще последняя?... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2019, 09:36 |
|
Посоветуйте как спозиционировать курсор в ленточной форме
|
|||
---|---|---|---|
#18+
ПанургНемного замечаний... alexkoСпасло! ;-)Зачем столько телодвижений с перемещением курсора в наборе, с поисками? Да ещё и без проверок... А если запись последняя? Куда же acPrevious ? А если вообще последняя?... Как куда - если строк > 1 то на предыдущую (previous). Если строка последняя и она же единственная, то после её удаления задачи позиционирования не стоит. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2019, 10:46 |
|
Посоветуйте как спозиционировать курсор в ленточной форме
|
|||
---|---|---|---|
#18+
alexkoКак куда - если строк > 1 то на предыдущую (previous). Если строка последняя и она же единственная, то после её удаления задачи позиционирования не стоит.Я про ошибку говорю, которая будет благодаря этому коду. И зачем поиск, когда можно перейти на запись ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2019, 10:50 |
|
Посоветуйте как спозиционировать курсор в ленточной форме
|
|||
---|---|---|---|
#18+
ПанургalexkoКак куда - если строк > 1 то на предыдущую (previous). Если строка последняя и она же единственная, то после её удаления задачи позиционирования не стоит.Я про ошибку говорю, которая будет благодаря этому коду. И зачем поиск, когда можно перейти на запись Вообще то я поторопился сказать что проблема решена c использованием DoCmd.GoToRecord , , acPrevious. Как я говорил, источник данных для формы это таблица базы и в пропертях формы-ленты указано, что форма сортируется по трем колонкам. Т.е. по идее предыдущая запись из таблицы может не быть предыдущей на отображаемой на форме. Стало быть DoCmd.GoToRecord , , acPrevious выдает предыдущую запись из recordset. Это значит, что она может быть расположена где угодно на форме. Значит мой первоначальный вариант с поиском по строкам самой формы был правильным, _по идее_. Или же просто нужно отказаться от удаления записи кнопкой на форме редактирования записи. Тогда не будет никакого геммороя. ;-) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2019, 13:36 |
|
Посоветуйте как спозиционировать курсор в ленточной форме
|
|||
---|---|---|---|
#18+
alexkoпо идее предыдущая запись из таблицы может не быть предыдущей на отображаемой на форме. странно... если сортировать хоть по 10 колонкам (не меняя фильтр) имхо все записи которые идут после определенной, никогда не смогут встать перед ней после удаления одной из них, ну это как вдруг при удалении записи со значением 5, вдруг запись со значением 8 встанет перед записью со значением 4. Или я чет не так понимаю ? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2019, 14:37 |
|
Посоветуйте как спозиционировать курсор в ленточной форме
|
|||
---|---|---|---|
#18+
vmagalexkoпо идее предыдущая запись из таблицы может не быть предыдущей на отображаемой на форме. странно... если сортировать хоть по 10 колонкам (не меняя фильтр) имхо все записи которые идут после определенной, никогда не смогут встать перед ней после удаления одной из них, ну это как вдруг при удалении записи со значением 5, вдруг запись со значением 8 встанет перед записью со значением 4. Или я чет не так понимаю ? Порядок записей в источнике не меняется, меняется их отображение на форме. К примеру есть таблица заполненная по дате ввода. Если её показывать на ленточной форме без сортировки, то порядок записей один. Если применить сортировку по названию, то порядок записей показываемых в форме будет другой (совершенно не совпадающий с таблицей-источником). Стало быть когда мы удаляем запись на сортированной форме смежность строк на форме относительная - она зависит от сортировки формы. А задача стоит определить именно запись которая была перед удаляемой строкой на сортированной форме . Что бы после удаления записи установить там фокус формы. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2019, 16:59 |
|
Посоветуйте как спозиционировать курсор в ленточной форме
|
|||
---|---|---|---|
#18+
А о том, что в таблице записи вообще не имеют порядка (грубо говоря"куча") мы вообще не вспоминаем. Их порядок задается только источником формы alexkoПорядок записей в источнике не меняется...Это если источник "таблица" А если источник "SELECT * FROM таблица ORDER BY поле1,поле2,поле3" очень даже меняется ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2019, 18:34 |
|
Посоветуйте как спозиционировать курсор в ленточной форме
|
|||
---|---|---|---|
#18+
alexkoК примеру есть таблица заполненная по дате ввода. Если её показывать на ленточной форме без сортировки, то порядок записей один.Нет, это не таблица, это набор данных формы и естественная сортировка у него есть. В данном случае есть простой запрос Код: sql 1.
он аналогичен Код: sql 1.
alexkoЕсли применить сортировку по названию, то порядок записей показываемых в форме будет другой (совершенно не совпадающий с таблицей-источником).нет, у таблицы нет сортировки по определению. Это просто другая сортировка в другом наборе. alexkoСтало быть когда мы удаляем запись на сортированной форме смежность строк на форме относительная - она зависит от сортировки формы.да, зависит alexkoА задача стоит определить именно запись которая была перед удаляемой строкой на сортированной форме . Что бы после удаления записи установить там фокус формы.Не фокус формы, а сделать текущей - установить курсор (не путать с курсором на экране!). Предыдущей осталась та же запись в наборе что и была. Последующие записи в наборе сместились на одну - AbsolutePosition - 1 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2019, 19:06 |
|
Посоветуйте как спозиционировать курсор в ленточной форме
|
|||
---|---|---|---|
#18+
ПанургПредыдущей осталась та же запись в наборе что и была. Последующие записи в наборе сместились на одну - AbsolutePosition - 1 "ЗАЧЕТ", ток я думаю, что если кому то не понятно было на примере 1,2,3,4,5,6,7,8, то тут только практика вылечит... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2019, 01:03 |
|
Посоветуйте как спозиционировать курсор в ленточной форме
|
|||
---|---|---|---|
#18+
vmag..."ЗАЧЕТ", ток я думаю, что если кому то не понятно было на примере 1,2,3,4,5,6,7,8, то тут только практика вылечит... таки ДА! ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2019, 01:33 |
|
Посоветуйте как спозиционировать курсор в ленточной форме
|
|||
---|---|---|---|
#18+
когда-то я увлекался такими "фокусами". Ленточная форма, а внизу 3 кнопки. "Добавить", "Изменить", "Удалить". Даже статью выкладывал Ленточная форма и закладки. на сайте Андрея Митина. Там и АлексейЕ отметился и Palarm . Да и тут я тоже слегка потоптался. Были варианты для ADP и MDB. Наиболее оптимальный по моему вариант АлексейЕ в одном из последних комментариев. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2019, 11:52 |
|
Посоветуйте как спозиционировать курсор в ленточной форме
|
|||
---|---|---|---|
#18+
sdku, Я тут поотлаживал и действительно все в порядке с перемещением по рекодсету и порядком отображением на форме. Удаление записи из формы редактирования тоже имеет право на жизнь. Еще раз спасибо. Вот финальная версия удаления: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2019, 12:02 |
|
Посоветуйте как спозиционировать курсор в ленточной форме
|
|||
---|---|---|---|
#18+
Еще вопросик новичка. Всегда ли можно заменить источник данных VBA формы с таблицы на SELECT запрос? А то как-то мне почему то странно видеть редактирование таблиц базы при помощи запроса SELECT. Я попробовал - вроде бы SELECT запрос работает и в этой неподобающей функции на изменение таблиц. ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2019, 13:07 |
|
Посоветуйте как спозиционировать курсор в ленточной форме
|
|||
---|---|---|---|
#18+
alexko, не пробовал читать что тебе написали в ответах? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2019, 14:39 |
|
Посоветуйте как спозиционировать курсор в ленточной форме
|
|||
---|---|---|---|
#18+
alexko.. А то как-то мне почему то странно видеть редактирование таблиц базы при помощи запроса SELECT.... а я то думал что редактируют только запросы на изменение-ан нет запросы на выборку тоже! Панургalexko, не пробовал читать что тебе написали в ответах?..а еще книшки и HELP ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2019, 17:59 |
|
|
start [/forum/topic.php?fid=45&fpage=25&tid=1610412]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
70ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 168ms |
0 / 0 |