|
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 |
|
Recordset для формы
|
|||
---|---|---|---|
#18+
ROIИ вообще поставте обработчик ошибок. А здесь можно поподробнее? ROIУ вас полная безграмотность. Так я ни на что и не претендую. Как есть так есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2016, 08:50 |
|
Recordset для формы
|
|||
---|---|---|---|
#18+
ROIУ гетца таких как ваш примеров нет не передергивайте. А в чем принципиальная разница? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2016, 08:55 |
|
Recordset для формы
|
|||
---|---|---|---|
#18+
DecabristROIУ гетца таких как ваш примеров нет не передергивайте. А в чем принципиальная разница? Я и говорю сначала надо форму открыть (смотрите пост выше) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2016, 09:02 |
|
Recordset для формы
|
|||
---|---|---|---|
#18+
Нет, подождите. Возможно вы с самого начала не читали, но я там форму открывал через DoCmd, ровно как в примере Гетца (ну если не учитывать что у него DAO) А в крайних примерах, я создаю отдельный экземпляр формы. Чем это плохо? Акцесс и в том и в другом случае вылетает в одном и том же месте. Когда пытаюсь присвоить данные форме. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2016, 09:06 |
|
Recordset для формы
|
|||
---|---|---|---|
#18+
DecabristНет, подождите. Возможно вы с самого начала не читали, но я там форму открывал через DoCmd, ровно как в примере Гетца (ну если не учитывать что у него DAO) А в крайних примерах, я создаю отдельный экземпляр формы. Чем это плохо? Акцесс и в том и в другом случае вылетает в одном и том же месте. Когда пытаюсь присвоить данные форме. В какой версии Accessa вы это делаете. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2016, 09:09 |
|
Recordset для формы
|
|||
---|---|---|---|
#18+
Я не знаю, может у меня с формой что не так. Вот форма. На комбобоксах привязка к отдельным таблицам и запросом базы. Сама по себе форма работает нормально. Но при попытке подцепить рекордсет - вылетает полностью акс. Без каких либо соообщений об ошибках. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2016, 09:15 |
|
Recordset для формы
|
|||
---|---|---|---|
#18+
Ладно мужики, не парьтесь. Все с RecordSource работает и ладно. А работать с отдельным рекордсетом и присоединять его к форме может в особых случаях понадобится (вероятно там где "простым" запросом не обойдесся, с какими-нибудь дополнительными вычислениями и вывертами). У меня не тот случай. А будет тот, тогда и можно будет этим заморочиться. Спасибо всем! Панург мое почтение! ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2016, 09:23 |
|
Recordset для формы
|
|||
---|---|---|---|
#18+
Да не должен Акцесс вылетать ни при каких условиях, если вы не используете кривые вызовы API или не пытаетесь работать с памятью через них. Еще проблемы создают русские символы на машинах без русской кодовой страницы. Попробуйте для начала скопировать форму в другую, удалить изначальную и переименовать копию в старое название. Не поможет - копируйте все объекты в новую базу. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2016, 09:43 |
|
Recordset для формы
|
|||
---|---|---|---|
#18+
DecabristЛадно мужики, не парьтесь Рекомендую все-таки проделать предложенную выше операцию, т.к. если форма повреждена, это вылезет боком в другом месте. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2016, 09:44 |
|
Recordset для формы
|
|||
---|---|---|---|
#18+
Форму я новую создал. Чистую без всего. На нее скопировал контролы из первой. В крайних своих сообщениях я уже работаю с новой формой. Все так же вылетает. Ну а полностью базу переформатировать это не просто сделать сейчас. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2016, 09:54 |
|
Recordset для формы
|
|||
---|---|---|---|
#18+
DecabristНу а полностью базу переформатировать это не просто сделать сейчас Ну на самом деле это занимает пару минут на базах практически любой сложности. Просто выделяем все объекты, импортируем их и добавляем недостающие референсы на использованные библиотеки. Настройки текущей тазы уже не так критичны, можно оставить по умолчанию. Вообще очень странное поведение. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2016, 11:25 |
|
|
start [/forum/topic.php?all=1&fid=45&tid=1613074]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
1ms |
others: | 362ms |
total: | 523ms |
0 / 0 |