Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / DataSet->Recordset? / 16 сообщений из 16, страница 1 из 1
17.08.2015, 11:38
    #39030618
Lexx_SQL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSet->Recordset?
Добрый день!
Необходимо скинуть данные полученные из запроса в Excel, но проблема в том что запрос сложный и rs его "не понимает". Делаю запрос через SqlDataAdapter и заполняю DataSet. Все получается, только вот в CopyFromRecordset нужен ресордсет. Как мне заполнить или преобразовать DataSet в Recordset?Спасибо.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Dim DSData As New DataSet
Dim SQLConn As New SqlClient.SqlConnection(ConnectionString)
Dim SqlCommand1 As New SqlClient.SqlCommand(SQLData, SQLConn)
Dim DAData As New SqlClient.SqlDataAdapter
DAData.Fill(DSData)
?????
xlWs.Range("A7").CopyFromRecordset(rs)
...
Рейтинг: 0 / 0
17.08.2015, 11:55
    #39030636
buser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSet->Recordset?
Lexx_SQL, на счет "не понимает" вы, скорее всего, ошибаетесь... наверняка где-то налажали... по сути вопроса - нужно написать метод... екстеншен например... если идей совсем нема, что печально - гугл вам в руки https://www.google.ru/webhp?sourceid=chrome-instant&ion=1&espv=2&es_th=1&ie=UTF-8#newwindow=1&q=datatable to recordset c#
...
Рейтинг: 0 / 0
17.08.2015, 12:24
    #39030662
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSet->Recordset?
экселю можно скормить только ADODB или DAO рекордсет

соответсвенно - или запрос делать через ADODB, или создать ADODB рекордсет и скопировать в него данные DataSet

(ADO.NET и ADODB - главное не перепутать)
...
Рейтинг: 0 / 0
17.08.2015, 12:34
    #39030669
Lexx_SQL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSet->Recordset?
Изопропил,
объем данных большой. как скопировать быстро?
...
Рейтинг: 0 / 0
17.08.2015, 12:40
    #39030674
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSet->Recordset?
Lexx_SQLИзопропил,
объем данных большой. как скопировать быстро? XML ?
...
Рейтинг: 0 / 0
17.08.2015, 12:41
    #39030676
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSet->Recordset?
Lexx_SQLобъем данных большой. как скопировать быстро?Тогда лучше воспользоваться первым советом и запросить данные через ADODB
...
Рейтинг: 0 / 0
17.08.2015, 12:44
    #39030681
Lexx_SQL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSet->Recordset?
Shocker.Pro,
в программе создаются наборы данных из сложных запросов, например:
Код: sql
1.
2.
3.
4.
5.
6.
if object_id('tempdb..#t','U') is not null drop table #t
create table #t (dir nvarchar(255))
declare @dir nvarchar(255)='\\S1\Users\'
insert into #t exec xp_subdirs @dir
SELECT row_number() over(order by dir) as no, dir , @dir+dir path from #t
drop table #t


насколько я понял recordset его не понимает.
...
Рейтинг: 0 / 0
17.08.2015, 12:45
    #39030684
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSet->Recordset?
Lexx_SQLShocker.Pro,
в программе создаются наборы данных из сложных запросов, например:
Код: sql
1.
2.
3.
4.
5.
6.
if object_id('tempdb..#t','U') is not null drop table #t
create table #t (dir nvarchar(255))
declare @dir nvarchar(255)='\\S1\Users\'
insert into #t exec xp_subdirs @dir
SELECT row_number() over(order by dir) as no, dir , @dir+dir path from #t
drop table #t


насколько я понял recordset его не понимает.И текст ошибки наверняка какой-нибудь выдаёт?
...
Рейтинг: 0 / 0
17.08.2015, 12:53
    #39030693
Lexx_SQL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSet->Recordset?
Алексей К,
Запрос выполняется , но на проверке rs.eof ошибка

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Try
rs = conn.Execute(StrSQLSelect)
Catch ex As Exception
      MsgBox(ex.Message)
End Try

If rs.eof Then      --Ошибка - Операция не допускается, если объект закрыт.
    rs.close() : conn.close() : Exit Sub
Else
    StrSQLSelect = rs(0).value
End If
...
Рейтинг: 0 / 0
17.08.2015, 12:59
    #39030701
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSet->Recordset?
Lexx_SQL,
А куда делось открытие конекции?
...
Рейтинг: 0 / 0
17.08.2015, 13:04
    #39030707
Lexx_SQL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSet->Recordset?
Axeleron,
это все есть..rs = conn.Execute(StrSQLSelect) выдал бы ошибку.
Код: sql
1.
conn.Open("Provider=SQLOLEDB;" + ConnectionString)
...
Рейтинг: 0 / 0
17.08.2015, 13:07
    #39030712
Lexx_SQL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSet->Recordset?
Lexx_SQL,

Если вместо этого запроса вставить простенький запрос типа Select * from t , то все работает. Поэтому я думаю, что rs не заполняется только из-за запроса. В тоже время через SqlDataAdapter.Fill(Dataset) все работает.
...
Рейтинг: 0 / 0
17.08.2015, 13:58
    #39030716
buser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSet->Recordset?
Lexx_SQL, NextRecordset либо set nocount on во первых строках скрипта...
...
Рейтинг: 0 / 0
17.08.2015, 14:00
    #39030718
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSet->Recordset?
Это пакет выполняется на TSQL?
Поставь первой строкой SET NOCOUNT ON
...
Рейтинг: 0 / 0
17.08.2015, 14:25
    #39030739
Lexx_SQL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSet->Recordset?
Shocker.Pro,

да.спасибо.заработало
...
Рейтинг: 0 / 0
17.08.2015, 14:31
    #39030748
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSet->Recordset?
Lexx_SQLShocker.Pro,

да.спасибо.заработалоbuser быстрее успел ))
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / DataSet->Recordset? / 16 сообщений из 16, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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