Topic: Ряд вопросов после годового использования.

Во-первых, после полутора лет использования продукта - есть желание поблагодарить за продукт. Как ребенок балуюсь и радуюсь! smile
Напилил ряд БД для внутренних нужд предприятия и теперь понял, что нужно было делать иначе. Осваиваю MySQL, ищу возможность перехода на него совмещая все этого безобразие. В связи с тем и сем ряд вопросов.

Совместив всех своих баранов я получу форм 50-60, таблиц 30, 12-15 пользователей он-лайн. Интенсивность работы, скажем, не высокая. Я совершенно не представляю как и что должно работать и что такое нагрузка в этом контексте. О чем хоть поверхностно нужно думать, говоря о нагрузке? Что нужно понимать?

В одном из проектов я "смотрел" на пользователей он-лайн. Как в здешних примерах, при входе - запись в таблицу к пользователю и при выходе. Печаль только в том, что при кривом выходе (просто погасили компьютер, или сбой какой) пользователь он-лайн так и висит. Нет возможности как-то еще реализовать эту задачу?

Можно ли завести несколько таймеров с разными интервалами в одном проекте?

Есть ли готовое решение по обновлению программы? На период теста я реализовал так: в одно место в сети выкладываю актуальную версию, в БД запись о версии, в программе надпись с версией. Если они не соответствуют при запуске на главной форме появляется кнопулька "обновить" которая 1. закрывает программу 2. запускает батник, который копирует с заменой все в папке 3. запускает. Работать-то работает, но может как-то "красивее" можно?

Каким-то чудом вычищается БД (тестовая на MySQL) в нуль! Не понимаю, что происходит. Структура вся неизменна, данные исчезают. При каких обстоятельствах выяснить не могу. Может при переключении с SQLite и обратно что-то подобное происходить? Никто не сталкивался?

Как реализовать следующую задачу? Таблица клиенты. В формах где нужен клиент комбобокс. Рядом кнопка поиск. Сложностей не вижу взять данные из заполненного поля, открыть форму "клиенты" и выполнить в ней поиск по заполненному боксу. По двойному клику вернуть "клиента" в комбобокс. Но как быть когда форм, где нужен клиент много? Вариант, который работать будет, но не нравится:

var
    sClient: string;
    sForm: string = '';

procedure Form1_btSearchClient_OnClick (Sender: string; Action: string);
begin
    sForm := 'Form1';
    sClient := Form1.cbClient.Text; 
    frmClients.Show;
    frmClients.edSurname.Text := sClient;
    frmClients.btSearch.Click;
end;

procedure frmClients_OnShow (Sender: string; Action: string);
begin
    frmClients.TableGrid1.dbPopupMenu.Items[0].Enabled := False;
end;

procedure frmClients_TableGrid1_OnCellDoubleClick (Sender: string; Action: string; var Cancel: boolean);
begin
    if iForm = '' then frmClients.btEdit.Click;
    if iForm = 'Form1' then
    begin
        Form1.cbClient.dbItemID := frmClients.TableGrid1.dbItemID;
        frmClients.Close;
    end;
    if iForm = 'Form2' then
    begin
        Form2.cbClient.dbItemID := frmClients.TableGrid1.dbItemID;
        frmClients.Close;
    end;
    ...
        if iForm = 'Form31' then
    begin
        Form31.cbClient.dbItemID := frmClients.TableGrid1.dbItemID;
        frmClients.Close;
    end;
end;

Вижу, в версии 3.* есть ряд полезных вещей. Покупателям 2.* скидок не предусмотрено?

Re: Ряд вопросов после годового использования.

Извиняюсь за задержку с ответом.


Интенсивность работы, скажем, не высокая. Я совершенно не представляю как и что должно работать и что такое нагрузка в этом контексте. О чем хоть поверхностно нужно думать, говоря о нагрузке? Что нужно понимать?

Думаю в вашем случае о какой то серьезной нагрузке можно не волноваться, пока думать не о чем не нужно.


В одном из проектов я "смотрел" на пользователей он-лайн. Как в здешних примерах, при входе - запись в таблицу к пользователю и при выходе. Печаль только в том, что при кривом выходе (просто погасили компьютер, или сбой какой) пользователь он-лайн так и висит. Нет возможности как-то еще реализовать эту задачу?

