Работая с Аксесом каждый день, я несколько раз на дню сталкиваюсь с проблемой, что мне где-нибудь в VBA-коде нужно посмотреть, что же вернет мне тот или иной SQL-запрос. Для этого мне приходится переключаться из VBA-редактора в основную часть программы, и либо создавать временный запрос (который потом волей-неволей сохраняется), либо быстренько менять SQL в каком-нибудь временном запросе. Поскольку на это тратится всегда куча времени, я решил написать простую функцию, которая выдает результаты запроса в консоль отладки.
Утилита это называется q (чтобы было удобно вызывать, и намек на Query — запрос), принимает она в качестве параметров сам запрос (либо полностью в виде SQL, либо только название запроса или таблицы, главное, чтобы это можно было открыть через CurrentDB.OpenRecordset), максимальную ширину поля при выдаче (если поле больше — оно обрезается, по умолчанию — 10 символов) и максимальное количество записей (по умолчанию — 100 записей), и выдает в консоль содержимое результатов данного запроса в текстовом виде, выглядит это вот так:
?q("qryStatBestVertriebler")
Running qryStatBestVertriebler...
Query returned 9 entries.
-------------------------------------------------------------------------------------
| Nr | VMB | FName | Einkauf | Verkauf | Gewinn | Num |
-------------------------------------------------------------------------------------
| 1| 757 | Sönke Doba | 492661,52 | 718774,8 | 226113,28 | 231 |
| 2| 877 | Johannes W | 10464,99 | 59677,25 | 49212,26 | 39 |
| 3| 1098 | Marco Müll | 8233,18 | 12244,77 | 4011,59 | 36 |
| 4| 5527 | Torben Jas | 12974,64 | 24642,42 | 11667,78 | 16 |
| 5| 6214 | Thiemo Wol | 5932,17 | 12175,97 | 6243,8 | 23 |
| 6| 7833 | Florian Mi | 207384,93 | 293553,82 | 86168,8900 | 254 |
| 7| 8310 | Daniel Sch | 3525,56 | 4338,92 | 813,36 | 4 |
| 8| 8917 | Daniela He | 187881,29 | 638726,06 | 450844,77 | 559 |
| 9| 9330 | Konrad Cyw | 94142,67 | 133056,71 | 38914,04 | 139 |
-------------------------------------------------------------------------------------
Falsch