Имя: Пароль:
1C
1С v8
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 точно будут работать.