|
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 точно будут работать.
|
|
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой