powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Перестал создаваться Event от DevExpress
3 сообщений из 3, страница 1 из 1
Перестал создаваться Event от DevExpress
    #39545022
Devillio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток, уважаемые комрады!

Подписка кончилась у DevExpress, не знаю, отвечают ли после :)

Есть у меня вот такая процедура
Код: pascal
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.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
function MySchedulerAddEvent(AKind: SmallInt; var IDCommon: Integer; AED: TEventData): boolean;
  var
    AEvent: TcxSchedulerControlEvent;
    AInfo: TcxSchedulerEventEditInfo;
    AModified: Boolean;
    AEventReal: TcxSchedulerEvent;
    IsResult: Boolean;

    procedure ConstructForUsers;
    var
      ATempEventReal: TcxSchedulerEvent;
    begin
      with DM.RunQuery do
      try
        Close;
        if AEventReal.GetCustomFieldValueByName('ISCOMMON') = 1 then
        begin
          SelectSQL.Text := 'select ID from SPUSERS where IDCOMP=:IDCOMP and DELETED=0 order by SHORT';
          ParamByName('IDCOMP').AsInteger := GlobalCompID;
          Open;
          while not EOF do
          begin
            ATempEventReal := DM.SchedulerDBSOwn.CreateEvent;
            ATempEventReal.Assign(AEventReal);
            ATempEventReal.SetCustomFieldValueByName('IDUSER', Fields[0].AsInteger);
            ATempEventReal.Post;
            Next;
          end;
          Close;
        end else
        begin
          SelectSQL.Text := 'select ID from SPUSERS where IDCOMP=:IDCOMP and DELETED=0 and ID in ('+GlobalSchedulerIDUsers+') order by SHORT';
          ParamByName('IDCOMP').AsInteger := GlobalCompID;
          Open;
          while not EOF do
          begin
            ATempEventReal := DM.SchedulerDBSOwn.CreateEvent;
            ATempEventReal.Assign(AEventReal);
            ATempEventReal.SetCustomFieldValueByName('IDUSER', Fields[0].AsInteger);
            ATempEventReal.Post;
            Next;
          end;
          Close;
        end;

      finally
        Close;
      end;
    end;

  begin
    Result := False; IDCommon := 0;

    AEventReal := DM.SchedulerDBSOwn.CreateEvent;

    AEvent := TcxSchedulerControlEvent.Create(AEventReal);

    AInfo := TcxSchedulerEventEditInfo.Create();
    try
      AEvent.Caption := AED.Caption; 
      AEvent.Location := AED.Location; 
      AEvent.Message := AED.Msg; 
      if AKind = 1 then 
        AEvent.SetCustomFieldValueByName('IDDOC', AED.IDDoc);

      GlobalSchedulerIDUsers := AED.SchedulerUsersPattern;
      GlobalSchedulerIDCommon := DM.FIBDB.Gen_Id('TSCHEDULER_IDCOMMON_GEN', 1);
      GlobalSchedulerISCommon := 0;
      AEvent.SetCustomFieldValueByName('IDCOMMON', GlobalSchedulerIDCommon);
      AEvent.SetCustomFieldValueByName('ISCOMMON', 0);

      AInfo.AllowDelete := False;
      AInfo.Event := AEvent;
      AInfo.DialogsStyle := 'MyRibbon';
      AInfo.IsRemindersActive := True;
      AEvent.ReminderMinutesBeforeStart := 15;
      AEvent.Reminder := True;
      AEvent.Start := AED.Start; //Date + 1 + 10 * HourToTime;
      AEvent.Duration := AED.Duration; //60 * MinuteToTime;
      AEvent.EventType := etNone;
      AInfo.ShowModal := True;
      AInfo.ReadOnly := False;

      AModified := False;
      IsResult := cxShowEventEditorEx(AInfo, AModified);
      //в этот момент, если в диалоге нажали "сохранить", то в СУБД появляется запись о событии, правильная (но без доп. полей, так и было раньше).
      if IsResult then
      begin
        //в следующей строке при построчном выполнении может выскочить Access Violation (может не выскочить).
        AEventReal.SetCustomFieldValueByName('ISCOMMON', GlobalSchedulerISCommon);
        if ((GlobalSchedulerIDUsers = '') or (GlobalSchedulerIDUsers = IntToStr(GlobalUserID))) and (AEventReal.GetCustomFieldValueByName('ISCOMMON') = 0) then
          AEventReal.SetCustomFieldValueByName('IDUSER', GlobalUserID) else  
          AEventReal.SetCustomFieldValueByName('IDUSER', 0); 

        IDCommon := GlobalSchedulerIDCommon;
        //если сюда дошло (не было AV в пред. комменте), то после Post запись становится "пустой", заполнены только поля из CustomFields.
        AEventReal.Post;

        if AEventReal.GetCustomFieldValueByName('IDUSER') = 0 then //сюда идем, если назначили всем либо некоторым
        begin
          ConstructForUsers;
          DM.SchedulerDBSOwn.PostEvents;
          AEventReal.Delete;
        end else
          DM.SchedulerDBSOwn.PostEvents;

        DM.SchedulerDBSOwn.FullRefresh;
        Result := True;
      end;
    finally
      AInfo.Free();
      AEvent.Free();
    end;
