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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.04.2013, 13:03   #1  
ilyuha is offline
ilyuha
Участник
 
32 / 15 (1) ++
Регистрация: 28.01.2011
Цитата:
Сообщение от asd1274 Посмотреть сообщение
У вас проблема с синтаксисом в команде создания файла dbf.
Попробуйте ее вытащить в info и выполнить например в Foxpro.
Вот рабочий вариант:

X++:
    CCADOConnection              dBF_Con;
    CCADOCommand             aDO;
    CCADORecordset             aDR;
    str filePath = 'c:\\1\\', fileName = '001.dbf';
    str                                   cmdText, cmd_del, cmd_value;
    CustTable                        CustTable;
    RContractTable                RContractTable;

    ;

    dBF_Con     = new CCADOConnection();
    aDO         = new CCADOCommand();
    aDR         = new CCADORecordset();


     dBF_Con.open("Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Extended Properties=dbase 5.0;Data Source="+filePath+";");
         ADO.activeConnection(dBF_Con);
        if (dBF_Con)
    {
         cmd_del = "DROP Table "+ fileName;
         ADO.commandText(cmd_del);
         ADR = ADO.execute();
       cmdText = " CREATE TABLE " + fileName + " (ACCOUNTNUM char(20), DATEDOG date, NDOG char(20), DOGACCOUNT char(10))"; // договора

        ADO.commandText(cmdText);
        ADR = ADO.execute();
      }

Как то так - сверьте с тем что есть у вас.
У нас все практически один в один, только имеются доп. условия...
Старый 04.04.2013, 13:04   #2  
asd1274 is offline
asd1274
Участник
Компания АМАНД
 
32 / 12 (1) ++
Регистрация: 29.09.2008
Адрес: Ковров
Какие именно - если можете дайте ваш код - попробую у себя запустить.
Старый 04.04.2013, 13:49   #3  
ilyuha is offline
ilyuha
Участник
 
32 / 15 (1) ++
Регистрация: 28.01.2011
X++:
cmdText                 = " CREATE TABLE " + filenameTmp + " (";
            cmdTextInsertTemplate   = " INSERT INTO "  + filenameTmp + " (";

            while select usrExpImpField
            order by usrExpImpField.Sequence
            where usrExpImpField.GroupId == groupId
            {
                if (usrExpImpField.Enabled)
                {
                    fieldName = usrExpImpField.ExFieldName ? usrExpImpField.ExFieldName : usrExpImpField.fieldName(false, "");
                   cmdText += strfmt("%1 %2%3,",
                                    fieldName,
                                    this.BaseTypeToADOType(usrExpImpField.baseType()),
                                    usrExpImpField.baseType() == Types::String ? strfmt("(%1)",usrExpImpField.FieldSize()) : "");

                    cmdTextInsertTemplate += fieldName + ",";
                }
            }

            cmdText =   strdel(cmdText,strlen(cmdText),1);
            cmdText += ")";

            cmdTextInsertTemplate =   strdel(cmdTextInsertTemplate,strlen(cmdTextInsertTemplate),1);
            cmdTextInsertTemplate += ") values (";

            dBF_Con     = new CCADOConnection();
            aDO         = new CCADOCommand();
            aDR         = new CCADORecordset();
            dBF_Con.open("Driver={Microsoft dBase Driver (*.dbf)};");
            ADO.activeConnection(dBF_Con);

            if (dBF_Con)
            {
                ADO.commandText(cmdText);
                ADR = ADO.execute();
            }
Старый 04.04.2013, 15:46   #4  
asd1274 is offline
asd1274
Участник
Компания АМАНД
 
32 / 12 (1) ++
Регистрация: 29.09.2008
Адрес: Ковров
Если можно, то покажите здесь значение cmdText - перед "ADR = ADO.execute();" - я его прогоню в foxpro.
Старый 04.04.2013, 16:37   #5  
ilyuha is offline
ilyuha
Участник
 
32 / 15 (1) ++
Регистрация: 28.01.2011
Цитата:
Сообщение от asd1274 Посмотреть сообщение
Если можно, то покажите здесь значение cmdText - перед "ADR = ADO.execute();" - я его прогоню в foxpro.
CREATE TABLE \\Fs1\Reports\Axapta\АПТЕЧКА\003355.dbf (NDOC char(20),DATEDOC date,CODEPST char(20),EAN13 char(80),PRICE1 char(20),PRICE2 numeric,PRICE2N numeric,QNT numeric,SER char(20),GDATE char(20),DATEMADE char(20),NAME char(140),CNTR char(60),FIRM char(140),QNTPACK numeric,NDS numeric,REGPRC char(20),NUMGTD char(30),SERTIF char(35),SERTDATE date,SERTORG char(20),SUMPAY numeric,SUMNDS10 char(20),SUMNDS20 char(20),SUM10 char(20),SUM20 char(20),SUM0 char(20),PODRCD char(140),NUMZ char(20),DATEZ date,BILLNUM char(30),BILLDT date,SERTGIVE date,DATEPAY char(20))

Повторюсь, эта ошибка только на нескольких компьютерах
Старый 04.04.2013, 19:30   #6  
asd1274 is offline
asd1274
Участник
Компания АМАНД
 
32 / 12 (1) ++
Регистрация: 29.09.2008
Адрес: Ковров
Все ясно - вы пытаетесь в операторе CREATE сразу указать путь к файлу - так делать нельзя. Как указывать путь к файлу в примере есть. Завтра утром выложу полностью пример как желательно делать - переделайте под себя и должно работать. Кроме того наверное имеет смысл разбить операторы CREATE и INSERT.

Последний раз редактировалось asd1274; 04.04.2013 в 20:03.
Старый 04.04.2013, 20:10   #7  
handy-comp is offline
handy-comp
Участник
 
96 / 78 (3) ++++
Регистрация: 27.09.2012
Для работы с DBF осмелюсь посоветовать начать использовать Net сборки, например FastDBF: Обработка DBF через .net
Удобней использовать, выше скорость и на сервере x64 работает.
Дополнительный плюс, в отличие от мелкософтовского драйвера, позволяет корректно задавать количество десятичных разрядов для типа numeric и различные кодировки русского.
За это сообщение автора поблагодарили: asd1274 (1), ilyuha (1).
Старый 05.04.2013, 13:52   #8  
ilyuha is offline
ilyuha
Участник
 
32 / 15 (1) ++
Регистрация: 28.01.2011
Цитата:
Сообщение от asd1274 Посмотреть сообщение
Все ясно - вы пытаетесь в операторе CREATE сразу указать путь к файлу - так делать нельзя. Как указывать путь к файлу в примере есть. Завтра утром выложу полностью пример как желательно делать - переделайте под себя и должно работать. Кроме того наверное имеет смысл разбить операторы CREATE и INSERT.
Можно и так.
Переделали бы, если у всех была эта ошибка.
Теги
ado, dbf, создание файла

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Need help ошибка Неправильный тип индекса массива. Evgeniy2020 DAX: Администрирование 3 05.11.2013 03:13
Ошибка в логе при установке клиента AX 2009 sao DAX: Администрирование 9 04.02.2010 11:56
ошибка при экспорте в WORD Nikolaich DAX: Программирование 14 27.01.2009 17:50
Поля 255 символов при экспорте в DBF Beast-L DAX: Программирование 5 25.07.2007 14:22
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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