powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вопрос по генераторам
25 сообщений из 53, страница 2 из 3
Вопрос по генераторам
    #32413665
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не уверен что в последних версиях эта бага осталась, но во времена CBuilder5 она точно была...
...
Рейтинг: 0 / 0
Вопрос по генераторам
    #32415463
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Special 2 Gold:

Ну тогда попробуй в триггере что-то типа:
POST EVENT 'TABLE_1:'||NEW.ID;
Потом лови это на клиенте, парси и делай обновление.

Ещё, как вариант, самому поправить исходники IBX.


Чем ловить эвенты будете?
Поделитесь, как подписаться заранее неизвестный эвент...

С огромнейшим уважением.
...
Рейтинг: 0 / 0
Вопрос по генераторам
    #32415505
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вобще я же написал что это всё в теории. Я думал что если не указывать ни одного события при регистрации, то клиенту будут все события посылаться. Оказалось что это не правда - только что проверил в фибах...
В общем я не знаю как это сделать и возможно ли вобще :-/ Если кто-то знает как - пускай напишет.
...
Рейтинг: 0 / 0
Вопрос по генераторам
    #32415526
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Gold по поводу Events
Жаль...

Я как-то долго заморачивался с этим, и не решил.

В FB как-то обещали параметризованные Events, да, видно, позабыли...

---------------------
2 All - на Devrace.com - масса примеров + доки на русском, как и когда юзать генераторы, компоненты к ним и почему хорошо получать Id записи ДО ЕЕ ФАКТИЧЕСКОГО добавления.
Да, я имею в виду FIB+ Сергея Бузаджи.
...
Рейтинг: 0 / 0
Вопрос по генераторам
    #32415534
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пожалуй пойду спрошу в конференции как на любое событие подписаться... Было бы замечательно если бы такая возможность была...
...
Рейтинг: 0 / 0
Вопрос по генераторам
    #32415650
Фотография VF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
решил обновлять генератор, а потом уже обрабатывать его значение, всем спасибо
ЗЫ нужно не только для вставания на новую запись, так что ещё раз сенкс...
...
Рейтинг: 0 / 0
Вопрос по генераторам
    #32415713
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПожалуй пойду спрошу в конференции как на любое событие подписаться... Было бы замечательно если бы такая возможность была...

Увы, низзя этого. Пока что.
...
Рейтинг: 0 / 0
Вопрос по генераторам
    #32415826
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Увы, низзя этого. Пока что.

- Пока что? Что-то обещают девелоперы?
...
Рейтинг: 0 / 0
Вопрос по генераторам
    #32415831
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот девелоп тебе и говорит
...
Рейтинг: 0 / 0
Вопрос по генераторам
    #32415856
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Раз нельзя по событиям обновлять данные, значит обновлять и не будем
Я вот кнопки "обновить" понытыкивал во все формы - пускай обновляют что хотят и когда хотят
...
Рейтинг: 0 / 0
Вопрос по генераторам
    #32415861
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верной дорогой идёте, товарищи!
...
Рейтинг: 0 / 0
Вопрос по генераторам
    #32415920
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А хорошо бы по эвентам дизейблить такие кнопки, а юзер на нах давил бы, и рефрешил датасеты... И чтобы дизэйблились они только тогода, когда другие (а не я) юзеры эвенты генерят...


"Хорошо бы, душенька, мост построить и погулять по тому мосту с государем императором", - Манилов, (Гоголь Н.В. "Мертвые души")
...
Рейтинг: 0 / 0
Вопрос по генераторам
    #32416254
sqliner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем Здрав... эээ С праз... короче.

2 Gold
>Раз нельзя по событиям обновлять данные, значит обновлять и не будем
Это вы, батенька, заблуждаетесь - можно и даже нужно.

2 mv
>А хорошо бы по эвентам дизейблить такие кнопки, а юзер на нах давил бы, и рефрешил датасеты... И чтобы дизэйблились они только тогода, когда другие (а не я) юзеры эвенты генерят...
Ин фирст: По эвентам не дизейблить а энейблить, наверное.
Ин секонд: Если ты сможешь так реагировать на эвенты, то нафиг кнопки - рефреш заинтересованные датасеты.
Ин тхирд: Еще на заре моего общения с IBase (правда не так давно это и было - отблески зари еще видно) сконструировал скелетик, фунциклирующий именно так, пользую до сейчас, проги установлены у заказчиков - и работают.

2 Всем
Кому интересно, могу эту схемку показать, заодно и обсудить. Чтобы мне не сорить тут, заявляйте - кину на мыло.
...
Рейтинг: 0 / 0
Вопрос по генераторам
    #32416289