end;



Смысл такой, что событие создается, пользователь может выбрать для каких пользователей (или вообще для всех) создается это событие. И программа все делала правильно (ну, по крайней мере, работало как требовалось). ( Вот тут мой вопрос им был по поводу как это все организовать )
Внезапно эта процедура перестала работать. Ей особо не пользовались, сейчас вот решили, а оно не работает, но точно работало при тестировании! ))
После if IsResult then AEventReal - не nil, но при выполнении к нему иногда просто AV, без объявления войны, с выходом из процедуры; иногда выполняется, затирая созданную только что запись о событии.
Вот так выглядит лог sql запросовApplication:
Object: ""
Operation:Prepare:>> Time 31.10.2017 8:03:38
select gen_id(TSCHEDULER_ID_GEN, 1) from RDB$DATABASE

Application:
Object: ""
Operation:TrID=60234 Execute query:>> Time 31.10.2017 8:03:38
select gen_id(TSCHEDULER_ID_GEN, 1) from RDB$DATABASE

Application:
Object: "DM.FIBDSSchedulerOwn.InsertQuery"
Operation:Prepare:>> Time 31.10.2017 8:03:38
insert into TSCHEDULER (ID, ACTUALFINISH, ACTUALSTART, CAPTION, EVENTTYPE, FINISH, GROUPID, LABELCOLOR, LOCATION, MESSAGE, OPTIONS, PARENTID, RECURRENCEINDEX, RECURRENCEINFO, REMINDERDATE, REMINDERMINUTESBEFORESTART, REMINDERRESOURCESDATA, RESOURCEID, STARTTIME, STATE, TASKCOMPLETEFIELD, TASKINDEXFIELD, TASKLINKSFIELD, TASKSTATUSFIELD, IDCOMP, IDDOC, IDCONTRACT, PARAMS, IDAUTH, LASTEDITDATE, IDCOMMON, ISCOMMON, IDUSER) values (? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , 2, current_timestamp, ? , ? , ? )

Application:
Object: "DM.FIBDSSchedulerOwn.InsertQuery"
Operation:TrID=60245 Execute query:>> Time 31.10.2017 8:03:38
insert into TSCHEDULER (ID, ACTUALFINISH, ACTUALSTART, CAPTION, EVENTTYPE, FINISH, GROUPID, LABELCOLOR, LOCATION, MESSAGE, OPTIONS, PARENTID, RECURRENCEINDEX, RECURRENCEINFO, REMINDERDATE, REMINDERMINUTESBEFORESTART, REMINDERRESOURCESDATA, RESOURCEID, STARTTIME, STATE, TASKCOMPLETEFIELD, TASKINDEXFIELD, TASKLINKSFIELD, TASKSTATUSFIELD, IDCOMP, IDDOC, IDCONTRACT, PARAMS, IDAUTH, LASTEDITDATE, IDCOMMON, ISCOMMON, IDUSER) values (? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , 2, current_timestamp, ? , ? , ? )

Params[0]='107'
Params[1]=''
Params[2]=''
Params[3]='Контроль исполнения документа: № проект от 30.10.2017'
Params[4]='0'
Params[5]='01.11.2017 11:00:00'
Params[6]=''
Params[7]='536870912'
Params[8]='ГАУ ВО "РЦЦС Волгоградской области"'
Params[9]='Контроль исполнения документа: № проект от 30.10.2017'
Params[10]='4'
Params[11]=''
Params[12]=''
Params[13]=(0,8)
Params[14]='01.11.2017 9:45:00'
Params[15]='15'
Params[16]=(0,0)
Params[17]=(0,0)
Params[18]='01.11.2017 10:00:00'
Params[19]='0'
Params[20]=''
Params[21]=''
Params[22]=(0,0)
Params[23]=''
Params[24]='1'
Params[25]='1055'
Params[26]='0'
Params[27]=(0,0)
Params[28]='84'
Params[29]='0'
Params[30]=''
Application:
Object: "DM.TRNScheduler"
Operation:CommitRetaining(TransactionID=60245) >> Time 31.10.2017 8:03:38
TransactionParams:
write
nowait
rec_version
read_committed

Application:
Object: "DM.FIBDSSchedulerOwn.UpdateQuery"
Operation:Prepare:>> Time 31.10.2017 8:03:38
update TSCHEDULER set ID=? , ACTUALFINISH=? , ACTUALSTART=? , CAPTION=? , EVENTTYPE=? , FINISH=? , GROUPID=? , LABELCOLOR=? , LOCATION=? , MESSAGE=? , OPTIONS=? , PARENTID=? , RECURRENCEINDEX=? , RECURRENCEINFO=? , REMINDERDATE=? , REMINDERMINUTESBEFORESTART=? , REMINDERRESOURCESDATA=? , RESOURCEID=? , STARTTIME=? , STATE=? , TASKCOMPLETEFIELD=? , TASKINDEXFIELD=? , TASKLINKSFIELD=? , TASKSTATUSFIELD=? , IDCOMP=? , IDDOC=? , IDCONTRACT=? , PARAMS=? , IDAUTH=2, LASTEDITDATE=current_timestamp, IDCOMMON=? , ISCOMMON=? , IDUSER=? where ID=?