Сделал для вас проект с примером, приложил к сообщению.


Есть ли готовое решение по обновлению программы?

Какого либо встроенного решения по обновлению программы нет, ваше решение вполне работоспособно.


Каким-то чудом вычищается БД (тестовая на MySQL) в нуль! Не понимаю, что происходит. Структура вся неизменна, данные исчезают. При каких обстоятельствах выяснить не могу. Может при переключении с SQLite и обратно что-то подобное происходить? Никто не сталкивался?

База очищается только с разрешения польльзователя (появляется диалог с вопросом), если структура БД проекта не соотвествует структуре БД на сервере, т.к. ее необходимо пересоздать. Можете приложить ваш проект и описать шаги, которые приводят к очищению БД, протестирую.



Как реализовать следующую задачу? Таблица клиенты. В формах где нужен клиент комбобокс. Рядом кнопка поиск. Сложностей не вижу взять данные из заполненного поля, открыть форму "клиенты" и выполнить в ней поиск по заполненному боксу. По двойному клику вернуть "клиента" в комбобокс. Но как быть когда форм, где нужен клиент много? Вариант, который работать будет, но не нравится:

Приложил проект с примером

Post's attachments

Attachment icon Login and logs and who online with timer.zip 43.79 kb, 385 downloads since 2017-07-18 

Attachment icon Search in ComboBox 3.zip 57.23 kb, 381 downloads since 2017-07-18 

Dmitry.

Re: Ряд вопросов после годового использования.

Спасибо! Многие вопросы закрылись.
Не совсем понял пример с получением значения в разные формы. Цель - в разные формы получать значение из TableGrid одной другой. Пример приложил. Упростить реализацию задачи нельзя? Для 30 форм скрипт громоздкий.
И еще несколько вопросов.
Можно ли запустить несколько таймеров с разными интервалами для разных целей в одном проекте?
Экспортируя таблицы в SQLiteStudio загрузить их не удается. Есть платные конверторы, с помощью которых выгружается/загружается корректно, но ради одно раза покупать не хочется. Известных бесплатных не сложных решений нет?
Ну и вопрос без ответа:

Вижу, в версии 3.* есть ряд полезных вещей. Покупателям 2.* скидок не предусмотрено?

Post's attachments

Attachment icon Test.rar 299.61 kb, 369 downloads since 2017-07-21 

Re: Ряд вопросов после годового использования.

И, помогите, пожалуйста, с запросом. В SQLite фильтр TableGrid работал, в MySQL, видимо иначе нужно?

logs.events >= date('now','-1 day') 

Re: Ряд вопросов после годового использования.

Не совсем понял пример с получением значения в разные формы. Цель - в разные формы получать значение из TableGrid одной другой. Пример приложил. Упростить реализацию задачи нельзя? Для 30 форм скрипт громоздкий.

К сожалению не пойму, причем тут TableGrid? В примере Search in ComboBox 3.zip используется одно и тоже событие для двух ComboBox-ов, т.о. его можно присвоить и 30-ти ComboBox-ам


Можно ли запустить несколько таймеров с разными интервалами для разных целей в одном проекте?

Да.

var
   Timer1: TTimer;
   Timer2: TTimer;

procedure Form1_OnShow (Sender: string; Action: string);
begin
     Timer1 := TTimer.Create (Form1);
     Timer1.OnTimer := @OnTimer1;
     Timer1.Interval := 5000; // every 5 sec
     Timer1.Enabled := True;

     Timer2 := TTimer.Create (Form1);
     Timer2.OnTimer := @OnTimer2;
     Timer2.Interval := 10000; // every 10 sec
     Timer2.Enabled := True;
end;

procedure OnTimer1;
begin
      // some script
end;

procedure OnTimer2;
begin
      // some script
end;


Экспортируя таблицы в SQLiteStudio загрузить их не удается.

Опишите пожалуйста на примере, что именно не получается.


Вижу, в версии 3.* есть ряд полезных вещей. Покупателям 2.* скидок не предусмотрено?

Предусмотрено, отправлю вам информацию на ваш e-mail



Пожалуйста создавайте отдельную тему для каждого вопроса.

Dmitry.