|
10.05.2006, 20:50 | #1 |
Moderator
|
Цитата:
Сообщение от gl00mie
Оказывается, все уже есть - макрос CCADO и классы ссADO* в Аксапте...
В Аксапте есть класс ComExcelDocument_RU , которым пользуются далеко не 100 % разработчиков, судя по опросу Какой способ для связи Axapta с Excel вы предпочитаете? Что касается ADO, то класс CCADORecordSet в исходном виде без доделок выглядит бедненько: из навигационных методов только один MoveNext. IMHO без перекраивания этого класса 2-й джоб с отвязанным рекордсетом тоже не сразу запустишь. Поэтому простора для творчества - немеряно! |
|
|
За это сообщение автора поблагодарили: gefr (1). |
26.07.2006, 06:14 | #2 |
Участник
|
Gustav, подскажите, как можно довавить формулу(вычисляемый столбец) при выводе данных с помощью ADO?
|
|
26.07.2006, 09:27 | #3 |
Moderator
|
Цитата:
Сообщение от Swetik
Gustav, подскажите, как можно довавить формулу(вычисляемый столбец) при выводе данных с помощью ADO?
1. Или Вы всё вычисляете в Аксапте и в Excel подаете уже вычисленное значение (это вариант, видимо, Вас не интересует в силу своей и так понятности) 2. Или Вы выводите все данные в Excel и у же в нём потом начинаете наводить финальный порядок: форматируете, добавляете формулы и т.п. ("форматируете, добавляете" конечно же кодом X++ из Аксапты) - думаю, что Вам интересен именно этот вариант. Для добавления формулы в Excel используйте свойство FormulaR1C1 объекта Range. И нотацию формул в стиле R1C1, а не традиционную A1. Это позволит Вам написать одну единственную формулу для всего столбца. Запишите в Excel процесс создания формулы макрорекордером и проанализируйте код VBA - уверен, всё станет понятно. Если что, обращайтесь - разберемся дальше. Полезно сделать еще вот что. Допустим есть такая табличка Excel: Код: A B C ---------------------- 1 2 =A1+B1 2 4 =A2+B2 3 6 =A3+B3 4 8 =A4+B4 5 10 =A5+B5 Теперь выполним команду меню Excel: Сервис/Параметры/Общие/галка "Стиль ссылок R1C1" - установить. Таблица несколько преобразится: Код: 1 2 3 ----------------------- 1 2 =RC[-2]+RC[-1] 2 4 =RC[-2]+RC[-1] 3 6 =RC[-2]+RC[-1] 4 8 =RC[-2]+RC[-1] 5 10 =RC[-2]+RC[-1] Из кода VBA ее можно ввести, например, с помощью такого оператора (разом в весь диапазон!): Код: Range("C1:C5").FormulaR1C1 = "=RC[-2]+RC[-1]" Последний раз редактировалось Gustav; 26.07.2006 в 09:51. |
|
26.07.2006, 09:57 | #4 |
Участник
|
Спасибо, я так и делала (2 вариант). Просто думала, может есть вариант- сразу при выводе задавать формулу, но в этом случае формула выводится как строка.
|
|
26.07.2006, 10:14 | #5 |
Moderator
|
Цитата:
Сообщение от Swetik
Спасибо, я так и делала (2 вариант). Просто думала, может есть вариант- сразу при выводе задавать формулу, но в этом случае формула выводится как строка.
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.
Цитата:
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. |
|
Теги |
ado, comvariant, excel, faq, odbc, sql, интеграция, прямой доступ, формат дат, экспорт, экспорт в excel |
|
|