Denis Uskov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>sqliner
> " ... могу эту схемку показать ... "
В студию
------------------------
С уважением, Denis Uskov
...
Рейтинг: 0 / 0
Вопрос по генераторам
    #32416308
Фотография VF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 sqliner
мне интересно, а нельзя сюда выложить?
хотя можно и на мыло shka@mail.ru
...
Рейтинг: 0 / 0
Вопрос по генераторам
    #32416352
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Ин секонд: Если ты сможешь так реагировать на эвенты, то нафиг кнопки -
>рефреш заинтересованные датасеты.

Заинтересованные датасеты могут быть неготовы к внезапному рефрешу...
...
Рейтинг: 0 / 0
Вопрос по генераторам
    #32416642
sqliner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Без проблем - но во вторник... ик... ик...
А то у нас уже 23 наступило, девчонки поздравляют в полный рост, от компа тащат.

Не бейте...
...
Рейтинг: 0 / 0
Вопрос по генераторам
    #32418761
sqliner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну, в общем, вы сами этого хотели (я предупреждал - это длинно).

Итак:
Скрипт

Код: plaintext
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.
SET SQL DIALECT  3 ;

SET NAMES WIN1251;

CREATE GENERATOR SPRAV1_GEN;

CREATE TABLE SPRAV1 (
    IDN     INTEGER NOT NULL,
    NAIMEN  VARCHAR( 30 ) COLLATE PXW_CYRL,
    COLICH  INTEGER
);

ALTER TABLE SPRAV1 ADD CONSTRAINT PK_SPRAV1 PRIMARY KEY (IDN);

SET TERM ^ ;

CREATE PROCEDURE SPRAV1_DEL (
    IDN INTEGER)
AS
begin
 DELETE FROM SPRAV1
  WHERE IDN = :IDN;
 POST_EVENT '001 - SPRAV CHANGED';
end
^

CREATE PROCEDURE SPRAV1_INS (
    NAIMEN VARCHAR( 30 ),
    COLICH INTEGER)
RETURNS (
    NEWIDN INTEGER)
AS
DECLARE VARIABLE VIDN INTEGER;
begin
 VIDN = gen_id(SPRAV1_GEN,  1 );
 INSERT INTO SPRAV1
  VALUES
  (
   :VIDN,
   :NAIMEN,
   :COLICH
  );
 NEWIDN = :VIDN;
 POST_EVENT '001 - SPRAV CHANGED';
end
^

CREATE PROCEDURE SPRAV1_UPD (
    IDN INTEGER,
    NAIMEN VARCHAR( 30 ),
    COLICH INTEGER)
AS
begin
 UPDATE SPRAV1
  SET
   NAIMEN = :NAIMEN,
   COLICH =:COLICH
  WHERE IDN = :IDN;
 POST_EVENT '001 - SPRAV CHANGED';
end
^

SET TERM ; ^

Клиентская программа
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
program pSprav;
uses
  Forms,
  Sprav in 'Sprav.pas' {frmSprav},
  aisDM in 'aisDM.pas' {DM: TDataModule};

{$R *.RES}

begin
  Application.Initialize;
  Application.CreateForm(TDM, DM);
  Application.CreateForm(TfrmSprav, frmSprav);
  Application.Run;
end.


Модуль данных

Код: plaintext
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.
unit aisDM;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Db, IBCustomDataSet, IBQuery, IBDatabase, IBEvents, IBStoredProc;

