Показать сообщение отдельно
Старый 26.07.2006, 10:14   #18  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от Swetik
Спасибо, я так и делала (2 вариант). Просто думала, может есть вариант- сразу при выводе задавать формулу, но в этом случае формула выводится как строка.
Да, метод CopyFromRecordset воспроизводит всё "буквально-честно". Если полю назначен строковый тип, то он значения этого поля как текст и воспроизводит. Это, в частности, очень полезно при выводе числовых строк с ведущими нулями - они сохраняются (во всяком случае, до момента, пока пользователь не войдет в ячейку и не нажмет Enter). И CopyFromRecordset, похоже, пишет в свойство Value, а нам нужно свойство FormulaR1C1. Другое дело, что можно попробовать "оживить" такую формульную строку после вывода, т.е. "встать" на этот столбец и считав строку из первой ячейки, прописать ее уже в свойство FormulaR1C1 для всего столбца. Тут нужно выбирать между усилиями по оживлению и усилиями по добавлению формулы после вывода. Хотя лично меня более привлекает именно вариант по "добавлению после", так как не надо "толкать" в Excel много лишней строковой информации, чтобы потом прочитать всего лишь из одной ячейки.

P.S. При "добавлении после" актуальной становится тема адресации к ячейкам новых добавляемых вычисляемых столбцов ("отталкиваясь" от массива уже выведенных данных). Один из вариантов (на VBA) можно посмотреть здесь во вложении. Смотреть следует в "окрестности" строки кода:
rngAL.Columns(1).FormulaR1C1 = "=MATCH(TRIM(RC[-4]),MatchLocations!" & _
"R" & CStr(rngML.Row) & "C1:" & _
"R" & CStr(rngML.Row + rngML.Rows.Count - 1) & "C1,0)"


===============================================================
P.P.S. 22.08.2006
Непосредственного отношения к данному сообщению информация ниже не имеет. Помещаю ее сюда, чтобы лишний раз не up-ать ветку.

Пара из ссылок, найденных Google'м по строке "disconnected recordset" (имеет отношение к Job_2). Так сказать, для вооружения теорией вопроса

Using Disconnected Recordsets, Part 2:
Цитата:
A disconnected Recordset can be used like an array, a collection, or a dictionary to hold a dataset. This is a valuable option for at least a couple of reasons. One reason you may want to use a Recordset to hold data rather than an array, collection, or dictionary is that all the Recordset methods that made ADO so convenient for client-server application, such as sort can be a real time saver.
Sorting Data by Using a Disconnected Recordset:
Цитата:
A disconnected recordset is essentially a database that exists only in memory; it is not tied to a physical database. You create the recordset, add records to it, and then manipulate the data, just like any other recordset. The only difference is that the moment the script terminates, the recordset, which is stored only in memory, disappears as well.

To use a disconnected recordset to sort data, you must first create the recordset, adding any fields needed to store the data. After you have created the fields, you then use the AddNew method to add new records to the recordset, using the same process used to add new records to a physical database. After the recordset has been populated, a single line of code can then sort the data on the specified field.

Последний раз редактировалось Gustav; 22.08.2006 в 09:39.