Application:
Object: "DM.FIBDSSchedulerOwn.UpdateQuery"
Operation:TrID=60255 Execute query:>> Time 31.10.2017 8:03:38
update TSCHEDULER set ID=? , ACTUALFINISH=? , ACTUALSTART=? , CAPTION=? , EVENTTYPE=? , FINISH=? , GROUPID=? , LABELCOLOR=? , LOCATION=? , MESSAGE=? , OPTIONS=? , PARENTID=? , RECURRENCEINDEX=? , RECURRENCEINFO=? , REMINDERDATE=? , REMINDERMINUTESBEFORESTART=? , REMINDERRESOURCESDATA=? , RESOURCEID=? , STARTTIME=? , STATE=? , TASKCOMPLETEFIELD=? , TASKINDEXFIELD=? , TASKLINKSFIELD=? , TASKSTATUSFIELD=? , IDCOMP=? , IDDOC=? , IDCONTRACT=? , PARAMS=? , IDAUTH=2, LASTEDITDATE=current_timestamp, IDCOMMON=? , ISCOMMON=? , IDUSER=? where ID=?

Params[0]='107'
Params[1]=''
Params[2]=''
Params[3]=''
Params[4]=''
Params[5]=''
Params[6]=''
Params[7]=''
Params[8]=''
Params[9]=''
Params[10]=''
Params[11]=''
Params[12]=''
Params[13]=(0,0)
Params[14]=''
Params[15]=''
Params[16]=(0,0)
Params[17]=(0,0)
Params[18]=''
Params[19]=''
Params[20]=''
Params[21]=''
Params[22]=(0,0)
Params[23]=''
Params[24]='1'
Params[25]=''
Params[26]=''
Params[27]=(0,0)
Params[28]=''
Params[29]='0'
Params[30]=''
Params[31]='107'
Application:
Object: "DM.TRNScheduler"
Operation:CommitRetaining(TransactionID=60255) >> Time 31.10.2017 8:03:38
TransactionParams:
write
nowait
rec_version
read_committed

Application:
Object: "DM.FIBDSSchedulerOwn.UpdateQuery"
Operation:TrID=60256 Execute query:>> Time 31.10.2017 8:03:38
update TSCHEDULER set ID=? , ACTUALFINISH=? , ACTUALSTART=? , CAPTION=? , EVENTTYPE=? , FINISH=? , GROUPID=? , LABELCOLOR=? , LOCATION=? , MESSAGE=? , OPTIONS=? , PARENTID=? , RECURRENCEINDEX=? , RECURRENCEINFO=? , REMINDERDATE=? , REMINDERMINUTESBEFORESTART=? , REMINDERRESOURCESDATA=? , RESOURCEID=? , STARTTIME=? , STATE=? , TASKCOMPLETEFIELD=? , TASKINDEXFIELD=? , TASKLINKSFIELD=? , TASKSTATUSFIELD=? , IDCOMP=? , IDDOC=? , IDCONTRACT=? , PARAMS=? , IDAUTH=2, LASTEDITDATE=current_timestamp, IDCOMMON=? , ISCOMMON=? , IDUSER=? where ID=?

Params[0]='107'
Params[1]=''
Params[2]=''
Params[3]=''
Params[4]=''
Params[5]=''
Params[6]=''
Params[7]=''
Params[8]=''
Params[9]=''
Params[10]=''
Params[11]=''
Params[12]=''
Params[13]=(0,0)
Params[14]=''
Params[15]=''
Params[16]=(0,0)
Params[17]=(0,0)
Params[18]=''
Params[19]=''
Params[20]=''
Params[21]=''
Params[22]=(0,0)
Params[23]=''
Params[24]='1'
Params[25]=''
Params[26]=''
Params[27]=(0,0)
Params[28]=''
Params[29]='0'
Params[30]='2'
Params[31]='107'
Application:
Object: "DM.TRNScheduler"
Operation:CommitRetaining(TransactionID=60256) >> Time 31.10.2017 8:03:38
TransactionParams:
write
nowait
rec_version
read_committed

Помогите, пожалуйста, что и где посмотреть?

Спасибо!
...
Рейтинг: 0 / 0
Перестал создаваться Event от DevExpress
    #39545071
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очень много кода, следует разбить на мелкие куски и убедиться, что они работают по отдельности.

SQL-логи показывают, что при клонировании события сохраняются пустые данные в базу (ConstructForUsers)?
...
Рейтинг: 0 / 0
Перестал создаваться Event от DevExpress
    #39545330
Devillio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообще чудеса какие-то. Потратил 2 дня.
Если у TcxSchedulerDBStorage включаю параметр UseIndexedID (поле в БД, естественно, Indexed) - то все, перестает работать.
Если этот параметр выключить - все отлично работает, как когда-то и было написано и задумано.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Перестал создаваться Event от DevExpress
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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