|
Recordset - object variable or with block not set
|
|||
---|---|---|---|
#18+
Доброго времени суток, Господа! Может кто-нибудь подсказать в чем прикол (скорее всего моя проблема тривиальна, но все же): Создаю и заполняю Recordset (в этом случае все ОК): Код: vbnet 1. 2. 3. 4. 5. 6.
rs нормально открывается, с ним можно свободно работать Другой вариант(Не работает): Код: vbnet 1. 2. 3. 4. 5. 6. 7.
При обращении к rs ошибка в сабже. Пробую добавить параметры, н-р: Код: vbnet 1. 2. 3.
Тогда ошибка: "ODBC - блокировка всех записей невозможна" Собственно почему меня не устраивает 1й вариант? - не хочу захламлять хранить кучу запросов (а их будет 20шт), причем меняется в них только один параметр. Подскажите как вопрос решить, ну или подтолкните на мудрую мысль ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 10:57 |
|
Recordset - object variable or with block not set
|
|||
---|---|---|---|
#18+
mozgen, если вставите в модуль строку Option Explicit , то уыидите, что не все переменные объявлены ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 11:04 |
|
Recordset - object variable or with block not set
|
|||
---|---|---|---|
#18+
Код: vbnet 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 11:09 |
|
Recordset - object variable or with block not set
|
|||
---|---|---|---|
#18+
mozgen, и предпочитаю такую форму записи Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 11:09 |
|
Recordset - object variable or with block not set
|
|||
---|---|---|---|
#18+
Ну и всё же желательны Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 11:11 |
|
Recordset - object variable or with block not set
|
|||
---|---|---|---|
#18+
mozgen, Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Текст сохраненного zapros1 Код: sql 1. 2. 3.
Вызов Код: vbnet 1.
Может где ошибся, но смысл думаю понятен... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 11:26 |
|
Recordset - object variable or with block not set
|
|||
---|---|---|---|
#18+
AkinaНу и всё же желательны Код: vbnet 1.
Эт куда прикладывать? К дао рекордсету? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 11:34 |
|
Recordset - object variable or with block not set
|
|||
---|---|---|---|
#18+
\\\\Эт куда прикладывать? К дао рекордсету? ну как бы родной справке я верю. А она однозначно говорит, что MS Access HelpIf the New keyword is not used when declaring an object variable, the variable that refers to the object must be assigned an existing object using the Set statement before it can be used. Until it is assigned an object, the declared object variable has the special value Nothing, which indicates that it doesn't refer to any particular instance of an object. DAO-рекордсет - это объект. И никаких оговорок, что к DAO-рекордсету эта часть справки не относится, я не вижу. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 11:47 |
|
Recordset - object variable or with block not set
|
|||
---|---|---|---|
#18+
mozgen, хспдя... пока наковыривал ответ уже пять человек отписалось... ну, неужели это так тяжело - самому проверить правильность собственных действий?.. Если qdf работает, а rst, на похожей, казалось бы, sql-строке нет - то дело в последней... Получается, что интерфейсный акс умнее тя... Так и бери с него пример... сравни sql-строки для начала... Создай программно qdf на своей sql-строке... и разберись, млин... Тем более ,что (а их будет 20шт) ... отличный метод проыерки правильности и универсальности решения... Мой совет - формируй строку наиболее наглядным для себя (и других!) способом. Подсовывай в инструкцию уже готовую строку, а не сбивчивое бормотание... Вообще вынеси в отдельную процедуру... обратно, принимая во нимание (а их будет 20шт) ... Как-то так... А то на ходу всплывает какая-то & C1 & ... . ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 11:50 |
|
Recordset - object variable or with block not set
|
|||
---|---|---|---|
#18+
Akina...DAO-рекордсет - это объект. И никаких оговорок, что к DAO-рекордсету эта часть справки не относится, я не вижу.А я не вижу смысла в том, что сначала создать один объект и получить на него ссылку, а затем тут же получить ссылку на другой объект и присвоить её этой же переменной... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 11:54 |
|
Recordset - object variable or with block not set
|
|||
---|---|---|---|
#18+
\\\\, +1 Акина с этим As New просто гарцует на хэлпе. Так он скоро договорится и до: ' Option Explicit Для As New нужны весьма и весьма убедительные предпосылки. В моей практике таковых не было... Более того - избавлялся беспощадно. . ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 12:20 |
|
Recordset - object variable or with block not set
|
|||
---|---|---|---|
#18+
Господа, всем спасибо, все получилось!) Спасибо за дельные комментарии, как только убрался в коде ошибка сразу стала ясна. Бить меня надо сначала по рукам, затем по голове, хотя последовательно принципиального значения не имеет)) Рабочие код: Код: vbnet 1. 2.
И не рабочий код: Код: vbnet 1. 2.
rsPM - другой Recordset, объявленный много ранее и уже не используемый) Косяк не в мозгах а в руках и невнимательности. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 12:22 |
|
Recordset - object variable or with block not set
|
|||
---|---|---|---|
#18+
Lieutenant Pigeon, мне лень писать подобный запрос ручками, поэтому он был скопирован из конструктора, синтаксис верный) По поводу процедуру и пр. так и сделано, здесь приведен вырванный кусок который не работал. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 12:25 |
|
Recordset - object variable or with block not set
|
|||
---|---|---|---|
#18+
Lieutenant Pigeon...Для As New нужны весьма и весьма убедительные предпосылки. В моей практике таковых не было... Более того - избавлялся беспощадно. .Дело тут не в инициализации переменной в секции декларирования (хотя это действительно не есть гуд, но вполне допустимо), а в создании разных объектов. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 12:28 |
|
Recordset - object variable or with block not set
|
|||
---|---|---|---|
#18+
mozgen...Рабочие код: Код: vbnet 1. 2.
.Точнее типизируй объекты Код: vbnet 1.
- букав немного, а проблем в будущем будет меньше. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 12:31 |
|
Recordset - object variable or with block not set
|
|||
---|---|---|---|
#18+
mozgenLieutenant Pigeon, мне лень писать подобный запрос ручками, поэтому он был скопирован из конструктора, синтаксис верный) По поводу процедуру и пр. так и сделано, здесь приведен вырванный кусок который не работал. * мне лень писать подобный запрос ручками Ты не один такой :) Тут все именно этим профессионально и занимаются - написать один раз и на всю оставшуюся... * мне лень писать подобный запрос ручками Кто тебя заставляет?! Я же, наоборот, сказал: бери пример с акса. Сделай по образу и подобию, подставь свои переменные и бкдет тебе щазтье... * синтаксис верный Был бы верный - топика бы не было... * здесь приведен вырванный кусок no comments ... . ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 12:36 |
|
Recordset - object variable or with block not set
|
|||
---|---|---|---|
#18+
Вам правильно посоветовали про Option Explicit. mozgenDim rs As Recordset ... Set rsPM = db.OpenRecordset("SELECT...") Т.е. объявлен rs, а используется rsPM. Кстати, лучше (надежнее) Dim rs As DAO. Recordset. mozgenSet rsPM = db.OpenRecordset("SELECT...", adOpenDynamic, adLockOptimistic ) Тогда ошибка: "ODBC - блокировка всех записей невозможна") Константы из библиотеки ADO, а у вас DAO. Х.з., что вы пытаетесь открыть с их значениями. mozgenSet db = DBEngine.Workspaces(0).Databases(0) Если ваш код в Аксе, то лучше использовать Set db = CurrentDb. mozgenСобственно почему меня не устраивает 1й вариант? - не хочу захламлять хранить кучу запросов (а их будет 20шт), причем меняется в них только один параметр. Прислушайтесь к совету vmag - можно создать запрос с параметром и указывать его значение перед отркрытием Recordset-а. Или другой вариант - создать сохраненный запрос ("zapros1") без WHERE (или с WHERE PRB_RELS.R2=755654), а затем: Set rsPM = db.OpenRecordset("SELECT * FROM zapros1 WHERE <ваше условие>") ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 12:38 |
|
Recordset - object variable or with block not set
|
|||
---|---|---|---|
#18+
\\\\Lieutenant Pigeon...Для As New нужны весьма и весьма убедительные предпосылки. В моей практике таковых не было... Более того - избавлялся беспощадно. .Дело тут не в инициализации переменной в секции декларирования (хотя это действительно не есть гуд, но вполне допустимо), а в создании разных объектов. Гуд... Не гуд... Я же не случайно съязвил в сторону ' Option Explicit ... Да, VB с M$ и БГ допускают многие вольности и даже в своих сраных хэлпах и мсднах провоцируют новичков на них... Но это не есть гуд практик. . ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 12:46 |
|
Recordset - object variable or with block not set
|
|||
---|---|---|---|
#18+
Анатолий ( Киев )... создать сохраненный запрос ("zapros1") без WHERE (или с WHERE PRB_RELS.R2=755654), а затем ... В принципе-то плюсую, но... ... давно ужЕ отказался от подобной практики. Практикую типичный, максимально упрощенный рекордсет. И лишь по месту, по исключительной нужде, через евонные .Sort и .Filter затачиваю: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Несколько затратно по ресурсам и коду, но, нынче... и для себя любмого... . ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 13:18 |
|
|
start [/forum/topic.php?fid=45&msg=39353543&tid=1612945]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
102ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 340ms |
total: | 534ms |
0 / 0 |