|
![]() |
#1 |
Участник
|
X++: str findSerialNumbersFromWMS(SnQueryTableTmp _SnQ) { WMSRoute WMSRoute; SalesLine SalesLine; InventSerialNumbers InventSerialNumbers; ItemFreeTxt txt = ""; ; while select InventSerialNumbers exists join WMSRoute where (WMSRoute.WMSShippingId like InventSerialNumbers.DocId) && (WMSRoute.LineNum == InventSerialNumbers.DocLineNum) && (WMSRoute.ItemId == InventSerialNumbers.ItemId) exists join SalesLine where (SalesLine.RecId == WMSRoute.SalesLineRecId) && (SalesLine.ItemId == _SnQ.Itemid) && (SalesLine.SalesId == _SnQ.SalesId) { txt += ","+InventSerialNumbers.SerialId ;//+ " -> " + num2str(InventSerialNumbers.Qty,1,0,1,0) + "шт. "; } return txt; } |
|
![]() |
#2 |
Moderator
|
Хм... интересный какой эффект: если добавить еще пару полей (в моем джобе):
X++: flds.Append('strValue2', adoTypeToExcel('str' )); flds.Append('strValue3', adoTypeToExcel('str' )); ......... fld = flds.Item('strValue2'); fld.Value(strValue); fld = flds.Item('strValue3'); fld.Value(strValue); Дальше - больше: если оставить одно поле, но добавить пару записей, то тоже вылетает с ошибкой (пока не закомментируем строки, где 80 и 160 серийников). Получается, что чувствительно и к "горизонтальным" и к "вертикальным" добавлениям. НО в тоже время позволяется вывести в одно поле одной записи очень много символов (до ограничения Excel в 32 767 символов в одной ячейке). |
|
![]() |
#3 |
Участник
|
Цитата:
Сообщение от Gustav
![]() Хм... интересный какой эффект: если добавить еще пару полей (в моем джобе):
X++: flds.Append('strValue2', adoTypeToExcel('str' )); flds.Append('strValue3', adoTypeToExcel('str' )); ......... fld = flds.Item('strValue2'); fld.Value(strValue); fld = flds.Item('strValue3'); fld.Value(strValue); Дальше - больше: если оставить одно поле, но добавить пару записей, то тоже вылетает с ошибкой (пока не закомментируем строки, где 80 и 160 серийников). Получается, что чувствительно и к "горизонтальным" и к "вертикальным" добавлениям. НО в тоже время позволяется вывести в одно поле одной записи очень много символов (до ограничения Excel в 32 767 символов в одной ячейке). ![]() |
|
![]() |
#4 |
Участник
|
Есть предположение попробовать Excel 2007. Буду копать.
|
|
![]() |
#5 |
Moderator
|
911 символов
Как выясняется, CopyFromRecordset загибается при длине строки более 911 символов (просто какой-то телефонный "привет" от службы спасения!
![]() О проблеме знают в мире: http://www.google.ru/search?hl=ru&q=...1&lr=&aq=f&oq= но пока ничего утешительного я не нашёл. |
|
![]() |
#6 |
Участник
|
Цитата:
Сообщение от Gustav
![]() Как выясняется, CopyFromRecordset загибается при длине строки более 911 символов (просто какой-то телефонный "привет" от службы спасения!
![]() О проблеме знают в мире: http://www.google.ru/search?hl=ru&q=...1&lr=&aq=f&oq= но пока ничего утешительного я не нашёл. Using ADO (ActiveX 2.8 Object Lib) with Excel 2003, I extract data from a worksheet and copy it to another worksheet in the same workbook. In Office 2007 everything is fine, but in Office XP and Office 2003 the CopyFromRecordset fails if a field has more than 911 bytes. Т.е. в 2007 офисе эта проблема исправлена... |
|
![]() |
#7 |
Moderator
|
Получается, что так. Интересно, что ее также нет в более ранней Excel 2000 - я проверил, запустив там такой VBA-код с http://support.microsoft.com/kb/818808/en-us :
Код: Sub XLTest() Dim aValues(4) aValues(0) = "Test1" aValues(1) = "Test2" aValues(2) = "Test3" MsgBox "First the Good range set." aValues(3) = String(911, 65) Range("A1:D1").Value = aValues MsgBox "Now the bad range set." aValues(3) = String(912, 66) Range("A2:D2").Value = aValues 'вызывает ошибку End Sub Код: Range("A2").Value = String(912, 66) ' нормально поместит 912 букв B в ячейку |
|
Теги |
ado, excel, экспорт |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|