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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.12.2011, 15:00   #1  
alvares is offline
alvares
Участник
 
45 / 12 (1) ++
Регистрация: 27.10.2011
Коллеги, а есть у кого рабочий пример для создания DBF c помощью "FastDbf"

Не могу понять как работать с заголовком DBF, подскажите в чем не прав - пример создает файл нулевой длины и не отпускает его пока открыта АХ.
X++:
static void DBFCreate(Args _args)
{
    SocialExplorer.IO.FastDBF.DbfFile       dbfFile = new SocialExplorer.IO.FastDBF.DbfFile();
    SocialExplorer.IO.FastDBF.DbfRecord     dbfRecord;
    SocialExplorer.IO.FastDBF.DbfHeader     dbfHeader;
    ;

    dbfFile.Create("c:\\tt1.dbf");

    dbfHeader = dbfFile.get_Header();

    dbfHeader.AddColumn("StrCol", SocialExplorer.IO.FastDBF.DbfColumnType::Character, 20, 0);
    dbfHeader.AddColumn("NumCol1", SocialExplorer.IO.FastDBF.DbfColumnType::Number, 15, 3);
    dbfHeader.AddColumn("NumCol2", SocialExplorer.IO.FastDBF.DbfColumnType::Number, 3, 0);
    dbfHeader.AddColumn("DateCol", SocialExplorer.IO.FastDBF.DbfColumnType::Date);
    dbfHeader.AddColumn("BoolCol", SocialExplorer.IO.FastDBF.DbfColumnType::Boolean);
    
    dbfRecord = new SocialExplorer.IO.FastDBF.DbfRecord(dbfHeader, System.Text.Encoding::GetEncoding(1251));
    dbfRecord.set_Item(1, 'Test');
    dbfRecord.set_Item(2, '100.10');
    dbfRecord.set_Item(3, '10');
    dbfRecord.SetDateValue(4,str2datetime('31.12.2010', 123));
    dbfRecord.set_Item(5, '1');

    dbfFile.Write(dbfRecord);
    dbfFile.WriteHeader();
    dbfFile.Close();
}
Спасибо.
Старый 15.12.2011, 16:56   #2  
someOne is offline
someOne
Участник
Аватар для someOne
 
174 / 432 (15) +++++++
Регистрация: 11.12.2008
Адрес: Москва
Цитата:
Сообщение от alvares Посмотреть сообщение
Коллеги, а есть у кого рабочий пример для создания DBF c помощью "FastDbf"

Не могу понять как работать с заголовком DBF, подскажите в чем не прав - пример создает файл нулевой длины и не отпускает его пока открыта АХ.

Спасибо.
Вот вам рабочий пример.

При работе с NET не забывайте о таких особенностях:
1. Ядро аксапты не перехватывает CLR ошибки, поэтому их нужно перехватывать в коде самому, иначе остаются "висеть" инициализированные объекты (в вашем случае захваченные файлы). Со сборкой мусора при использовании CLR не все так просто...
Кроме того вы просто не сможете понять в чем причина ошибки...

2. В NET принято нумерация последовательности объектов (строк, стобцов...) с нуля а не с единицы как в аксапте.

X++:
static void DBFCreate(Args _args)
{
    SocialExplorer.IO.FastDBF.DbfFile       dbfFile = new SocialExplorer.IO.FastDBF.DbfFile();
    SocialExplorer.IO.FastDBF.DbfRecord     dbfRecord;
    SocialExplorer.IO.FastDBF.DbfHeader     dbfHeader;
    ;

    try
    {
        winApi::deleteFile("c:\\tt1.dbf");

        dbfFile.Create("c:\\tt1.dbf");

        dbfHeader = dbfFile.get_Header();

        dbfHeader.AddColumn("StrCol",  SocialExplorer.IO.FastDBF.DbfColumnType::Character, 20, 0);
        dbfHeader.AddColumn("NumCol1", SocialExplorer.IO.FastDBF.DbfColumnType::Number, 15, 3);
        dbfHeader.AddColumn("NumCol2", SocialExplorer.IO.FastDBF.DbfColumnType::Number, 3, 0);
        dbfHeader.AddColumn("DateCol", SocialExplorer.IO.FastDBF.DbfColumnType::Date);
        dbfHeader.AddColumn("BoolCol", SocialExplorer.IO.FastDBF.DbfColumnType::Boolean);

        dbfRecord = new SocialExplorer.IO.FastDBF.DbfRecord(dbfHeader, System.Text.Encoding::GetEncoding(1251));
        

        dbfRecord.set_Item(0, 'Test');
        dbfRecord.set_Item(1, "100");
        dbfRecord.set_Item(2, "10");
        dbfRecord.SetDateValue(3,str2datetime('31.12.2010', 123));
        dbfRecord.set_Item(4, 'f');

        dbfFile.Write(dbfRecord);
        dbfFile.WriteHeader();
        dbfFile.Close();
    }
    catch (Exception::CLRError)
    {
        dbfFile.Close();
        Error(AifUtil::getClrErrorMessage());
    }
}
За это сообщение автора поблагодарили: gl00mie (2), alvares (1).
Теги
.net, dbf, fastdbf, законченный пример, полезное

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
UTF8 -> CP866 через .NET подскажите demoded DAX: Программирование 2 02.03.2011 14:23
AX.NET: интеграция .NET-приложений с Аксаптой и (будущие) возможности облачных вычислений gl00mie DAX: Программирование 2 23.04.2010 00:47
Вложение файлов через метод .NET Business Connector (DocuRef, DocuValue) kornix DAX: Программирование 6 18.09.2009 10:36
Как через .NET коннектор удалить записи? Jab Straight DAX: Программирование 6 09.11.2007 18:56
Не могу залогиниться через .NET connector. axy DAX: Программирование 3 06.12.2006 14:04
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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