|
ADODB: обработка NULLs в RecordSet в Excel
|
|||
---|---|---|---|
#18+
В макросе Excel VBA получаю набор данных из процедуры SQL Server и вставляю в новый Sheet с помощью Range("B1").CopyFromRecordset rs Мне нужно, чтобы значения NULL из базы отображались в ячейке как строка "NULL", а не как пустая строка. Также хочется, чтобы тип BIT отображался не как "ИСТИНА" или "ЛОЖЬ", а как 0 и 1 Можно ли это сделать , продолжаю использовать CopyFromRecordset ? Может быть есть какие-то параметры в строке соединения или параметры экземпляра RecordSet'a ? Если нельзя - может быть ткнете в аналогичный скрипт, который обрабатывает типы и NULL, как мне нужно? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 18:05 |
|
ADODB: обработка NULLs в RecordSet в Excel
|
|||
---|---|---|---|
#18+
Строковый литерал 'NULL' и значение NULL - вещиразные. Еслинужно (нафига?) - ну используй CASE/IIF/IFNULL/etc. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 18:22 |
|
ADODB: обработка NULLs в RecordSet в Excel
|
|||
---|---|---|---|
#18+
Akina, что разные - я понимаю. Литерал нужен, чтобы отличать NULL-ячейки от пустых строк. В выводе может быть и то, и другое. Скажем, если из MS SQL сохранять, набор данных в csv, он сохранит все, как мне надо. Copy-paste из SSMS в Excel - тоже. Запрос из Excel VB - нет. Набор данных возвращает процедура, и он может иметь разное число полей с разными типами. Я предполагаю, что в цикле можно все проверить и вывести в каждую ячейку, просто это явно дольше будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 18:33 |
|
ADODB: обработка NULLs в RecordSet в Excel
|
|||
---|---|---|---|
#18+
Ну внеси соотв. корректировку в текст запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 20:42 |
|
ADODB: обработка NULLs в RecordSet в Excel
|
|||
---|---|---|---|
#18+
А если в процедуре невозможно внести ссотв. правки - используй преобразующий запрос-обёртку. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 20:43 |
|
ADODB: обработка NULLs в RecordSet в Excel
|
|||
---|---|---|---|
#18+
Akina, спасибо. Справился обработкой RecordSet'а в модуле VBA - IFNULL () . Сам запрос в базе менять было не очень хорошою ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2016, 19:14 |
|
ADODB: обработка NULLs в RecordSet в Excel
|
|||
---|---|---|---|
#18+
makondo, Правда быстрый CopyFromRecordSet уже не получается при этом использовать - поячеечный вывод в Sheet двойным циклом заметно медленнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2016, 19:15 |
|
ADODB: обработка NULLs в RecordSet в Excel
|
|||
---|---|---|---|
#18+
А кто мешает сперва быстро вылить на лист как есть, а потом так же быстро выполлнить Replace по диапазону ячеек? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2016, 22:14 |
|
|
start [/forum/topic.php?fid=61&msg=39281451&tid=2173004]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 138ms |
0 / 0 |