Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / Crystal Reports репорт только при не нулевых данных / 9 сообщений из 9, страница 1 из 1
28.02.2012, 12:09
    #37681783
mbrg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Crystal Reports репорт только при не нулевых данных
Добрый день,

В Crysтal Reports полный новичок, поетому наверно и вопрос такой:
Есть Репорт, который опрашивает ДБ каждые 3 часа,
как зделать так, чтобы отчет создавался только если будут найдены подходящие данные.
т.е не нулевая выборка из ДБ.

Спасибо

P.S.
Crystal Reports XI
...
Рейтинг: 0 / 0
28.02.2012, 13:17
    #37681954
trew
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Crystal Reports репорт только при не нулевых данных
mbrg,

авторРепорт, который опрашивает ДБ каждые 3 часа
Наверно, это делает не Репорт, а некая программа (job).
Если Вы программируйте на VB.NET или C#.NET, напишите проверку в коде: если DataSet пустой показать пользователю сообщение, иначе открыть отчет.
...
Рейтинг: 0 / 0
28.02.2012, 13:50
    #37682050
mbrg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Crystal Reports репорт только при не нулевых данных
trew,

Спасибо, но это не совсем так,

На основе быборки из ДБ генерируется ХМЛ файл,
хотелось бы, если выборка пустая, чтобы фаил не создавался совсем.
Сейчас я делаю деление на количество выбраных строк, и если выборка нулевая,
то происходит ошибка деление на 0, и отчет не создается.
Ищу другие варианты.
...
Рейтинг: 0 / 0
28.02.2012, 14:18
    #37682121
mbrg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Crystal Reports репорт только при не нулевых данных
mbrg,

Да, забыл, управляется ето все с помощью

Central Management Console.
там все планируется откуда, куда, когда и что
...
Рейтинг: 0 / 0
28.02.2012, 15:25
    #37682338
Peter Kirillow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Crystal Reports репорт только при не нулевых данных
mbrg,
в BO есть события.
создайте событие и подключите в шедулинг, чтобы отчет создавался по наступлению этого события.
если тригера события не произойдет, отчет не запустится
напишите простенький java, который будет сначала лезть в базу и проверять наличие данных, а потом инициировать событие на сервере BO
могу привести пример кода, который инициирует событие. остальное сами ))
в принципе CMC тоже не нужен, т.к. если уж такая пьянка, то и сам отчет и рассылку можно сделать из java (.NET как удобней)

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
package businessobjects_sdk.events;

import com.crystaldecisions.sdk.exception.SDKException;
import com.crystaldecisions.sdk.framework.CrystalEnterprise;
import com.crystaldecisions.sdk.framework.IEnterpriseSession;
import com.crystaldecisions.sdk.occa.infostore.IInfoObjects;
import com.crystaldecisions.sdk.occa.infostore.IInfoStore;
import com.crystaldecisions.sdk.plugin.desktop.event.IEvent;
import com.crystaldecisions.sdk.plugin.desktop.event.IUserEvent;

public class trigger {
    private IEnterpriseSession _enterpriseSession;
    private IInfoStore _infoStore = null;
    private IInfoObjects _infoObject = null;

    public static void main(String[] args) {
        if (args.length != 4) {
            System.err.println(
                    "Usage: businessobjects_sdk.events.trigger <cmsname> " +
                    "<username> <password> <EventName>");
            System.exit(1);
        }
        trigger trigger_event = new trigger(args);
    }

    public trigger(String[] args) {
        String cmsname = args[0];
        String username = args[1];
        String password = args[2];
        String authType = "secEnterprise";
        String EventName = args[3];

        try {
            _enterpriseSession = CrystalEnterprise.getSessionMgr().logon(
                    username,
                    password, cmsname, authType);

            _infoStore = (IInfoStore) _enterpriseSession.getService("",
                    "InfoStore");

            _infoObject = (IInfoObjects) _infoStore.query
                          (
                                  "SELECT * FROM   CI_SYSTEMOBJECTS WHERE " +
                                  "SI_KIND = 'Event' and SI_NAME = '" +
                                  EventName + "'"
                          );

            if (_infoObject.getResultSize() >= 1) {
                IEvent oEvent = (IEvent) _infoObject.get(0);
                IUserEvent lUserEvent = (IUserEvent) oEvent.getEventInterface();
                lUserEvent.trigger();
                _infoStore.commit(_infoObject);
                System.out.println("Success.");
            } else {
                System.out.println("Error: UserEvent [" + EventName + "] not found.");
            }
        } catch (SDKException sdkEx) {
            System.out.println("Error: " + sdkEx.getMessage());
        } finally {
            if (_enterpriseSession != null) {
                _enterpriseSession.logoff();
            }
        }
    }
}
...
Рейтинг: 0 / 0
28.02.2012, 15:51
    #37682423
SmileWithMe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Crystal Reports репорт только при не нулевых данных
@"На основе б ыборки из ДБ генерируется ХМЛ файл,"
Я бы Нашел то место кода, Где генерирутеться хмл файл. И там добалив всего одну строчку кода : "проверку на пустой запрос."(т.е. простое условие Логика типа if Not (<путой запрос>) then <нормальная работа> )
...
Рейтинг: 0 / 0
28.02.2012, 17:08
    #37682710
mbrg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Crystal Reports репорт только при не нулевых данных
Peter Kirillow,

Спасибо, интересно придумано.
Что смушает так нужно 2 раза ДБ опрашивать, там довольно много таблиц и продолжается 3-15 мин.
Но всетаки хотелось бы встроенными средствами(если они есть):
т.е как нибудь типа проверить переменную из репорта , она всеравно уже есть, и ей присвоено значение и остановитсиа или дальше двигаться.
Я предпологал что гдето в консоле должно быть такое, опрашивать переменые из репорта.
Но не знаю где и как.
...
Рейтинг: 0 / 0
28.02.2012, 17:41
    #37682832
mbrg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Crystal Reports репорт только при не нулевых данных
SmileWithMe,

Спасибо,
Имелось в виду что репорт запоминается как файл.
Если нет даных, то запоминаетсиа как файл без даных, СМС все равно выполняет свою работу.
Если email ,то посылает пустой email.
Хтотел просто культурно остановить(а не оборвать выполнение как сейчас) CMC, и ждать следуещего выполненя.
...
Рейтинг: 0 / 0
11.04.2012, 19:33
    #37749230
mbrg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Crystal Reports репорт только при не нулевых данных
Peter Kirillow,

Spasibo za sovet, vospolzovalsia i dlia drugih celej,
vse zdorovo poluchilos'.
Spasibo
...
Рейтинг: 0 / 0
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / Crystal Reports репорт только при не нулевых данных / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]