powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Выгрузка результата в txt
7 сообщений из 7, страница 1 из 1
Выгрузка результата в txt
    #37645151
Alexoliss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!

У меня головная боль о том, как выгрузить результат выполнения класса в текстовый документ?

Со странички собирается необходимая информация, через класс адаптера и шлюз с SQL сервером переданные данные проверяются и возвращаются результаты проверки.

Имеющиеся данные и результаты проверки я хочу выгрузить одним файлом по определенному шаблону, который я указал бы в самом классе! Не могу найти в документации, как это сделать!
...
Рейтинг: 0 / 0
Выгрузка результата в txt
    #37645171
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
простой выгрузки данных их класса в текстовый файл по шаблону нету, только если XML
для текстового файла вам нужна своя реализация
...
Рейтинг: 0 / 0
Выгрузка результата в txt
    #37645183
Alexoliss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я понимаю. Я и хочу написать свой отдельный метод, который будет вызываться со всеми интересующими параметрами. Вопрос в том, как собрать единый лист с данными, заставить выгрузить данные в текстовый файл, у которого имя будет так же задаваться по шаблону, который я и задам.
Пример данных:
%Документ
Знач1:123
Знач2:456
End%

Пример имени файла:
name_yyyymmdd_id.txt
...
Рейтинг: 0 / 0
Выгрузка результата в txt
    #37645187
Alexoliss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexolissЯ понимаю. Я и хочу написать свой отдельный метод, который будет вызываться со всеми интересующими параметрами. Вопрос в том, как собрать единый лист с данными, заставить выгрузить данные в текстовый файл, у которого имя будет так же задаваться по шаблону, который я и задам.
Пример данных:
%Документ
Знач1:123
Знач2:456
End%

Пример имени файла:
name_yyyymmdd_id.txt

точнее, возможно ли собрать vlist с данными и передать его, как содержимое выгружаемого файла? Если да, то как это сделать!?
...
Рейтинг: 0 / 0
Выгрузка результата в txt
    #37645190
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexoliss , не понятно в чём собственно ипытываешь проблему... Есть класс %File, его и используй...

