Текущее время: Вс, июн 22 2025, 15:28

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 63 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Пн, дек 18 2006, 16:09 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пн, фев 21 2005, 00:50
Сообщения: 10284
Откуда: г.Мышуйск
Пол: Женский
G написал:
Попробуй закоментируй блок
Code:
  If resultArea.Cells(i, 1).Value = Empty Then

и раскоментируй
Code:
'    If  resultArea.Cells(i, 1).Value = _
'       resultArea.Cells(i - 1, 1).Value Then n


Я уже догадалась и сама мучала.. Никак :(

G написал:
LadyWind написала:
Насчет
Цитата:
ЗЫ Удаление внутри циклов for делать НЕЛЬЗЯ. А если надо, то только while.

Всегда делала и работало. Только ме-е-едленно

Не верю! (с)
У тебя в отчете, например 100 строк, в цикл for от 1 до 100, если в процессе происходит удаление, то 100 строка вне отчета, но цикл ее обработает. Поэтому и нельзя, поэтому и скорость не при чем.
тот макрос, который я выложила - работает. Если задаешь узкие параметры.

_________________
Пушномолочная свинья-несушка (тест)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, дек 18 2006, 16:23 
Специалист
Специалист

Зарегистрирован:
Пт, июл 28 2006, 08:36
Сообщения: 183
2 All

Удалять строки из Excel? Я вот пытался корректно удалять в свое время строки из отчета с иерархией. Все красиво получается, пока не начинаешь разворачивать детальные уровни - все форматирование съезжает, какие-строки пропадают и т.п. В итоге отказался.

Наверное работоспособный вариант - создание либо еще одного показателя, рассчитываемого в момент загрузки, либо построение вообще новой цели данных с таким показателем. BEX - [censored] по сути? Надо смириться :cry:

Еще можно попробовать вставить отчет в книгу, скрыть лист с отчетом, а макрос написать таким образом, чтобы он копировал после обновления отчет со скрытого листа все нужное на заранее подготовленный. Трудоемкое решение и тоже говеное!

Еще можно выполнить отчет на сервере, результат досчитать, лишнее повыкидывать и вернуть, что осталось в Excel через RFC-соединение посредством вызова ФМ. В Excel останется только вывести полученное безобразие на экран. Естественно ни о какой навигации речи не идет после этого. Это еще более трудоемкий и говеный способ. :cry:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, дек 18 2006, 16:51 
Специалист
Специалист

Зарегистрирован:
Пт, июл 28 2006, 08:36
Сообщения: 183
Я делал так. Паролем открыл BEX (здесь он уже приводился), VB-отладчиком прошелся по процедурам, проанализировал параметры вызова процедур, связанных с выполнением запроса. Перенес по аналогии эти вызовы в ABAP. Потестировал немного. Результат возвращается как набор таблиц. Можно склеить их в XML или просто проанализировать в ABAP-коде и перегнать в более удобные структуры (под себя так сказать приспособить). Написать нечто относительно универсальное, чтобы разные отчеты можно было получать. Затем написать ФМ, который будет возвращать результат в Excel. При этом соедиение можно устанавливать вообще без Analyzer-а. При таком подходе дорасчет отчета можно делать либо на ABAP-е, либо на VB в Excel-е, либо вообще на чем захочется. Основной проблемой в данном случае будет потеря возможности выполнять навигацию - то есть будет обычный статический отчет


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, дек 18 2006, 16:52 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, окт 11 2005, 12:10
Сообщения: 687
Откуда: Москва
Пол: Мужской
Рабочий пример в почте из профиля.

У меня все работает.

_________________
Глаза боятся, а руки крюки


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, дек 18 2006, 17:06 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 09:59
Сообщения: 1097
Откуда: Moscow
Пол: Мужской
perishkin написал(а):
Я делал так. Паролем открыл BEX (здесь он уже приводился), VB-отладчиком прошелся по процедурам, проанализировал параметры вызова процедур, связанных с выполнением запроса. Перенес по аналогии эти вызовы в ABAP. Потестировал немного. Результат возвращается как набор таблиц. Можно склеить их в XML или просто проанализировать в ABAP-коде и перегнать в более удобные структуры (под себя так сказать приспособить). Написать нечто относительно универсальное, чтобы разные отчеты можно было получать. Затем написать ФМ, который будет возвращать результат в Excel. При этом соедиение можно устанавливать вообще без Analyzer-а. При таком подходе дорасчет отчета можно делать либо на ABAP-е, либо на VB в Excel-е, либо вообще на чем захочется. Основной проблемой в данном случае будет потеря возможности выполнять навигацию - то есть будет обычный статический отчет


Уважаемый perishkin!
Вашу бы энергию да в мирных целях.... :mrgreen: :mrgreen:
PS: Ничего личного :)

_________________
In SAP we trust !


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, дек 18 2006, 17:15 
Специалист
Специалист

Зарегистрирован:
Пт, июл 28 2006, 08:36
Сообщения: 183
Я просто не люблю недоделанные решения. ABAP в SAP-е еще ничего, а все остальное - сплошной компромисс (денег и нервов) :wink:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, дек 18 2006, 17:26 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, окт 11 2005, 12:10
Сообщения: 687
Откуда: Москва
Пол: Мужской
2 BW-ник
+2
2 perishkin
ты маньяк, причем не один такой на свете https://www.sdn.sap.com/irj/sdn/weblogs ... b/wlg/2772
я тоже это дело использовал, но последние несколько месяцев прошли под лозунгом "Скажи ABAP-у "НЕТ"!"

