|
Recordset для формы
|
|||
---|---|---|---|
#18+
Здравствуйте. В базе данных имеется форма с некоторыми полями. Хочу открыть эту форму из другой (по нажатию соответствующей кнопки) и присвоить открытой форме рекордсет сформированный на основе значений полей в первой форме. Код для рекордсета довольно громоздкий получился - но проверенный - отдельно как запрос работает. Привожу код по нажатию кнопки в первой форме полностью (в том виде как есть на текущий момент), сильно можно не вникать, главное что в конце: Код: 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.
После открытия второй формы при попытке присвоить ей рекордсет, на строке Код: vbnet 1.
Акцесс вылетает. Подскажите пожалуйста, что я делаю не так? Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 12:14 |
|
Recordset для формы
|
|||
---|---|---|---|
#18+
Decabrist, на первый взгляд у тебя всё нормально. Но! Хотелось бы услышать версию акса. Какой сакральный смысл в рекордсете? Почему строку запроса не сделать просто источником данных ( RecordSource )? Ещё бы я изменил тип курсора - adOpenStatic и блокировку - adLockReadOnly Попробуй пересоздать форму, могут быть в ней проблемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 12:58 |
|
Recordset для формы
|
|||
---|---|---|---|
#18+
Decabrist, да, а на строке запрос открывается в построителе? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 13:01 |
|
Recordset для формы
|
|||
---|---|---|---|
#18+
Акс 2013. Сакрального смысла никакого, просто думал так проще будет (да и читал про подобный пример). Запрос очень сложный получился. В построителе все работает, с поправкой на то что вместо ссылок на контролы вбиваю конкретные данные. Перепроверить все смогу только завтра. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 14:36 |
|
Recordset для формы
|
|||
---|---|---|---|
#18+
Код: sql 1. 2.
Поставить пробел перед AND и отформатировать дату. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 14:51 |
|
Recordset для формы
|
|||
---|---|---|---|
#18+
пробелотформатировать датуда дата у него отформатирована. Только он ея форматирует из под подвыподверта (не Format ) Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 16:47 |
|
Recordset для формы
|
|||
---|---|---|---|
#18+
А зачем Вы используете SET? Попробуйте его убрать и посмотреть, что получится. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 16:48 |
|
Recordset для формы
|
|||
---|---|---|---|
#18+
JossА зачем Вы используете SET? Ну как бэ положено при присвоении объекта. У меня только через Set присваивается. Decabrist, а источник у формы куда пихается рекордсет есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 16:56 |
|
Recordset для формы
|
|||
---|---|---|---|
#18+
Decabrist, Рекордсеты годятся для быстрых подсчетов, для форм не подходят на практике (особенно при смене версий акцеса весело). Запрос кстати не сложный... Можно использовать временную/рабочую табличку вместо рекордсета (как у меня везде)). ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 22:38 |
|
Recordset для формы
|
|||
---|---|---|---|
#18+
Ёжик`Decabrist, Запрос кстати не сложный... Ну я понимаю что здесь монстры собрались которые подобные задачки в уме решают ))) Но я вчера на этот запрос цельный день потратил, пока получил что хотел. Да и то сегодня по утру просмотрев трезвым взглядом - обнаружил ошибку (не достающее условие в присоединяемой выборке, из-за которого запрос по факту бессмысленный был). Но эту ошибку я исправил. пробелПоставить пробел перед AND и отформатировать дату. Исправил. ПанургЕщё бы я изменил тип курсора - adOpenStatic и блокировку - adLockReadOnly Исправил Но как все вылетало так и вылетает. Источник у формы был. Его удалил. Но возможно здесь есть что-то вызывающее конфликт - буду копать в этом направлении. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2016, 04:03 |
|
Recordset для формы
|
|||
---|---|---|---|
#18+
Короче. Перестал выпендриваться, сделал так: Код: 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.
Это конечно не законченная процедура, там еще другие варианты запросов могут быть, в зависимости от выбора на контролах первой формы, но суть одна. Все работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2016, 04:21 |
|
Recordset для формы
|
|||
---|---|---|---|
#18+
DecabristНо как все вылетало так и вылетает.Не знаю как 2013, а в 2010 нормально используется рекордсет как источник. Я его вместо временных таблиц использую. Попробуй сделать тестовый вариант присвоения, в другой базке. Пример у тебя работает? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2016, 04:24 |
|
Recordset для формы
|
|||
---|---|---|---|
#18+
Да пример работает. (интересный пример) Я вот тут чего подумал. У тебя присвоение рекордсета происходит в одной форме, и в ее же коде. А у меня рекордсет подготавливается в отдельной форме, затем из ее же кода открывается вторая, и идет присвоение подготовленных данных открытой форме. Может в этом проблема? Может форма еще не успевает загрузиться до присвоения рекордсета, или еще что то в этом плане. После чего возникает конфликт и Акцесс вылетает. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2016, 04:47 |
|
Recordset для формы
|
|||
---|---|---|---|
#18+
Decabrist, сомневаюсь, что проблема в DecabristМожет форма еще не успевает загрузиться до присвоения рекордсета Поставь в конце концов DoEvents после запуска формы. Даже, в порядке эксперимента, можно открыть форму, а потом в неё загрузить набор. Возможно форма просто "поломалась", такое бывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2016, 05:16 |
|
Recordset для формы
|
|||
---|---|---|---|
#18+
DecabristМожет в этом проблема?в Access один поток (thread), поэтому выполняется всё последовательно. О! Это мечта многих запускать несколько безбажных thread'ов! ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2016, 05:20 |
|
Recordset для формы
|
|||
---|---|---|---|
#18+
В твоем примере на форме свободные контролы. На которые потом последовательно устанавливаются названия, источники. Я же форму делал не как свободную, а на основе существующей таблице. (название и количество полей приведены в соответствие с запросом). Контролы привязаны к полям этой таблицы. Затем удалил RecordSource формы, а на контролах все как было так и осталось. Вероятно проблема кроется здесь. Чуть позже проверю. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2016, 07:01 |
|
Recordset для формы
|
|||
---|---|---|---|
#18+
DecabristВ твоем примере на форме свободные контролы.Они там потому свободные, что запрос там перекрёстный и задавать заранее источники полям формы не имеет смысла. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2016, 07:16 |
|
Recordset для формы
|
|||
---|---|---|---|
#18+
Decabrist, да, я тут подумал - попробуй открывать форму не через DoCmd.OpenForm ... , а Set frmMyForm = New Form_subCost ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2016, 07:23 |
|
Recordset для формы
|
|||
---|---|---|---|
#18+
Сделал копию формы - опыты на ней делаю. Выдает такую вот ошибку: ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2016, 08:38 |
|
Recordset для формы
|
|||
---|---|---|---|
#18+
При том ошибка ровно на той же строке: Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2016, 08:39 |
|
Recordset для формы
|
|||
---|---|---|---|
#18+
Исправил. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Вылетает там же. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2016, 08:42 |
|
Recordset для формы
|
|||
---|---|---|---|
#18+
DecabristПри том ошибка ровно на той же строке: Код: vbnet 1.
Если форма не загружена будет ошибка. Но вообщето так не делается. Передовайте в форму строку запроса и подключение делайте внутри формы. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2016, 08:44 |
|
Recordset для формы
|
|||
---|---|---|---|
#18+
DecabristИсправил. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Вылетает там же. И вообще поставте обработчик ошибок. У вас полная безграмотность. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2016, 08:45 |
|
Recordset для формы
|
|||
---|---|---|---|
#18+
Имеете ввиду RecordSource? Я так и сделал в конце концов. И все работает. Тут уже просто интересно, а почему с рекордсетом то не пошло? Не знаю как правильно делается, но примеры с рекордсетом есть и на сайте у мелкомягких, и у Геца. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2016, 08:48 |
|
Recordset для формы
|
|||
---|---|---|---|
#18+
DecabristИмеете ввиду RecordSource? Я так и сделал в конце концов. И все работает. Тут уже просто интересно, а почему с рекордсетом то не пошло? Не знаю как правильно делается, но примеры с рекордсетом есть и на сайте у мелкомягких, и у Геца. У гетца таких как ваш примеров нет не передергивайте. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2016, 08:50 |
|
|
start [/forum/topic.php?fid=45&msg=39329464&tid=1613074]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
164ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 267ms |
0 / 0 |