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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Ahrefs [Bot]


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

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