Код: vbnet
1.
2.
3.
4.
Set file=##class(%File).%New("file.txt")
Write file.Size
Do file.Open("WSN")
Do file.WriteLine("This is a line of text")
...
Рейтинг: 0 / 0
Выгрузка результата в txt
    #37645810
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexoliss ,
Код класса с использованием %ResultSetInclude (%occStatus,%occConstant,%occErrors)
Class sqlru.test
{

///<example>
///; Пример вызова:
///do ##class(sqlru.test).SQLExport("C:\data.txt","select 'Bună ziua','Добрый день','Good day' union select 4,5,6",$char(9),"'")
///</example>
/// Экспорт данных запроса в текстовый файл.
///<br>Параметры:
///<br><var>FileName</var> - полный путь к файлу (на сервере!);
///<br><var>Query</var> - текст запроса;
///<br><var>Delimiter</var> - разделитель столбцов;
///<br><var>StringQuote</var> - строковая кавычка;
ClassMethod SQLExport(
  FileName As %String,
  Query As %String,
  Delimiter As %Char,
  StringQuote As %Char) As %Status
{
  #dim ex As %Exception.AbstractException

  set sc=$$$OK
  try{

    if FileName="" $$$ThrowStatus($$$ERROR($$$DirectoryNameRequired))
    if ##class(%File).CreateDirectoryChain(##class(%File).GetDirectory(FileName,$$$YES))'=$$$YES $$$ThrowStatus($$$ERROR($$$FileNameInvalid,FileName))

    set stream=##class(%Stream.TmpBinary).%New()

    set rs = ##class(%ResultSet).%New()
    $$$ThrowOnError(rs.Prepare(Query))
    $$$ThrowOnError(rs.Execute())
    set len = rs.GetColumnCount()
    set line = ""  for i=1:1:len set line = line_rs.GetColumnName(i)_$select(i'=len:Delimiter,1:"")
    do stream.Write(line)
    while rs.Next() {
      set line = $$$NL for i=1:1:len set line = line_StringQuote_rs.GetData(i)_StringQuote_$select(i'=len:Delimiter,1:"")
      do stream.Write(line)
    }

    set file = ##class(%FileCharacterStream).%New()
    set file.TranslateTable="Unicode" ;UTF8, CP1251, CP866 и др.
    set file.Filename=FileName
    do file.CopyFromAndSave(stream)

  }catch(ex){
    set sc=ex.AsStatus()
  }
  quit sc
}

Classmethod Test() [Internal]
{
  set sc=##class(sqlru.test).SQLExport("C:\data.txt","select 'Bună ziua','Добрый день','Good day' union select 4,5,6",$char(9),"'")
  write $select($$$ISOK(sc):"OK",1:$system.Status.GetErrorText(sc,"ru"))
}

}
Код класса с использованием %SQL.StatementInclude (%occStatus,%occConstant,%occErrors)
Class sqlru.test
{

///<example>
///; Пример вызова:
///do ##class(sqlru.test).SQLExport("C:\data.txt","select 'Bună ziua','Добрый день','Good day' union select 4,5,6",$char(9),"'")
///</example>
/// Экспорт данных запроса в текстовый файл.
///<br>Параметры:
///<br><var>FileName</var> - полный путь к файлу (на сервере!);
///<br><var>Query</var> - текст запроса;
///<br><var>Delimiter</var> - разделитель столбцов;
///<br><var>StringQuote</var> - строковая кавычка;
ClassMethod SQLExport(
  FileName As %String,
  Query As %String,
  Delimiter As %Char,
  StringQuote As %Char) As %Status
{
  #dim ex As %Exception.AbstractException

  set sc=$$$OK
  try{

    if FileName="" $$$ThrowStatus($$$ERROR($$$DirectoryNameRequired))
    if ##class(%File).CreateDirectoryChain(##class(%File).GetDirectory(FileName,$$$YES))'=$$$YES $$$ThrowStatus($$$ERROR($$$FileNameInvalid,FileName))

    set stream=##class(%Stream.TmpBinary).%New()

    set st = ##class(%SQL.Statement).%New()
    $$$ThrowOnError(st.%Prepare(Query))
    set len = st.%Metadata.columnCount
    set rs=st.%Execute()
    set line = ""  for i=1:1:len set line = line_st.%Metadata.columns.GetAt(i).colName_$select(i'=len:Delimiter,1:"")
    do stream.Write(line)
    while rs.%Next() {
      set line = $$$NL for i=1:1:len set line = line_StringQuote_rs.%GetData(i)_StringQuote_$select(i'=len:Delimiter,1:"")
      do stream.Write(line)
    }

    set file = ##class(%FileCharacterStream).%New()
    set file.TranslateTable="Unicode" ;UTF8, CP1251, CP866 и др.
    set file.Filename=FileName
    do file.CopyFromAndSave(stream)

  }catch(ex){
    set sc=ex.AsStatus()
  }
  quit sc
}

Classmethod Test() [Internal]
{
  set sc=##class(sqlru.test).SQLExport("C:\data.txt","select 'Bună ziua','Добрый день','Good day' union select 4,5,6",$char(9),"'")
  write $select($$$ISOK(sc):"OK",1:$system.Status.GetErrorText(sc,"ru"))
}

}
Пример вызова:
do ##class(sqlru.test).SQLExport("C:\data.txt","select 'Bună ziua','Добрый день','Good day' union select 4,5,6",$char(9),"'")

Содержимое data.txt :
Код: plaintext
1.
2.
HostVar_1	HostVar_2	HostVar_3
'Bună ziua'	'Добрый день'	'Good day'
'4'	'5'	'6'
...
Рейтинг: 0 / 0
Выгрузка результата в txt
    #37658622
Alexoliss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servit, спасибо!!!
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Выгрузка результата в txt
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]