_________________
Глаза боятся, а руки крюки


Последний раз редактировалось G Пн, дек 18 2006, 19:00, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, дек 18 2006, 18:54 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пн, фев 21 2005, 00:50
Сообщения: 10284
Откуда: г.Мышуйск
Пол: Женский
+3
Мы все маньяки...
Завтра еще помучаю, расскажу.. Несколько текущих задач - сия не приоритет.

_________________
Пушномолочная свинья-несушка (тест)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, дек 18 2006, 22:22 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пн, фев 21 2005, 00:50
Сообщения: 10284
Откуда: г.Мышуйск
Пол: Женский
G написал:
Рабочий пример в почте из профиля.

У меня все работает.
У меня вместо удаления строчек рассчитываются % рядом с макросом. (это дома, без бекса)
Что я делаю не так? :?

_________________
Пушномолочная свинья-несушка (тест)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, дек 19 2006, 09:30 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, окт 11 2005, 12:10
Сообщения: 687
Откуда: Москва
Пол: Мужской
Не обращаешь внимания на код:
Code:
       'DelRng.Delete Shift:=xlUp
       DelRng.Select

Т.е. там стоит просто выделение строк без удаления, чтобы было проще экспериментировать (можешь даже навставлять строк из своего отчета, главное, чтобы они находились в именованном диапазоне "QUERY")

Дополнительно:
1) BEx для примера не нужен
2) Код без изменений будет работать в BEx (только нужно убрать строку, где определяется resultArea и мои экзерсисы на тему процентов)

ЗЫ (для остальных):
В книжке представлен вот такой
Code:
Sub Modify()


Dim i As Integer

Dim resultArea: Set resultArea = Range("QUERY")

    Dim CurRow As Range
    Dim DelRng As Range

    For i = 2 To resultArea.Rows.Count - 1
    ' Условие для подавленных повтороений ключа
    '    If resultArea.Cells(i, 1).Value = Empty Then
    ' Условие для разрешенных повтороений ключа
        If resultArea.Cells(i, 1).Value = resultArea.Cells(i - 1, 1).Value Then
            If DelRng Is Nothing Then
                Set DelRng = resultArea.Rows(i)
            Else
               Set DelRng = Union(resultArea.Rows(i), DelRng)
            End If
        End If
    Next i

    If Not DelRng Is Nothing Then
       'DelRng.Delete Shift:=xlUp
       DelRng.Select
    End If


    ''Результаты
   
    ' MsgBox Range("C1").FormulaR1C1
    '---------------------------
    'Microsoft Excel
    '---------------------------
    '=IF(RC[-1]<>0,TEXT(RC[-2]/RC[-1],"0,00%"), "-")
    '---------------------------
    '??
    '---------------------------
   
    Dim FormulaRng As Range
    On Error GoTo ExitSub
    Set FormulaRng = Range(resultArea.Cells(2, 5), resultArea.Cells(resultArea.Rows.Count - 1, 6))
    FormulaRng.FormulaR1C1 = "=IF(RC[-2]<>0,TEXT(RC3/RC[-2],""0,00%""), ""-"")"
   

ExitSub:

End Sub

_________________
Глаза боятся, а руки крюки


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 20 2006, 13:26 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Вс, июн 26 2005, 22:41
Сообщения: 1135
Откуда: Москва
Пол: Мужской
Клуб любителей VBA, скоро ветку нужно будет открывать в BI аля VBA in BI


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, дек 26 2006, 14:11 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пн, фев 21 2005, 00:50
Сообщения: 10284
Откуда: г.Мышуйск
Пол: Женский
2G - спасибо, весь массив данных отработал за 5 минут, в макросе правда ма-аленький косяк - самую последнюю строчку не удаляет (но не беда, это сама уж подправлю).

_________________
Пушномолочная свинья-несушка (тест)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, дек 26 2006, 16:24 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, окт 11 2005, 12:10
Сообщения: 687
Откуда: Москва
Пол: Мужской
Не за что.
Все равно не понятно, почему так долго. :(

_________________
Глаза боятся, а руки крюки


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, дек 26 2006, 16:38 
Специалист
Специалист

Зарегистрирован:
Пт, июл 28 2006, 08:36
Сообщения: 183
Лучше бы попробовали скрыть строки в отчетах, где иерархии присутствуют с сохранением возможности выполнять навигацию.
Причем скрывать надо строки и с "треугольными кнопочками" и без них - вот это действительно геморрой! Я сдался (а ведь я обычно не сдаюсь) :wink:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, дек 26 2006, 17:05 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, окт 11 2005, 12:10
Сообщения: 687
Откуда: Москва
Пол: Мужской
perishkin написал(а):
Лучше бы попробовали скрыть строки в отчетах, где иерархии присутствуют с сохранением возможности выполнять навигацию.
Причем скрывать надо строки и с "треугольными кнопочками" и без них - вот это действительно геморрой! Я сдался (а ведь я обычно не сдаюсь) :wink:

Да там, скорее всего, прогнать цикл по объектам и все. Их удаляешь...

_________________
Глаза боятся, а руки крюки


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 63 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB