← All posts tagged VBA

CaufMAN

В общем в первотеге стандартным внутренним ОРМ для взаимодействия с бд является DAO. Оно в целом уже давно является legacy и в большинстве случаев рекомендуют пользовать ADO. Но именно внутри access DAO оптимизирован просто превосходно и работает местами быстрее ADO (сам не тестировал, но встречал именно такое мнение). Но самый пиздец в нем — это программный доступ к результатам запросов. Нельзя просто отправить запрос на выборку и получить данные. Сперва надо создать объект набора данных Recordset, который по сути является итератором. То есть, пока ты его не прокрутишь до EOF, ты не узнаешь, какое количество результатов вернула бд. Но есть спасительный (вроде как) метод GetRows, который возвращает указанное количество строк результатов в виде двумерного массива.

И, казалось бы, вот оно — СЧАСТЬЕ! А вот хуй там! Ключевые слова здесь "указанное количество". Если в метод не передавать вообще ничего, то он вернет только текущую строку. Если ввести число меньше длинны результата — получишь не все значения. А если больше — словишь ошибку Out of range. И тут приходит мысль — а почему бы не передать в него длинну самого набора результатов, тем паче, что есть свойство RecordCount. Вот только показывает оно количество прочитанных результатов на данный момент и сразу после запроса равно 1, если результат не нулевой, и дальше растет по мере прокрутки итератора.

В итоге получаем какой-то невероятно идиотический механизм взаимодействия. Получаешь итератор, крутишь его, а потом с ним работаешь... СТОП! А нахера мне с ним как-то еще работать, если я его УЖЕ прокрутил и при этом у меня есть все возможности параллельно считать все значения построчно?

CaufMAN

Онлайн документация по адресу docs.microsoft.com просто ссущее говно. Вернее не сама докумнтация, а ее реализация. КОгда жмешь открыть доку, запускается браузер, который загружает страницу со статьеи и... ВИСНЕТ БЛЯДЬ подгружая ебучий скрипт для того, чтоб переведенный ебучим машинным переводчиком текст посвечивать оригинальным англиским. Висит ровно до того момента, пока не щелкнешь "Отключить эту ссанину", которое становится нажимаемым спустя пару минут после загрузки страницы. Короче проще гуглить на сторонних сайтах