Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Формирование файла на основе данных SP на SQL сервере и передать юзеру.
|
|||
|---|---|---|---|
|
#18+
На веб сайте делаю кнопку формирования файла данных и передача его для сохранения пользователю. Можно ли посредством SP сформировать текстовый файл с заданным разделителем полей? Другой вариант - в эксель можно? Файл отдаю на ASP.NET страничке, пока не знаю как это организовать. Но для начала хорошо бы разобраться как сформировать файл. С Екселем вроде бы разобрались, осталось с текстовым. Причем запускать это дело нужно из процедуры, потому как в клиенте только процедуру получится вызвать. Думается мне что тут надо в сторону DTS копать, а уже DTS как-то в процедуре вызывать. Кто сталкивался с таким, подскажите как такое организовать, сам не справлюсь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2004, 09:37 |
|
||
|
Формирование файла на основе данных SP на SQL сервере и передать юзеру.
|
|||
|---|---|---|---|
|
#18+
ты же будешь реализовывать на ASP.Net, поэтому ты сначала вызови SP, она тебе вернут набор записей, дальше сохрани в файл с форматированием и отдавай пользователю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2004, 09:58 |
|
||
|
Формирование файла на основе данных SP на SQL сервере и передать юзеру.
|
|||
|---|---|---|---|
|
#18+
Т.е. средствами SQL сервера этого делать не нужно? Может и ASP.NET вполне справиться? авторона тебе вернут набор записей, дальше сохрани в файл с форматированием и отдавай пользователю. Вот это как осуществить, если можно пример кода. Нужно в текстовый файл с выбранным символом разделителя полей и в эксель тоже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2004, 10:22 |
|
||
|
Формирование файла на основе данных SP на SQL сервере и передать юзеру.
|
|||
|---|---|---|---|
|
#18+
Люди помогите что ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2004, 11:26 |
|
||
|
Формирование файла на основе данных SP на SQL сервере и передать юзеру.
|
|||
|---|---|---|---|
|
#18+
Чего шумишь-то?! Вот без хитростей-красивостей, решение в лоб: получаешь набор записей в DataReader; читаешь их по одной методом Read(); каждое поле приводишь к строковому типу и запихиваешь в строку, не забывая разделять их тем символом (последовательностью), который нужен; строку выводишь в файл. Повторяешь, пока Read() возвращает true. Вот и всё. Очень просто. Также и с Excel'ем, с учётом его формата. А в принципе, Excel и текстовые файлы читает, насколько я знаю. Или я чегой-то недогнал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2004, 12:25 |
|
||
|
Формирование файла на основе данных SP на SQL сервере и передать юзеру.
|
|||
|---|---|---|---|
|
#18+
А вообще-то, по-моему, MS SQL Server позволяет вводить/выводить таблицы в текстовом формате. Что-то такое я читал, но наверняка не знаю. Ищите, и обрящете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2004, 12:29 |
|
||
|
Формирование файла на основе данных SP на SQL сервере и передать юзеру.
|
|||
|---|---|---|---|
|
#18+
Спасибо, но я уже понял что от сервера мне нужно только получить данные, остальное правильнее возложить на клиент. Можно ли получив данные из хранимой процедуры в DataSet потом эти данные не сохраняя на диск в виде файла сразу передать клиенту как download файл? Если можно то огромная просьба прикрепить примерчик или хотя бы запостить код, сам ну никак не справляюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2004, 10:24 |
|
||
|
Формирование файла на основе данных SP на SQL сервере и передать юзеру.
|
|||
|---|---|---|---|
|
#18+
В эксель не выгрузить никак, это точно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2004, 18:57 |
|
||
|
Формирование файла на основе данных SP на SQL сервере и передать юзеру.
|
|||
|---|---|---|---|
|
#18+
Сваливаем из датасета в Кристал, Кристал экспортируем во что угодно, это что угодно отсылаем клиенту на браузер. Всё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2004, 21:01 |
|
||
|
Формирование файла на основе данных SP на SQL сервере и передать юзеру.
|
|||
|---|---|---|---|
|
#18+
Возможно это поможет. Тут правда dbf-файл создается... ... using System.Data.SqlClient; using System.Data.OleDb; ... /// <summary> /// Создание dbf файла из любого запроса, возвращающего набор данных /// </summary> /// <param name="aSqlCommand">Объект SqlCommand, готовый к выполнению</param> /// <param name="aFileName">Полный путь к dbf файлу</param> public void SqlToDbf(SqlCommand aSqlCommand, string aFileName) { //запомним состояние коннекта ConnectionState oldConnectionState = aSqlCommand.Connection.State; try { //пытаемся удалить файл System.IO.File.Delete(aFileName); //открываем коннект, если надо if (aSqlCommand.Connection.State != ConnectionState.Open) aSqlCommand.Connection.Open(); //открываем запрос aSqlCommand.CommandTimeout = 600; SqlDataReader SchemeDataReader = aSqlCommand.ExecuteReader(); //получаем структуру результата запроса DataTable SchemeDataTable = new DataTable(); SchemeDataTable = SchemeDataReader.GetSchemaTable(); //формируем CREATE TABLE... и SELECT... string CreateCommand = "CREATE TABLE [" + Path.GetFileName(aFileName) + "] ("; string SelectCommand = "SELECT "; for(int i = 0; i < SchemeDataReader.FieldCount; i++) { SelectCommand += SchemeDataTable.Rows ["ColumnName"].ToString(); CreateCommand += SchemeDataTable.Rows["ColumnName"].ToString() + " " + GetDbfFieldType(SchemeDataTable.Rows); if (i + 1 < SchemeDataReader.FieldCount) { CreateCommand += ", "; SelectCommand += ", "; } } CreateCommand += ")"; SelectCommand += " FROM [" + Path.GetFileName(aFileName) + "]"; //закрываем запрос SchemeDataReader.Close(); //создаем коннект для dbf string dbfConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Path.GetDirectoryName(aFileName) + ";Extended Properties=dBase IV;Persist Security Info=False"; OleDbConnection dbfConnection = new OleDbConnection(dbfConnectionString); //запрос для создания dbf OleDbCommand dbfCommand = new OleDbCommand(CreateCommand, dbfConnection); //создаем dbf таблицу dbfConnection.Open(); dbfCommand.ExecuteNonQuery(); dbfConnection.Close(); //теперь перекачиваем данные //dbf запрос OleDbCommand dbfSelectCommand = new OleDbCommand(SelectCommand, dbfConnection); //дата адаптеры SqlDataAdapter sqlAdapter = new SqlDataAdapter(aSqlCommand); OleDbDataAdapter dbfAdapter = new OleDbDataAdapter(dbfSelectCommand); //датасет DataSet tmpDataSet = new DataSet(); //заполняем tmpDateSet sqlAdapter.AcceptChangesDuringFill = false; sqlAdapter.Fill(tmpDataSet, "tmpTable"); //пишем в файл OleDbCommandBuilder OleDbBuilder = new OleDbCommandBuilder(dbfAdapter); dbfAdapter.Update(tmpDataSet, "tmpTable"); } catch (Exception e) { throw(e); } finally { //закрываем коннект, если надо if (oldConnectionState != ConnectionState.Open) aSqlCommand.Connection.Close(); } } /// <summary> /// Возвращает тип(размер) поля, пригодный для создания dbf файла /// </summary> /// <param name="aField">Объект DataRow содержащие структуру поля</param> /// <returns>Возвращает тип(размер) поля, пригодный для создания dbf файла</returns> private string GetDbfFieldType(DataRow aField) { string aDataType = aField["DataType"].ToString(); int aColumnSize = Convert.ToInt32(aField["ColumnSize"]); if (aColumnSize > 254) aColumnSize = 254; if (aDataType == "System.Byte[]") return("Char(" + aColumnSize.ToString() + ")"); else if (aDataType == "System.String") return("Char(" + aColumnSize.ToString() + ")"); else if (aDataType == "System.Boolean") return("Logical"); else if (aDataType == "System.DateTime") return("Date"); else if (aDataType == "System.Int16") return("Numeric"); else if (aDataType == "System.Int32") return("Numeric"); else if (aDataType == "System.Int64") return("Numeric"); else if (aDataType == "System.Decimal") return("Numeric"); else if (aDataType == "System.Double") return("Numeric"); else if (aDataType == "System.Single") return("Numeric"); else if (aDataType == "System.Byte") return("Numeric"); return("Char"); } Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2004, 09:29 |
|
||
|
Формирование файла на основе данных SP на SQL сервере и передать юзеру.
|
|||
|---|---|---|---|
|
#18+
Спасибо, но это ужас какой-то. Проблема решилась гораздо проще. Причем без создания файлов на диске вообще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2004, 11:06 |
|
||
|
Формирование файла на основе данных SP на SQL сервере и передать юзеру.
|
|||
|---|---|---|---|
|
#18+
если не трудно, расскажи как и можно ли это использовать в простом ASP? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2004, 12:53 |
|
||
|
Формирование файла на основе данных SP на SQL сервере и передать юзеру.
|
|||
|---|---|---|---|
|
#18+
У меня тоже реализуется такая задача в интранете на простом ASP. Страничка вызывает сохраненную процедуру на сервере MS SQL 2000, которая возвращает селект состоящий из одной колонки. Внутри строки данные разделены символом табуляции char(9). Пользователь в браузере выполняет Вид - В виде HTML и получает в блокноте нужный файл, который можно сохранить как текстовый. В последующем такой текстовый файл прекрасно открывается Excel-ом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2004, 13:03 |
|
||
|
Формирование файла на основе данных SP на SQL сервере и передать юзеру.
|
|||
|---|---|---|---|
|
#18+
В ASP.NET все это делается гораздо проще и удобнее как для разработчика, так и для пользователя, при нажатии на кнопку код вызывает хранимку и получает через нее данные, которые засовываем в DataSet, а потом из этого датасета прямо в режиме постросного чтения таблицы выбрасываем это на клиент, а пользователь видит как скачивается файл самым обычным образом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2004, 13:45 |
|
||
|
Формирование файла на основе данных SP на SQL сервере и передать юзеру.
|
|||
|---|---|---|---|
|
#18+
Решение тут: http://www.gotdotnet.ru/Forums/ASPNET/49908.aspx остальное дело техники. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2004, 13:48 |
|
||
|
Формирование файла на основе данных SP на SQL сервере и передать юзеру.
|
|||
|---|---|---|---|
|
#18+
to kxmep ну во первых не DataRow a DataColumn и во-вторых, как такой код Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2006, 15:52 |
|
||
|
|

start [/forum/topic.php?fid=18&fpage=964&tid=1392972]: |
0ms |
get settings: |
6ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
24ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 210ms |
| total: | 293ms |

| 0 / 0 |
