|
ADO/XLS как определить начало месяца из поля Type=135? | ☑ | ||
---|---|---|---|---|
0
Лунтик
27.02.20
✎
13:23
|
Подключаюсь к XLS через ADO
СтрокаПодключения="Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};Dbq=" + СокрЛП(ИмяФайла) + ";"; Есть поле с датой, оно читается (Type=135), без функций отрабатывает без ошибок ТекстЗапроса="SELECT ДатаИзменения FROM ["+ИмяЛиста+"]"; Пытаюсь вычислить начало месяца по аналогии с TSQL - происходит сбой ТекстЗапроса="SELECT dateadd(day,1-datepart(day,ДатаИзменения),convert(date, ДатаИзменения)) AS НачалоМесяца FROM ["+ИмяЛиста+"]"; Как исправить? |
|||
1
Asmody
27.02.20
✎
14:24
|
(0) А кто обещал, что диалект TSQL будет там работать? Там диалект Access вроде должен быть
|
|||
2
Лунтик
27.02.20
✎
14:37
|
(1) а без диалектов как-нибудь можно? пусть некрасиво и на пальцах...
|
|||
3
NorthWind
27.02.20
✎
14:42
|
(2) без диалектов можно посчитать в 1С, забрав дату из рекордсета. Зачем запросом-то считать? Вам один фиг результат запроса как-то обрабатывать.
|
|||
4
Лунтик
27.02.20
✎
16:38
|
(3) надо выбирать порции из файла помесячно и помесячно обрабатывать. Сам файл растет постоянно. Начало месяца предполагалось загнать в условие.
За неимением лучшего делаю выборку всех максимальных и минимальных дат, в 1с собираю все возможные комбинации и столько же раз запускаю выборку. Так что с удовольствием выслушаю все предложения... |
|||
5
shuhard
27.02.20
✎
17:07
|
(4) дык цепляешь xls к Ассеs и строишь запрос
|
|||
6
acht
27.02.20
✎
19:05
|
(4) > помесячно
Гм. У вас там условие типа "WHERE Поле >= ДатаНачала AND Поле <= ДатаОкончания" - это высшая математика? |
|||
7
NorthWind
27.02.20
✎
21:44
|
(4) Тогда попробуйте JetSQL функции
select DateAdd ('d', колонка_даты, 1-Day(колонка_даты)) from ваша_таблица |
|||
8
NorthWind
27.02.20
✎
21:49
|
DateAdd есть, но синтаксис не совсем тот же что у вас. И DatePart нет, есть Day (), Month () и т.д.
|
|||
9
NorthWind
27.02.20
✎
21:52
|
Вместо convert можно попробовать CDate (дата_из_строки)
|
|||
10
Сияющий в темноте
27.02.20
✎
22:50
|
так там же дата как число Double должна быть.
и передается она как число дней с какого-то момента. не про все даты ADO знает,что они даты,а функции работы с датами в excel это все функции VbScript. |
|||
11
NorthWind
28.02.20
✎
10:26
|
(10) кстати, хорошо что вы обратили мое внимание... (0) лезет к экселю через провайдер ADO для ODBC.
Я думаю, это хреновая идея. Надо использовать либо провайдер Jet 4.0 (для 32-битного приложения и файлов xls), либо ACE (более современный). Тогда функции JetSQL точно будут работать. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |