powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / not enough storage is available to complete this operation
14 сообщений из 14, страница 1 из 1
not enough storage is available to complete this operation
    #38309669
Cammomile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть экселина с формой. На форме кнопка. на кнопке код
Код: 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
not enough storage is available to complete this operation
    #38310169
f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А на чем конкретно вылетает?
...
Рейтинг: 0 / 0
not enough storage is available to complete this operation
    #38310700
Cammomile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторDataSheetRecordSet.Open вылетает с "not enough storage is available to complete this operation "
...
Рейтинг: 0 / 0
not enough storage is available to complete this operation
    #38310739
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cammomile , ставите на проблемной строке брейкпойнт. Когда выполнение остановится - в окне Immediate View выводите и внимательно изучаете все свойства DataSheetRecordSet, ОСОБЕННО те, которым Вы даёте значения в коде.

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

Напложить этого кадавра пришлось потому, что в текущей бизнес обстановке это единственный способ получить отчеть в виде экселя на рабочей машине пользователя, и запускать процедуру расчета данных с введенными параметрами
...
Рейтинг: 0 / 0
not enough storage is available to complete this operation
    #38311401
Cammomile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Напложить --> настроить
...
Рейтинг: 0 / 0
not enough storage is available to complete this operation
    #38311409
Cammomile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И на что смотреть в свойствах проблемного рекордсета?
: 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
not enough storage is available to complete this operation
    #38311438
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CammomileЧто такое мультизапрос я не знаю.То есть Вы даже не разобрались в коде, просто тупо копипастим и без понимания правим? грустно это...

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

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

Вариантов много. Телепатии мало. Пробовать лениво. Но коли помощь не нужна - да будет так.
...
Рейтинг: 0 / 0
not enough storage is available to complete this operation
    #38311892
autsaider
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
not enough storage is available to complete this operation
    #38312171
Cammomile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курсоры не помогли
Нокаунт не помог

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


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