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


Ниже приведу пример кода, который я использую для запуска программы с базой, указанной как параметр при запуске приложения. Модифицируйте её, добавив проверку существования (доступности) базы:


// автоматическая настройка на базу при запуске программы
// путь к базе передаётся как 1-й параметр
// если возвращает True, то нужно закрыть главную форму
function NeedRestart:boolean;
var
  iniFile:TIniFile;
begin
  result := false;
  // оказывается, при запуске программы из среды разработки добавляется параметр "/debug"
  if  (ParamStr(1)<>'/debug') and (ParamStr(1)<>'') and (ParamStr(1) <> BaseName) then
  begin
    if FileExists( ParamStr(1) ) then
    begin
      iniFile:=TIniFile.Create(ExtractFileDir(ParamStr(0))+'\settings.ini');
      iniFile.WriteString('Options','server',ParamStr(1));
      iniFile.free;
      // перезапуск
      OpenFile(ParamStr(0),'');
    end
    else
    begin
      ShowMessage('Неверный путь к базе: '+ParamStr(1));
    end;
    result := true;
  end;
end;
Godless wrote:
k245 wrote:

Отображает баланс по клиенту:

WHERE  clients.id = <идентификатор клиента>

Спасибо за ответ. В этом у меня и получается загвоздка. Как получить ид.клиента открытой карточки?

Если "карточкой" вы называете форму редактирования, то в свойстве dbGeneralTableId кнопки, настроенной вами для сохранения записи, будет находиться искомое значение.

1,053

(2 replies, posted in Russian)

Есть особенности установка сервера, а именно: выбор метода аутентификации. Необходимо выбрать совместимый с версией 5.х

http://myvisualdatabase.com/forum/misc.php?action=pun_attachment&amp;item=7358&amp;download=0

Ronin751 wrote:

1. Свойство ComboBox_OnChange не отрабатывает когда изменения значения происходит программно, а не вручную.

При программном изменении вызывайте метод комбобокса DoOnChange;

muserun wrote:

Пока никак.

Добавьте поле "Дата/время создания записи". Храните в программе дату/время последней проверки, которую вы делаете по таймеру. А в самой проверке запросом определяйте количество новых записей - это те записи, у которых дата создания больше, чем дата последней проверки.


Если новые записи есть, то вы обновляете основную таблицу данных и выдаёте звуковой сигнал. При желании с помощью скрипта новые записи можно выделить цветом.

Отображает баланс по клиенту:

SELECT
  ( 
    COALESCE ( ( SELECT SUM(realizacya.money) FROM realizacya WHERE realizacya.id_clients = clients.id  ), 0 ) - 
    COALESCE ( ( SELECT SUM(oplata.money) FROM oplata WHERE oplata.id_clients = clients.id  ), 0 ) 
  ) as balanсe
FROM clients
WHERE  clients.id = <идентификатор клиента>

1,057

(2 replies, posted in Russian)

Лучшая новость 2020 года! big_smile Супер!

sibprogsistem wrote:
k245 wrote:
sibprogsistem wrote:

расскажите о параметрах  в процедурах
 
procedure <Имя> [(параметры)];

Про параметры в обычных процедурах? Или про процедуры - обработчики событий?

 
про процедуры - обработчики событий

Тема довольно объёмная. Там и событийный механизм Windows, и ООП нужно будет осветить...а потом пройтись по всем компонентам My Visual Database, да желательно с рабочими примерами по каждому обработчику...   Постараюсь включить это в свой рабочий план, благодарю за обратную связь!

sibprogsistem wrote:

расскажите о параметрах  в процедурах
 
procedure <Имя> [(параметры)];

Про параметры в обычных процедурах? Или про процедуры - обработчики событий?

vit007 wrote:

Хотел сделать переход на вкладке ч/з кл. enter...

Нестандартные решения могут запутать пользователей. Но, если очень хочется, это можно сделать через глобальный обработчик нажатия клавиш формы.

https://1.bp.blogspot.com/-DIne9Qelqkg/X4raeyVT0OI/AAAAAAAAD7w/h3MZMbgW2acmOR9Awx1mqBYcoz5DyfwyQCLcBGAsYHQ/w640-h522/44.jpg


В заключительной части пойдет речь о процедурах и функциях различного назначения: работа с компонентами приложения, получение информации о системных папках и файлах проекта.


https://createmyvisualdatabaseapp.blogs … /10/4.html

vit007 wrote:

Нужно в PageControl функция OnKeyPress.

Подскажите, для чего вам нужен этот обработчик? Возможно, ваша задача решается другим способом...

vit007 wrote:

Наверно, из графики надо добавить в прогу картинки клавишь в серых тонах. Т.е. есть у меня кнопки только с рисунком, и когда управляешь параметром Enable, то клавиша вроде посерела, а картинка на ней по-прежнему "сочная".... smile. И может быть непонятно...


Картинки можно программно добавлять свои, в том числе для состояния кнопки, когда она недоступна.

https://1.bp.blogspot.com/-wKV_rpwvtdo/X4fyTu2mSWI/AAAAAAAAD5s/Aa8OXyg_nIYbb3CLL-DUYaBF_Wg6s-X6ACLcBGAsYHQ/s1024/%25D1%2582%25D0%25B0%25D0%25B1%25D0%25BB%25D0%25B8%25D1%2586%25D1%258B%2B3.jpg


