|
Помогите с recordset в VBA!
|
|||
---|---|---|---|
#18+
Открываю recordset по всем правилам. В нем должно быть несколько полей, а получается только одно!!!! Уже голову сломал..... код: dim rst as DAO.Recordset dim strSQL as String strSQL = "SELECT table.FirstName FROM table WHERE table.ID > 3" set str = CurrentDB.OpenRecordset(strSQL, dbOpenDynaset) Debug.Print rst.Recordcount set rst = Nothing Результат rst.Recordset всегда =1 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2016, 15:07 |
|
Помогите с recordset в VBA!
|
|||
---|---|---|---|
#18+
skiminok65Открываю recordset по всем правилам. В нем должно быть несколько полей, а получается только одно!!!! Уже голову сломал..... код: dim rst as DAO.Recordset dim strSQL as String strSQL = "SELECT table.FirstName FROM table WHERE table.ID > 3" set str = CurrentDB.OpenRecordset(strSQL, dbOpenDynaset) Debug.Print rst.Recordcount set rst = Nothing Результат rst.Recordset всегда =1 Я чего то не понял: Debug.Print rst.Recordcount или rst.Recordset всегда =1 Где вы видите поля? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2016, 15:09 |
|
Помогите с recordset в VBA!
|
|||
---|---|---|---|
#18+
Свойство RecordCount вернёт правильное значение только после .MoveLast. И то не 100% гарантии. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2016, 15:11 |
|
Помогите с recordset в VBA!
|
|||
---|---|---|---|
#18+
ROIГде вы видите поля?Да он не различает поля и записи походу... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2016, 15:12 |
|
Помогите с recordset в VBA!
|
|||
---|---|---|---|
#18+
AkinaСвойство RecordCount вернёт правильное значение только после .MoveLast. И то не 100% гарантии. Дык вернется количество записей А количество полей- не (это не так делается). ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2016, 15:13 |
|
Помогите с recordset в VBA!
|
|||
---|---|---|---|
#18+
1. Полей или все же записей? 2. Опечатка? dim rst as DAO.Recordset set str = CurrentDB.OpenRecordset(strSQL, dbOpenDynaset) 3. Для определения количества записей рекордсета его нужно сначала заполнить rst.MoveLast MsgBox rst.RecordCount ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2016, 15:15 |
|
Помогите с recordset в VBA!
|
|||
---|---|---|---|
#18+
skiminok65, Тс вы где? Вы чего вообще то имели в виду. Народ волнуется! ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2016, 15:30 |
|
Помогите с recordset в VBA!
|
|||
---|---|---|---|
#18+
Akina, Спасибо. Работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2016, 15:34 |
|
Помогите с recordset в VBA!
|
|||
---|---|---|---|
#18+
AkinaИ то не 100% гарантии. А что, действительно бывали случаи? Ну если только в нагруженной многопользовательской среде за это время кто-то другой успеет поменять число строк. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2016, 16:20 |
|
Помогите с recordset в VBA!
|
|||
---|---|---|---|
#18+
MrShin, Акина жути нагоняет для порядку :) в DAO - 100%. в ADO - с оговорками с чужих слов типа: use a static or keyset cursor to return the actual record count.но практически не знаю. Не использую ADO. . ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2016, 16:41 |
|
Помогите с recordset в VBA!
|
|||
---|---|---|---|
#18+
MrShinА что, действительно бывали случаи? Ну если только в нагруженной многопользовательской среде за это время кто-то другой успеет поменять число строк.Почему обязательно "число строк"? Достаточно изменить значение любого поля, чтобы при этом изменилась "отбираемость" записи по фильтру запроса. Впрочем, если получить именно точное количество записей - критично, то методы для его получения должны быть другими... и использование чуть ли не немедленное... капча-грузовики-я-не-роботв DAO - 100%. Сценарий. Клиент открывает рекордсет. Клиент делает мув ласт. Другой клиент удаляет запись. Клиент запрашивает рекорд каунт... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2016, 18:03 |
|
Помогите с recordset в VBA!
|
|||
---|---|---|---|
#18+
Akina, я же говорю - жути нагоняешь :) Я в матчасть глыбоко не погружался, потому, чисто поверхностно, по колхозно-крестьянски: Давай отличать достоверность RecordCount системную, архитектурную от привнесенной, пользовательской. Я для себя сделал вывод, что системная у DAO = 100%, у ADO < 100%. Говоря же о пользовательской, она у обоих < 100%. И, конечно же, можно и нужно учитывать вероятность возникновения коллизий по сценариям, какие ты, к примеру, описал. Если привнести чутка философии, то можно и должно утверждать, что RecordCount дает нам цифру, соответствующую именно тому рекордсету, который мы и запрашивали, и который был выплюнут запросом к таблице на момент его выполнения, с системной достоверностью, соответствующей используемой модели - DAO или ADO. Говоря же об изменениях, которые могли произойти в таблице с момента выполнеия запроса - да, тот же самый запрос даст другой рекордсет . И, именно(!) ДРУГОЙ. Интерпретировать его как ТОТ ЖЕ САМЫЙ - нельзя. Как и сравнивать результаты их анализов. Доведя ситуацию до абсурда мы или получим или - безысходность в виде полного отсутствия результата, т.к. замкнемся в бесконечном цикле обновления рекордсета и вычисления RecordCount или же - нулевую достоверность при принятии полученного RecordCount один раз и на всю оставшуюся жизнь. Примерно так можно утверждать, что любой отсчет времени ложен априори. Недостоверен. А вот ту или иную степень достоверности ему придает разумно принятая погрешность и способ интерпретации этих отсчетов в реализуемой модели. Как-то так... Поэтому я и говорю - жути нагоняешь :) . ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2016, 19:33 |
|
Помогите с recordset в VBA!
|
|||
---|---|---|---|
#18+
капча-печенье-я-не-робот я же говорю - жути нагоняешь :) ................................. ................................. ................................. Поэтому я и говорю - жути нагоняешь :) .Рондо?))) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2016, 21:33 |
|
|
start [/forum/topic.php?fid=45&msg=39251288&tid=1613504]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
54ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 164ms |
0 / 0 |