Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

ADO/XLS как определить начало месяца из поля Type=135?

ADO/XLS как определить начало месяца из поля Type=135?
Я
   Лунтик
 
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 ["+ИмяЛиста+"]";

Как исправить?
   Asmody
 
1 - 27.02.20 - 14:24
(0) А кто обещал, что диалект TSQL будет там работать? Там диалект Access вроде должен быть
   Лунтик
 
2 - 27.02.20 - 14:37
(1) а без диалектов как-нибудь можно? пусть некрасиво и на пальцах...
   NorthWind
 
3 - 27.02.20 - 14:42
(2) без диалектов можно посчитать в 1С, забрав дату из рекордсета. Зачем запросом-то считать? Вам один фиг результат запроса как-то обрабатывать.
   Лунтик
 
4 - 27.02.20 - 16:38
(3) надо выбирать порции из файла помесячно и помесячно обрабатывать. Сам файл растет постоянно. Начало месяца предполагалось загнать в условие.

За неимением лучшего делаю выборку всех максимальных и минимальных дат, в 1с собираю все возможные комбинации и столько же раз запускаю выборку. Так что с удовольствием выслушаю все предложения...
   shuhard
 
5 - 27.02.20 - 17:07
(4) дык цепляешь xls к Ассеs и строишь запрос
   acht
 
6 - 27.02.20 - 19:05
(4) > помесячно
Гм. У вас там условие типа "WHERE Поле >= ДатаНачала AND Поле <= ДатаОкончания" - это высшая математика?
   NorthWind
 
7 - 27.02.20 - 21:44
(4) Тогда попробуйте JetSQL функции
select DateAdd ('d', колонка_даты, 1-Day(колонка_даты)) from ваша_таблица
   NorthWind
 
8 - 27.02.20 - 21:49
DateAdd есть, но синтаксис не совсем тот же что у вас. И DatePart нет, есть Day (), Month () и т.д.
   NorthWind
 
9 - 27.02.20 - 21:52
Вместо convert можно попробовать CDate (дата_из_строки)
   Сияющий в темноте
 
10 - 27.02.20 - 22:50
так там же дата как число Double должна быть.
и передается она как число дней с какого-то момента.
не про все даты ADO знает,что они даты,а функции работы с датами в excel это все функции VbScript.
   NorthWind
 
11 - 28.02.20 - 10:26
(10) кстати, хорошо что вы обратили мое внимание... (0) лезет к экселю через провайдер ADO для ODBC.
Я думаю, это хреновая идея.
Надо использовать либо провайдер Jet 4.0 (для 32-битного приложения и файлов xls), либо ACE (более современный).
Тогда функции JetSQL точно будут работать.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.