Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / not enough storage is available to complete this operation / 14 сообщений из 14, страница 1 из 1
25.06.2013, 15:28
    #38309669
Cammomile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
not enough storage is available to complete this operation
Есть экселина с формой. На форме кнопка. на кнопке код
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
Public Sub RunButton_Click()

  Sheets("Period").Range("A1") = "Íà÷àëî ïåðèîäà: " + Format(StartDatePicker.Value, "dd-mm-yyyy")
  Sheets("Period").Range("A2") = "Îêîí÷àíèå ïåðèîäà: " + Format(EndDatePicker.Value, "dd-mm-yyyy")
  
  
  Dim SrcTableName As String
  
  Dim ClusterName As String
  ClusterName = ClusterComboBox.Value
  
  Set CalcDataCnn = CreateObject("ADODB.Connection")
  CalcDataCnn.CommandTimeout = 0
  CalcDataCnn.Open "Driver={SQL Server};Server=xxxxxx;APP=T-12;Uid=xxxxxx;Pwd=xxxxx;Database=xxxxxx"
   
    
  Set SrcTableNameRecordSet = CreateObject("ADODB.Recordset")
  SrcTableNameRecordSet.ActiveConnection = CalcDataCnn
  
  SrcTableNameRecordSet.Source = "EXECUTE [schema].[ReturnDataTableName]  @NeedTMP =1 , @TableNameOnly = 1, @ForExcel=1, @UseDates  = 1, @StartDate = '" + Format(StartDatePicker.Value, "yyyymmdd") + "' , @EndDate = '" + Format(EndDatePicker.Value, "yyyymmdd") + "'" + " ,@Cluster = " + "'" + ClusterName + "'"
  SrcTableNameRecordSet.Open
  

  If SrcTableNameRecordSet.EOF Then
     MsgBox "Error: no table name"
  Else
  '  SrcTableNameRecordSet.MoveFirst
    SrcTableName = SrcTableNameRecordSet.GetString 'èìÿ òàáëèöû ñ äàííûìè
  End If
  SrcTableNameRecordSet.Close
  CalcDataCnn.Close
  
 
  
  Set DataCnn = CreateObject("ADODB.Connection")
  DataCnn.CommandTimeout = 0
  DataCnn.Open "Driver={SQL Server};Server=xxxxxx;APP=T-12;Uid=xxxxxx;Pwd=xxxxx;Database=xxxxxx"
   
  Set DataSheetRecordSet = CreateObject("ADODB.Recordset")
  DataSheetRecordSet.ActiveConnection = DataCnn
  
      
  DataSheetRecordSet.Source = "SELECT * FROM  " + SrcTableName + " ; DROP TABLE " + SrcTableName
  DataSheetRecordSet.Open
      
  If DataSheetRecordSet.EOF Then
    MsgBox "Error: no data"
  Else
   ' DataSheetRecordSet.MoveFirst
    Sheets("Data").Range("A" & 1).CopyFromRecordset DataSheetRecordSet
  End If
  DataSheetRecordSet.Close

  Set DataSheetRecordSet = Nothing
  Set SrcTableNameRecordSet = Nothing
    
  DataCnn.Close
  
  
  Sheets("Data").Activate
End Sub

  



Процка [schema].[ReturnDataTableName] делает некие расчеты, пишет их в некую таблицу, возвращает название таблицы, далее путем работы с рекордсетами все данные раскидываются по страничкам экселины.

Все вполне удовлетворительно работает , экселина проглатывает объемы типа 65 столбцов на 100 000 строк.


Делаю копипасту этой экселины.
Меняю [schema].[ReturnDataTableName_XXX] -- другая процедура для получения отчета
Все тоже самое, тольков итоговой таблице примерно 140 столбцов на 219 строк.

DataSheetRecordSet.Open вылетает с "not enough storage is available to complete this operation "

Как с этим бороться? Проблема в количество столбцов ?
...
Рейтинг: 0 / 0
25.06.2013, 19:01
    #38310169
f
f
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
not enough storage is available to complete this operation
А на чем конкретно вылетает?
...
Рейтинг: 0 / 0
26.06.2013, 10:18
    #38310700
Cammomile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
not enough storage is available to complete this operation
авторDataSheetRecordSet.Open вылетает с "not enough storage is available to complete this operation "
...
Рейтинг: 0 / 0
26.06.2013, 10:33
    #38310739
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
not enough storage is available to complete this operation
Cammomile , ставите на проблемной строке брейкпойнт. Когда выполнение остановится - в окне Immediate View выводите и внимательно изучаете все свойства DataSheetRecordSet, ОСОБЕННО те, которым Вы даёте значения в коде.

Заодно расскажите, зачем Вам потребовалось использовать мультизапрос?
...
Рейтинг: 0 / 0
26.06.2013, 15:12
    #38311399
