AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.09.2006, 18:55   #1  
ksandr is offline
ksandr
Участник
 
23 / 10 (1) +
Регистрация: 27.01.2006
Доброго времени суток товарищи. Вот возникла тут проблемка. Необходимо производить экспорт данных в dbf. НО экспорт даты не проходит ни под каким видом.

Код:
DBFConn.Execute('insert into XXXXX.DBF(XXXXXX) values('+FORMAT(01022006D)+')');
Вот на такую строку ругается что ошибка в числе 01.02.06. Что за ошибка никак сообразить не могу, подставил уже в лоб, но конечно хочется забирать данные из таблицы. Народ подкиньте кто-нить код или подскажите где накасячил ???

Спасиб большое.
Старый 05.09.2006, 19:08   #2  
Dzemon is offline
Dzemon
Moderator
 
1,247 / 12 (3) ++
Регистрация: 09.09.2004
Тут скорей всего ошибка в национальном формате даты. Попробуйте создать дату формата ММ.ДД.ГГГГ.
Старый 06.09.2006, 09:08   #3  
ksandr is offline
ksandr
Участник
 
23 / 10 (1) +
Регистрация: 27.01.2006
В том то и проблема, дата задана хитро, чтобы не стояло на первом месте дата или месяц по идее экспорт должен прокатывать. Напрягает то что в сообщении ошибки выдаётся дата 01.02.06, хотя в коде задана формально дата 01.02.2006. Есть подозрение что ошибка связана именно с усечением года в дате. Как перенастроить или изменить формат даты не знаю
Старый 06.09.2006, 10:43   #4  
Advisor is offline
Advisor
Участник
 
33 / 13 (1) ++
Регистрация: 07.09.2005
Цитата:
Сообщение от ksandr Посмотреть сообщение
В том то и проблема, дата задана хитро, чтобы не стояло на первом месте дата или месяц по идее экспорт должен прокатывать. Напрягает то что в сообщении ошибки выдаётся дата 01.02.06, хотя в коде задана формально дата 01.02.2006. Есть подозрение что ошибка связана именно с усечением года в дате. Как перенастроить или изменить формат даты не знаю
так у функции Format есть множество параметров.
Старый 06.09.2006, 11:05   #5  
ksandr is offline
ksandr
Участник
 
23 / 10 (1) +
Регистрация: 27.01.2006
функция Format увы не прокатывает. Попробовал вставить в лоб текстовую переменную- 01.02.2006, пишет туже ошибку. Народ неужели никто не сталкивался с экспортом даты в DBF ?
Старый 06.09.2006, 12:14   #6  
Dolter_imported is offline
Dolter_imported
Участник
 
47 / 10 (1) +
Регистрация: 23.09.2004
Попробуй 'ГГГММДД' - без разделителей
либо cast('ГГГММДД' as datetime)
__________________
YEP! тел. (905) 561-94-00
Старый 06.09.2006, 12:59   #7  
art06 is offline
art06
Участник
Аватар для art06
 
192 / 10 (1) +
Регистрация: 11.08.2006
Мне кажется , что вам необходимо написать так:

date_str := '20060201'; - тип text
simvol - это текстовая константа ' (верхняя запятая)


DBFConn.Execute('insert into XXXXX.DBF(XXXXXX) values( CONVERT(datetime,'+simvol
date_str + simvol + ' ))' );
Старый 06.09.2006, 16:46   #8  
ksandr is offline
ksandr
Участник
 
23 / 10 (1) +
Регистрация: 27.01.2006
Цитата:
Сообщение от Dolter Посмотреть сообщение
Попробуй 'ГГГММДД' - без разделителей
либо cast('ГГГММДД' as datetime)
Не совсем понял что такое cast ?


Цитата:
Сообщение от art Посмотреть сообщение
Мне кажется , что вам необходимо написать так:

date_str := '20060201'; - тип text
simvol - это текстовая константа ' (верхняя запятая)


DBFConn.Execute('insert into XXXXX.DBF(XXXXXX) values( CONVERT(datetime,'+simvol
date_str + simvol + ' ))' );
Вопрос тот же что за функция Convert в Nav не нашёл ?

Посмотрел формат даты в настройках винды. Форма dd.MM.yyyy Соотвественно строка типа 01012006 должна прокатывать без проблем Неужели никто не пробывал
Старый 06.09.2006, 17:00   #9  
art06 is offline
art06
Участник
Аватар для art06
 
192 / 10 (1) +
Регистрация: 11.08.2006
А, разве в Navsion есть "insert into" ??? INSERT INTO ... VALUES - это инструкция sql запроса. Если вы пытаетсь с помощью insert into добавить запись, то необходимо использовать CONVERT для конвертации даты. CONVERT - это часть sql запроса. И к стандартным функциям Nav не имеет никакого отношения.
Старый 06.09.2006, 17:29   #10  
bird_imported is offline
bird_imported
Участник
 
