Цитата:
Сообщение от
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 через которые будет устанавливаться соединение с сервером. Это надо доку по соответсвующему драйверу читать.