Показать сообщение отдельно
Старый 28.09.2006, 15:06   #10  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,709 / 1201 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от belugin Посмотреть сообщение
Я хочу зафигачить xpo-шник в мемо поле при помощи ODBCConnection
Я так понимаю, задача сводится к тому, чтобы закачать файл в поле типа TEXT на MS SQL? Для этого можно использовать команду самого MS SQL сервера BULK INSERT.

Т.е. логика примерно такая

Код:
static void Job_Connection(Args _args)
{
    str         strQuery;
    FileName    fileName;
    Connection  connection;
    Statement   statement;
    ;

    fileName = "\\\\MyServer\\ShareDir\\MyFile.xpo";
    strQuery = "SET NOCOUNT ON"+
                " IF Object_ID('tempdb..#tmpFile') IS NOT NULL DROP TABLE #tmpFile"+
                " CREATE TABLE #tmpFile (Content TEXT)"+
                " BULK INSERT #tmpFile FROM '"+fileName+"' WITH (ROWTERMINATOR='`')"+
                "";

    connection = new Connection();
    statement = connection.createStatement();
    statement.executeQuery(strQuery);
}
Здесь единственная проблема в том, что все это добро будет выполнятся со стороны сервера. Т.е. путь доступа к файлу надо писать именно со стороны сервера. Проще всего, иметь специальную расшаренную папку куда и класть файлы для закачки.

В качестве разделителя строк указываешь символ, которого заведомо не может быть внутри твоего XPO. Тогда весь файл будет закачан в одно поле.

Получишь временную табличку #tmpFile с единственным полем, содержимое которого - это твой файл XPO. Далее уже стандартным UPDATE перекидываешь это содержимое в нужное тебе поле.

Если опцию ROWTERMINATOR не указывать, то запись XPO произойдет построчно. Каждая строка XPO - отдельная строка в таблице #tmpFile.

Как удобнее хранить - одним куском или построчно - решай сам.

Ограничение в 1000 символов есть на поле таблицы, но не на символьные строки. Тут ограничивающим фактором будет не то, сколько сможет поддерживать AXAPTA, а то, сколько сможет "проглотить" драйвер ODBC или ADO через которые будет устанавливаться соединение с сервером. Это надо доку по соответсвующему драйверу читать.
За это сообщение автора поблагодарили: belugin (7).