45 / 10 (1) +
Регистрация: 11.05.2006
Цитата:
Сообщение от ksandr Посмотреть сообщение
Не совсем понял что такое cast ?
Вопрос тот же что за функция Convert в Nav не нашёл ?
Это функции языка T-SQL, только вопрос в том, поддерживаются ли эти функции в движке dBASE?
Старый 07.09.2006, 08:26   #11  
Dolter_imported is offline
Dolter_imported
Участник
 
47 / 10 (1) +
Регистрация: 23.09.2004
Цитата:
Сообщение от Bird Посмотреть сообщение
Цитата:
Сообщение от ksandr Посмотреть сообщение
Не совсем понял что такое cast ?
Вопрос тот же что за функция Convert в Nav не нашёл ?
Это функции языка T-SQL, только вопрос в том, поддерживаются ли эти функции в движке dBASE?
так... тогда скажите, плз, что есть DBFConn ? если это Automation, который 'Microsoft ActiveX Data Objects 2.8 Library'.Connection, то собсно convert поддерживается практически всеми драйверами.
Насчет cast не помню, кажется кто-то не "держал" эту функцию...
И запись строкового представления 'YYYYMMDD' в поле типа date или datetime по любому записывает именно дату.
__________________
YEP! тел. (905) 561-94-00
Старый 07.09.2006, 09:08   #12  
ksandr is offline
ksandr
Участник
 
23 / 10 (1) +
Регистрация: 27.01.2006
Код:
DBFConn.Execute('insert into XXXXX.DBF(D_SCHF) values(cast('+FORMAT(DateExport)+' as datetime) )');
в таком варианте не прокатывает, пишет что ошибка в синтаксиса (пропущен оператор) в выражении запроса 'cast (20060102 as datetime)'


для функции convert пишет, неопределённая функция Convert в выражении.

DBFConn - 'Microsoft ActiveX Data Objects 2.6 Library'.Connection
Старый 07.09.2006, 10:32   #13  
konrad_imported is offline
konrad_imported
Участник
 
183 / 10 (1) +
Регистрация: 25.11.2004
А у меня прекрасно пишет дату. Привожу кусочки кода:

DBFBase Automation 'Microsoft ActiveX Data Objects 2.8 Library'.Connection
PERS Automation 'Microsoft ActiveX Data Objects 2.8 Library'.Recordset
CREATE(DBFBase);
DBFBase.Open('DRIVER=Microsoft dBASE Driver (*.dbf);DRIVERID=277;DBQ=' + FilePath);
FileName:='PERS0001.dbf';
CREATE(PERS);
PERS.Open(FileName,DBFBase,2,3);
PERS.AddNew;
IF Employee."Birth Date"<>0D THEN
PERS.Fields().Item('DateRog').Value :=Employee."Birth Date";

PERS.Update;
PERS.Close();
CLEAR(PERS);
Старый 07.09.2006, 10:58   #14  
Dolter_imported is offline
Dolter_imported
Участник
 
47 / 10 (1) +
Регистрация: 23.09.2004
Цитата:
Сообщение от ksandr Посмотреть сообщение
Код:
DBFConn.Execute('insert into XXXXX.DBF(D_SCHF) values(cast('+FORMAT(DateExport)+' as datetime) )');
в таком варианте не прокатывает, пишет что ошибка в синтаксиса (пропущен оператор) в выражении запроса 'cast (20060102 as datetime)'


для функции convert пишет, неопределённая функция Convert в выражении.

DBFConn - 'Microsoft ActiveX Data Objects 2.6 Library'.Connection
Код:
DBFConn.Execute('insert into XXXXX.DBF(D_SCHF) values(cast('''+FORMAT(DateExport)+''' as datetime) )');
передавай строковое таки значение...
__________________
YEP! тел. (905) 561-94-00
Старый 12.09.2006, 07:21   #15  
nickolasz is offline
nickolasz
GMCS
Сотрудники компании GMCS
 
2 / 18 (1) ++
Регистрация: 04.05.2007
Я делаю так:
str cmdtext;
LoginProperty LP;
Connection connection;
Statement stmt;
;

LP = new LoginProperty();
LP.setDSN("Файлы dBASE");
connection = new OdbcConnection(LP);

cmdtext = " Insert into XXXX (DDD1) ";
cmdtext += strfmt("VALUES ('%1'), transDate");
stmt.executeUpdate(cmdtext);

Работает. Нужно только указать в свойствах ODBC "Файлы dBASE" (в системе) путь до папки с файлом dbf.
 

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 09:52.