Уважаемые,
Как в С6.1 (Legacy) реализовать экспорт данных из MS SQL в простой текстовый ASCII фал с разделением данных Tab-ом? SQL запрос всегда разный, соответсвенно выдает разное количество полей и записией.
Можно ответить в начале только суть.
А если не разберусь то потом и детали спрошу.
С уважением.
MS SQL -> .CSV file как?
Модератор: Andrew™
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
-
- Ветеран
- Сообщения: 333
- Зарегистрирован: 21 Сентябрь 2005, 11:05
- Откуда: Нижний Новгород
- Контактная информация:
Объявляешь ASCII файл, а строку формируешь с Tab:
"знач. поля1" & '<9>' & "знач. поля2" и тд.
Зы: На память tab это 9, но могу ошибаться.
Зы2: Не забудь про заголовок, если нужен.
"знач. поля1" & '<9>' & "знач. поля2" и тд.
Зы: На память tab это 9, но могу ошибаться.
Зы2: Не забудь про заголовок, если нужен.
Последний раз редактировалось ru_alex 23 Декабрь 2005, 13:59, всего редактировалось 1 раз.
Спасибо за ответы.
Вроде сам допер.
Вот как я сделал, если кому интерестно:
В Declaration Section объявил 2 файла, один для записи результатов на локальном диске, другой для формирования SQL запроса.
Ну и в Embeds After Code Generated для кнопки (Accepted)
Это только работающая модель. С нее можно вылепить нужный код.
Есть ограничение 8000 знаков на запись, но в большинстве случаев этого хватит. А кому не хватит, можно подправить.
С уважением.
Вроде сам допер.
Вот как я сделал, если кому интерестно:
В Declaration Section объявил 2 файла, один для записи результатов на локальном диске, другой для формирования SQL запроса.
Код: Выделить всё
CSVFile FILE,DRIVER('ASCII'),NAME(FilePath),PRE(CSV),CREATE,THREAD
Record RECORD,PRE()
Desc STRING(8000)
END
END
SQLFile FILE,DRIVER('MSSQL'),OWNER('(local),IX'),NAME('dbo.SQLFile'),PRE(SQL),BINDABLE,CREATE
Record RECORD,PRE()
DSCR STRING(8000)
END
END
Код: Выделить всё
s# = FILEDIALOG('Select File', FilePath, 'CSV|*.TXT',1)
SETPATH(FilePath)
DLMTR='<09>'
CREATE(CSVFile)
OPEN(CSVFile)
CREATE(SQLFile)
OPEN(SQLFile)
SQLstring='select convert(varchar,i.name)+'''&DLMTR&'''+convert(varchar,c.name) as text from ITMS i, CUSTS c where i.cust=c.id'
CSV:Record='HEADER'&DLMTR&'QUERY:'&SQLstring
ADD(CSVFile)
SQLFile{PROP:SQL} = CLIP(SQLstring)
LOOP
NEXT(SQLFile)
if errorcode() then break.
SQLreply=SQL:Record
CSV:Record=SQL:Record
ADD(CSVFile)
.
CLOSE(SQLFile)
CLOSE(CSVFile)
DISPLAY
Есть ограничение 8000 знаков на запись, но в большинстве случаев этого хватит. А кому не хватит, можно подправить.
С уважением.