type
  TDM = class(TDataModule)
    aisIB: TIBDatabase;
    aisTAr: TIBTransaction;  '// Читающая'
    aisTAw: TIBTransaction; '// Пишущая'
    aisEvents: TIBEvents;
    Sprav: TIBQuery;
    srcSprav: TDataSource;
    SpravIns: TIBStoredProc;
    SpravUpd: TIBStoredProc;
    SpravDel: TIBStoredProc;
    SpravIDN: TIntegerField;
    SpravNAIMEN: TIBStringField;
    SpravCOLICH: TIntegerField;
    procedure aisEventsEventAlert(Sender: TObject; EventName: String;
      EventCount: Integer; var CancelAlerts: Boolean);
    procedure aisIBAfterConnect(Sender: TObject);
    procedure aisIBBeforeDisconnect(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

type Modes = (myBrowse, myDelete, myEdit, myInsert);

var
  DM: TDM;
  isEnableRefr: Boolean;

implementation

{$R *.DFM}

procedure TDM.aisIBAfterConnect(Sender: TObject);
begin
  with aisEvents do
  begin
    Events.Clear;
'// Задаешь интересующие тебя события'
    Events.Add('001 - SPRAV CHANGED');
    Registered := True;
  end;
end;

procedure TDM.aisIBBeforeDisconnect(Sender: TObject);
begin
  aisEvents.Registered := False;
end;

procedure TDM.aisEventsEventAlert(Sender: TObject; EventName: String;
  EventCount: Integer; var CancelAlerts: Boolean);
var
  actIndex, actIndexs: Integer;
  EventIndex: Integer;
begin
  EventIndex := StrToInt(copy(EventName,  0 ,  3 ));
  case EventIndex of
 1 :
    begin
'{
Вот тут как хочешь, так и крутишь :
 можешь бутоны на рефрешь энейблить,
 а можно проверить, готов ли данный экземпляр приложения к рефрешу
 и -
{}'
      if isEnableRefr then
       with Sprav do
        if Active then
      begin
        DisableControls;
        actIndex := SpravIDN.AsInteger;
        Prior;
        actIndexs := SpravIDN.AsInteger;
        Close;
        Open;
        if not Locate('IDN', actIndex, []) then
         Locate('IDN', actIndexs, []);
        EnableControls;
      end;
    end;
  end;
end;

end.


Ну и наконец форма
(Для редактирования принципиально не использую Data-aware components)

Код: plaintext
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.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
unit Sprav;

interface

uses
  aisDM,
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, DBCtrls, Buttons, Grids, DBGrids;

type
  TfrmSprav = class(TForm)
    Panel1: TPanel;
    sbtClose: TSpeedButton;
    panEdCtrl: TPanel;
    sbtCancel: TSpeedButton;
    sbtOK: TSpeedButton;
    Panel4: TPanel;
    Label999: TLabel;
    sbtNew: TSpeedButton;
    sbtEdit: TSpeedButton;
    sbtDelete: TSpeedButton;
    dbnFirms: TDBNavigator;
    dbgSprav: TDBGrid;
    sbtDisableRefresh: TSpeedButton;
    Panel2: TPanel;
    Label21: TLabel;
    panEditi: TPanel;
    edtNaimi: TEdit;
    edtColichi: TEdit;
    procedure sbtCloseClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure sbtNewClick(Sender: TObject);
    procedure sbtCancelClick(Sender: TObject);
    procedure sbtEditClick(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure dbgSpravDblClick(Sender: TObject);
    procedure sbtOKClick(Sender: TObject);
    procedure sbtDeleteClick(Sender: TObject);
    procedure edtNaimiEnter(Sender: TObject);
    procedure edtNaimiExit(Sender: TObject);
    procedure edtColichiKeyPress(Sender: TObject; var Key: Char);
    procedure sbtDisableRefreshClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmSprav: TfrmSprav;
  spMode: Modes;
  spIndex: Integer;

implementation

{$R *.DFM}

procedure TfrmSprav.sbtCloseClick(Sender: TObject);
begin
  Self.Close;
end;

procedure TfrmSprav.FormCreate(Sender: TObject);
var
  b: String;
begin
  Panel4.Align := alClient;
  spMode := myBrowse;
  isEnableRefr := True;
end;

procedure TfrmSprav.FormShow(Sender: TObject);
begin
  with dbgSprav do
  begin
    Align := alClient;
    SetFocus;
  end;
  with DM.Sprav do
  begin
    if Active then Close;
    Open;
  end;
end;

procedure TfrmSprav.sbtNewClick(Sender: TObject);
var
  i: Integer;
begin
'{
Из helpa по TIBEvents:
 Call CancelEvents to cancel interest in any pending InterBase events.
{}'
  DM.aisEvents.CancelEvents;
  spMode := myInsert;
  Panel1.Enabled := False;
  Panel4.Enabled := False;
  panEdCtrl.Show;
  spIndex := DM.SpravIDN.AsInteger;
  with panEditi do
  begin
    for i :=  0  to (ControlCount -  1 ) do
     if Controls[i] is TEdit then
      (Controls[i] as TEdit).Text := '';
    Show;
  end;
  edtNaimi.SetFocus;
end;

procedure TfrmSprav.sbtEditClick(Sender: TObject);
begin
  if DM.Sprav.IsEmpty then Exit;
'{
Из helpa по TIBEvents:
 Call CancelEvents to cancel interest in any pending InterBase events.
{}'
  DM.aisEvents.CancelEvents;
  spMode := myEdit;
  Panel1.Enabled := False;
  Panel4.Enabled := False;
  panEdCtrl.Show;
  spIndex := DM.SpravIDN.AsInteger;
  panEditi.Show;
  with DM do
  begin
    edtNaimi.Text := SpravNAIMEN.AsString;
    edtNaimi.SetFocus;
    edtColichi.Text := IntToStr(SpravCOLICH.AsInteger);
  end;
end;

procedure TfrmSprav.sbtDeleteClick(Sender: TObject);
begin
  if DM.Sprav.IsEmpty then
  begin
    MessageDlg('Таблица пуста.', mtInformation, [mbOK],  0 );
    Exit;
  end;
  if MessageDlg('Удалить текущую запись?', mtConfirmation, [mbYes, mbNo],  0 )
   = mrYes then
  begin
'{
Из helpa по TIBEvents:
 Call CancelEvents to cancel interest in any pending InterBase events.
{}'
    DM.aisEvents.CancelEvents;
    spMode := myDelete;
    with DM.SpravDel do
    try
      ParamByName('IDN').Value := DM.SpravIDN.AsInteger;
      DM.aisTAw.StartTransaction;
      ExecProc;
      DM.aisTAw.Commit;
    except
      DM.aisTAw.Rollback;
    end;
    with DM.Sprav do
    begin
      DisableControls;
      if RecNo >  1  then Prior;
      spIndex := DM.SpravIDN.AsInteger;
      DM.aisTAr.CommitRetaining;
      Close;
      Open;
      Locate('IDN', spIndex, []);
      EnableControls;
    end;
    spMode := myBrowse;
'{
Из helpa по TIBEvents:
Call QueueEvents to allow your application to
 start receiving event notifications.
{}'
    DM.aisEvents.QueueEvents;
  end;
end;

procedure TfrmSprav.sbtOKClick(Sender: TObject);
var
  i: Integer;
begin
  with DM do
   if spMode = myInsert then
    with SpravIns do
  begin
    ParamByName('NAIMEN').Value := Trim(edtNaimi.Text);
    ParamByName('COLICH').Value := StrToInt(Trim(edtColichi.Text));
    try
      aisTAw.StartTransaction;
      ExecProc;
      aisTAw.Commit;
      spIndex := ParamByName('NEWIDN').AsInteger;
    except
      aisTAw.Rollback;
    end;
  end
  else
   if spMode = myEdit then
    with DM.SpravUpd do
  begin
    ParamByName('IDN').Value := DM.SpravIDN.AsInteger;
    ParamByName('NAIMEN').Value := Trim(edtNaimi.Text);
    ParamByName('COLICH').Value := StrToInt(Trim(edtColichi.Text));
    try
      aisTAw.StartTransaction;
      ExecProc;
      aisTAw.Commit;
    except
      aisTAw.Rollback;
    end;
  end;
  sbtCancelClick(Sender);
end;

procedure TfrmSprav.sbtCancelClick(Sender: TObject);
begin
  Panel1.Enabled := True;
  Panel4.Enabled := True;
  if panEditi.Visible then panEditi.Hide;
  with dbgSprav do
  begin
    Options := Options + [dgAlwaysShowSelection];
    Align := alClient;
  end;
  panEdCtrl.Hide;
  with DM.Sprav do
  begin
    if not ControlsDisabled then DisableControls;
    DM.aisTAr.CommitRetaining;
    if Active then Close;
    Open;
    Locate('IDN', spIndex, []);
    EnableControls;
  end;
  spMode := myBrowse;
'{
Из helpa по TIBEvents:
Call QueueEvents to allow your application to
 start receiving event notifications.
{}'
  DM.aisEvents.QueueEvents;
  dbgSprav.SetFocus;
end;

procedure TfrmSprav.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  case Key of
VK_INSERT:
    if spMode = myBrowse then sbtNewClick(Sender);
VK_RETURN:
    if spMode = myBrowse then sbtEditClick(Sender)
      else sbtOKClick(Sender);
VK_DELETE:
    if spMode = myBrowse then sbtDeleteClick(Sender);
VK_ESCAPE:
    if spMode <> myBrowse then sbtCancelClick(Sender);
  end;
end;

procedure TfrmSprav.dbgSpravDblClick(Sender: TObject);
begin
  sbtEditClick(Sender);
end;

procedure TfrmSprav.edtNaimiEnter(Sender: TObject);
begin
  if Sender.ClassNameIs('Tedit') then
   with (Sender as TEdit) do Color := $009FCDD0;
end;

procedure TfrmSprav.edtNaimiExit(Sender: TObject);
begin
  if Sender.ClassNameIs('Tedit') then
   with (Sender as TEdit) do Color := clWhite;
end;

procedure TfrmSprav.edtColichiKeyPress(Sender: TObject; var Key: Char);
begin
  if not (Key in [# 8 ,'0'..'9', '-']) then Key := # 0 ;
end;

procedure TfrmSprav.sbtDisableRefreshClick(Sender: TObject);
begin
  isEnableRefr := not sbtDisableRefresh.Down;
  if isEnableRefr then
   with DM.Sprav do
  begin
    if not ControlsDisabled then DisableControls;
    DM.aisTAr.CommitRetaining;
    if Active then Close;
    Open;
    Locate('IDN', spIndex, []);
    EnableControls;
  end;
end;

end.
...
Рейтинг: 0 / 0
Вопрос по генераторам
    #32418789
kata
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну и чем ты тут рисуешься?
Close-Open...
"я принципиально не пользуюсь дата-аваре компонентами" ...
Бр-р-р-р.
Весь вопрос был в том, как узнать идентификатор обновленной записи:
авторПожалуй пойду спрошу в конференции как на любое событие подписаться... Было бы замечательно если бы такая возможность была...а не как делать close-open
...
Рейтинг: 0 / 0
Вопрос по генераторам
    #32418797
Denis Uskov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>actIndex := SpravIDN.AsInteger;
Prior;
actIndexs := SpravIDN.AsInteger;
Close;
Open;
if not Locate('IDN', actIndex, []) then Locate('IDN', actIndexs, []);


Из всего этого оставить только:
actIndex := SpravIDN.AsInteger;
Close;
Open;
Locate('IDN', actIndex, []);
потому как actIndexs может тоже уже не быть :-(

В Базе прописать процедуру для
POST_EVENT '001 - SPRAV CHANGED';
и вызывать ее(процедуру) из триггеров

Но в целом все это уже решено, у некоторых только в мозгах, и на практику по разным соображениям переносить нехочется ;-)
------------------------
С уважением, Denis Uskov
...
Рейтинг: 0 / 0
Вопрос по генераторам
    #32418813
sqliner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Denis Uskov
> Но в целом все это уже решено, у некоторых только в мозгах, и на практику по разным соображениям переносить нехочется ;-)

Да я на оригинальность и не претендовал.

Но было сказано:

Gold
>Раз нельзя по событиям обновлять данные, значит обновлять и не будем

mv
>А хорошо бы по эвентам дизейблить такие кнопки, а юзер на нах давил бы, и рефрешил датасеты... И чтобы дизэйблились они только тогода, когда другие (а не я) юзеры эвенты генерят...

Демо отвечает на оба поставленных вопроса (и не более).
А вот по поводу разных соображений было бы интересно узнать...
_____
C уважением, sqliner
...
Рейтинг: 0 / 0
Вопрос по генераторам
    #32418834
Denis Uskov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>sqliner
>Да я на оригинальность и не претендовал.

Не хочу обидеть, но ожидалось что-то ... интереснее, в смысле идеи.

>А вот по поводу разных соображений было бы интересно узнать...
Соображения по чему? По коду есть некоторые дополнения и предложения, но ... а оно надо?
------------------------
С уважением, Denis Uskov
...
Рейтинг: 0 / 0
Вопрос по генераторам
    #32418870
sqliner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Denis Uskov

>Но в целом все это уже решено, у некоторых только в мозгах,
>и на практику по разным соображениям переносить нехочется ;-)
я вот об этих соображениях, и вовсе не в плане обид, а понять:
почему такое не стОит применять на практике.
_____
C уважением, sqliner
...
Рейтинг: 0 / 0
Вопрос по генераторам
    #32420236
Denis Uskov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вопрос начался с генераторов :-)
Не говорю за всех, но я в большинстве случаев выбираю на клиента только 1(одну) запись, и сл-но изменения других меня не волнуют. Когда юзер захочет посмотреть другую запись, то она берется не из локального набора(locate), а с сервера. При работе Master-Detail ситуация немного меняется. Для обновления Detail стоит кнопка, и как юзер захочет пусть давит. Главное объяснить юзерам принцип работы, типа как интернет, пока обновить не нажмешь ... В целом Event'ы хорошая штука, но вот что-то не сложилось.
------------------------
С уважением, Denis Uskov
...
Рейтинг: 0 / 0
Вопрос по генераторам
    #32420786
kata
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Denis Uskov
авторКогда юзер захочет посмотреть другую запись, то она берется не из локального набора(locate), а с сервера
Каким образом, если не секрет?
...
Рейтинг: 0 / 0
25 сообщений из 53, страница 2 из 3
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вопрос по генераторам
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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