Эта часть описания полезных процедур посвящена утилитам для работы с таблицами TdbStringGridEx и деревьями TdbTreeView. Кстати, у них очень много общего, потому что они - родственники: дерево является наследником таблицы. Для тех, кто пока не в теме объектно-ориентированного программирования, поясню, что речь идет о том, что у компонентов TdbTreeView и TdbStringGridEx есть схожие свойства и методы, и всё, что работает для таблицы, как правило будет работать и для дерева.


https://createmyvisualdatabaseapp.blogs … /10/3.html

https://1.bp.blogspot.com/-DaJPyTkxqLw/X4Fh9At31uI/AAAAAAAADwA/24Q0UXM2zEIQN4OzFCkyrIkVPBJN3YxcgCLcBGAsYHQ/w640-h426/%25D0%25A0%25D0%25B5%25D0%25B4%25D0%25B0%25D0%25BA%25D1%2582%25D0%25B8%25D1%2580%25D0%25BE%25D0%25B2%25D0%25B0%25D0%25BD%25D0%25B8%25D0%25B5%2B%25D1%2582%25D0%25B5%25D0%25BA%25D1%2581%25D1%2582%25D0%25B0.png


Продолжая своё повествование о полезных функциях и процедурах, я расскажу ещё о двух категориях: Работа со строками и Файлы. Функции очень простые, но весьма полезные.


https://createmyvisualdatabaseapp.blogs … /10/2.html

https://1.bp.blogspot.com/-bd3lPqoKAvU/X3_8-1AOcKI/AAAAAAAADvI/KG6a28AmYqAUZeXO25R_HrJAspSqlT5LACLcBGAsYHQ/w640-h600/%25D0%25B8%25D0%25BD%25D1%2581%25D1%2582%25D1%2580%25D1%2583%25D0%25BC%25D0%25B5%25D0%25BD%25D1%2582%25D1%258B.jpg


В своей работе каждый специалист обязательно использует тщательно подобранные, удобные инструменты. Несмотря на то, что в My Visual Database есть множество готовых функций и процедур, за три года использования этой среды у меня образовался свой "чемоданчик" полезных инструментов, которыми я с вами поделюсь.


Все функции разбиты на категории, снабжены описаниями и примером их использования.


https://createmyvisualdatabaseapp.blogs … /10/1.html

Nilaus wrote:

Подскажите, может кто делал базу электронного  документооборота, интересует структура базы, никак не могу сообразить с чего начать.
Цель: регистрация входящей и исходящей корреспонденции, внутренних документов.

Начинайте с ТЗ. Потом по ТЗ спроектируете таблицы, затем интерфейс: https://vk.com/@createmyvisualdatabasea … nyi-uroven

vit007 wrote:

До 3D еще рости рости smile

А вот в в скрипте часто использую

 cId:=SQLEXecute('SELECT id FROM request WHERE id='+frmMain.TableGrid1.sqlValue); 

Вот каждый раз базе приходится создавать переменную и делать выборку. Это можно или не нужно выносить "за скобку"...

запрос странный: он возвращает то, что у  вас и так есть - значение поля ID  Или Null, если никакая строка в таблице не выбрана smile

1,069

(2 replies, posted in Russian)

procedure Form1_OnShow (Sender: TObject; Action: string);
begin
  Form1.TableGrid1.AppearanceOptions := aoDontFillCells + aoHideFocus;
end;

http://myvisualdatabase.com/forum/misc.php?action=pun_attachment&amp;item=6881&amp;download=0

Вы там 3D-графику что-ли рендерите скриптами? )))


Если какие-то задержки и происходят, то не в скриптах. Возможно, требуется оптимизация SQL-запросов или ограничение количество загружаемых записей в таблицу или дерево.


Для экономии объёма памяти создавайте универсальные параметризованные процедуры для выполнения однотипных действий.


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

Без вашего проекта можно только погадать на кофейной гуще, почему это происходит...

https://tayniymir.com/wp-content/uploads/2019/04/26288204.jpg

Чтобы выбрать (подсветить) строку используйте свойство SelectedRow

Form1.TreeView1.SelectedRow := tmpRow;

Функции (метода) нажатия у дерева нет. Есть события на действия мыши и клавиатуры.  Если у вас есть обработчики этих событий, вы можете вызывать их как обычные процедуры.

1,073

(1 replies, posted in Russian)

Передать TStringList можно, только как это поможет?  Record может включать любые поля, а TStringList - только одну строку с текстом. Создать свой собственный класс, чтобы нашпиговать им список, не выйдет - FastScript это не поддерживает.


Совет: храните все в БД и вытаскивайте нужное запросом. Если нужно будет увеличить скорость выборки, копайте в сторону временных таблиц SQLite.

abgroup-artur wrote:

Выдает ошибку: tmpTable: TStringGridEx; - неизвестный тип.

Извините, нужно использовать класс - TdbStringGridEx.  Исправил.

1,075

(5 replies, posted in Russian)

vovka3003 wrote:

Этот скрипт процессорного мяса жрет больше, чем растянутая однопиксельная картинка с градиентом - памяти.

Согласен, но про счастье - буду настаивать на своём )))