Cammomile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
not enough storage is available to complete this operation
Что такое мультизапрос я не знаю.

Напложить этого кадавра пришлось потому, что в текущей бизнес обстановке это единственный способ получить отчеть в виде экселя на рабочей машине пользователя, и запускать процедуру расчета данных с введенными параметрами
...
Рейтинг: 0 / 0
26.06.2013, 15:14
    #38311401
Cammomile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
not enough storage is available to complete this operation
Напложить --> настроить
...
Рейтинг: 0 / 0
26.06.2013, 15:19
    #38311409
Cammomile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
not enough storage is available to complete this operation
И на что смотреть в свойствах проблемного рекордсета?
: AbsolutePage : <Not enough storage is available to complete this operation.>
: AbsolutePosition : adPosUnknown
: PageCount : -1
: RecordCount : -1
: Status : <Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.>

Проведенные эксперементы, все таки, мне говорят что проблема в максимальной длине строки, которую я пытюсь пропихнуть.
...
Рейтинг: 0 / 0
26.06.2013, 15:33
    #38311438
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
not enough storage is available to complete this operation
CammomileЧто такое мультизапрос я не знаю.То есть Вы даже не разобрались в коде, просто тупо копипастим и без понимания правим? грустно это...

Cammomileна что смотреть в свойствах проблемного рекордсета?
Во-первых, если сказано, что брейк ставится на проблемной строке - значит, она НЕ выполняется.
Во-вторых, если сказано, что смотреть надо те свойства, которым Вы даёте значения в коде, значит, смотреть надо именно их, а не первые попавшиеся.
В третьих, добавьте в код процедуры ON ERROR GOTO и обработчик ошибок, и убедитесь, что ошибка возникает именно в указанной строке, а не раньше.
...
Рейтинг: 0 / 0
26.06.2013, 15:45
    #38311458
Cammomile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
not enough storage is available to complete this operation
1. Я разобрался в коде. Я не владею вашей терминологией. Код простой как два рубля.
2. Весь код, который используется, я привел в первом посте. Свойства которые я задаю именно те, которые задаю.
3. Ошибка возникает именнов указанной строке, это отлавливается банальным вотчем.
4. Вы не знаете ответа на мой вопрос, а просто делаете вид, что большой гуру и даете общие рекомендации. Спасибо, такого рода помощь мне нее нужна.
...
Рейтинг: 0 / 0
26.06.2013, 17:07
    #38311656
newDealer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
not enough storage is available to complete this operation
Cammomile,
попробуй выстави
cursorLocation = adUseServer
или
cursorLocation = adUseClient
...
Рейтинг: 0 / 0
26.06.2013, 17:09
    #38311659
newDealer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
not enough storage is available to complete this operation
newDealerCammomile,
попробуй выстави
cursorLocation = adUseServer
или
cursorLocation = adUseClient
у рекордсета
...
Рейтинг: 0 / 0
26.06.2013, 18:43
    #38311786
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
not enough storage is available to complete this operation
CammomileВы не знаете ответа на мой вопросСамо собой. У меня нет проекта, в котором всё происходит. А некоторые граждане его не выкладывают, и вообще не желают давать полную и точную информацию, даже когда её тащат клещами.

Я подозреваю, что неверно составлена либо строка запроса, либо строка подключения. Допускаю неверный режим подключения. Очень сильно не убеждён, что ADODB.Recordset умеет мультизапросы, да ещё смешивающие DML и DDL. И т.д., и т.п.

Вариантов много. Телепатии мало. Пробовать лениво. Но коли помощь не нужна - да будет так.
...
Рейтинг: 0 / 0
26.06.2013, 20:36
    #38311892
autsaider
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
not enough storage is available to complete this operation
CammomileавторDataSheetRecordSet.Open вылетает с "not enough storage is available to complete this operation "

Вы используете ODBC провайдер для MS SQL (т.е. OLEDB over ODBC). Попробуйте использовать OLEDB Provider for MS SQL Server.

Для этого используйте следующую строку подключения:

Provider=SQLOLEDB.1;Persist Security Info=False;User ID=xxxxxx;Password=xxxxxx;Initial Catalog=xxxxxx;Data Source=xxxxxx

Также я бы выполнил:

CalcDataCnn.Execute("set nocount on")
и
DataCnn.Execute("set nocount on")

После вызовов CalcDataCnn.Open() и DataCnn.Open() соответственно.

Также имеет смысл глянуть сколько памяти выжирает Excel при выполнении Вашего кода.
...
Рейтинг: 0 / 0
27.06.2013, 09:58
    #38312171
Cammomile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
not enough storage is available to complete this operation
Курсоры не помогли
Нокаунт не помог

Другой провайдер помог. Спасибо огромное!
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / not enough storage is available to complete this operation / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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