Код программы
<%
'============================================== = =========
'Экспортировать записи в файл (.csv)
'Дата производства: март 2003 г.
'Автор: Снег в Сайбэе
'============================================== = =========
Класс Экспорт_CSV
частный FSO 'Объект файловой системы
частный fExport
dim Exp_Type
частный подкласс Class_Initialize()
set FSO= Server.CreateObject("Scripting.FileSystemObject") 'Создать экземпляр объекта файловой системы
Exp_Type=1 'Тип экспорта 1 — это режим добавления для записи файла. 2 — создание нового файла и последующая запись.
конец субтитра
'Закрыть объект
частный подкласс Class_Terminate()
fExport.Close
установить FSO=ничего
конец субтитра
'Экспортируем основную программу (используйте массив для указания полей)
общедоступная функция ExportFile (полный путь, rsSet, HeaderArray)
если Exp_type=1, то
если не ExistFile(полный путь), то
если CreateFile(полный путь), то
WriteHeaderHeaderArray
WriteBody rsSet,HeaderArray
еще
err_Show "Произошла ошибка при создании файла!"
конец, если
еще
если OpenFile(полный путь), то
WriteBody rsSet,HeaderArray
еще
err_Show "Произошла ошибка при открытии файла!"
конец, если
конец, если
иначе, если Exp_type=2, то
если ExistFile(полный путь), то
err_Show "Конфликт имен файлов!"
еще
если CreateFile(полный путь), то
WriteHeaderHeaderArray
WriteBody rsSet,HeaderArray
еще
err_Show "Произошла ошибка при создании файла!"
конец, если
конец, если
конец, если
если ошибка=0, то
ЭкспортФайл=истина
еще
ЭкспортФайл = ложь
конец, если
конечная функция
'Записываем указанный заголовок
общедоступный подзаголовок WriteHeader (HeaderArray)
сЛайн = ""
для i = 0 до ubound (HeaderArray, 2)
sLine=sLine & "," & HeaderArray(0,i)
следующий
если sLine<>"" тогда
sLine=вправо(sLine,len(sLine)-1)
fExport.WriteLine(sLine)
конец, если
end sub
'Вывод информации о поле, указанной в наборе записей
общедоступная подпрограмма WriteBody (rsSet, HeaderArray)
rsSet.movefirst
Делать до тех пор, пока rsSet.EOF
сЛайн = ""
для i = 0 до ubound (HeaderArray, 2)
sLine=sLine & "," & rsSet(HeaderArray(1,i))
следующий
если sLine <> "" тогда
sLine = вправо(sLine, Len(sLine)-1)
fExport.WriteLine(sLine)
конец, если
rsSet.MoveNext
Петля
конец субтитра
'Экспортируем основную программу (полный набор записей)
общедоступная функция ExportFile2 (полный путь, rsSet)
если Exp_type=1, то
если не ExistFile(полный путь), то
если CreateFile(полный путь), то
WriteHeader2 rsSet
WriteBody2 rsSet
еще
err_Show "Произошла ошибка при создании файла!"
конец, если
еще
если OpenFile(полный путь), то
WriteBody2 rsSet
еще
err_Show "Произошла ошибка при открытии файла!"
конец, если
конец, если
иначе, если Exp_type=2, то
если ExistFile(полный путь), то
err_Show "Конфликт имен файлов!"
еще
если CreateFile(полный путь), то
WriteHeader2 rsSet
WriteBody2 rsSet
еще
err_Show "Произошла ошибка при создании файла!"
конец, если
конец, если
конец, если
если ошибка=0, то
ЭкспортФайл2=истина
еще
ЭкспортФайл2=ложь
конец, если
конечная функция
'Запишите имя поля в качестве заголовка
публичный суб WriteHeader2 (rsSet)
сЛайн = ""
для i=0 до rsSet.fields.count-1
sLine=sLine & "," & rsSet.fields(i).name
следующий
если sLine<>"" тогда
sLine=вправо(sLine,len(sLine)-1)
fExport.WriteLine(sLine)
конец, если
end sub
'Вывод информации о наборе записей
общедоступная подпрограмма WriteBody2 (rsSet)
rsSet.movefirst
Делать до тех пор, пока rsSet.EOF
сЛайн = ""
для i=0 до rsSet.fields.count-1
sLine=sLine & "," & rsSet.fields(i).value
следующий
если sLine <> "" тогда
sLine = вправо(sLine, Len(sLine)-1)
fExport.WriteLine(sLine)
конец, если
rsSet.MoveNext
Петля
конец субтитра
'Вывод сообщения об ошибке
частная подпрограмма Err_Show(errDesc)
Response.Write errDesc
Ответ.Конец
конец субтитра
'Создать файл
общедоступная функция CreateFile (полный путь)
Установите fExport = FSO.CreateTextFile(FullPath, false)
если ошибка=0, то
CreateFile=истина
еще
CreateFile=false
конец, если
конечная функция
'Открыть файл
общедоступная функция OpenFile (полный путь)
установите fExport=FSO.OpenTextFile(fullPath,8,false)
если ошибка=0, то
OpenFile=истина
еще
OpenFile = ложь
конец, если
конечная функция
'Определить, существует ли файл с указанным именем
публичная функция ExistFile (полный путь)
если FSO.FileExists(полный путь), то
ExistFile=истина
еще
ExistFile = ложь
конец, если
конечная функция
конечныйкласс
%>