Skip to forum content
My Visual Database
A Simple Solution for Creating Databases
You are not logged in. Please login or register.
Active topics Unanswered topics
Search options (Page 43 of 60)
Topics by k245 User defined search
Posts found: 1,051 to 1,075 of 1,488
После проверки доступности базы вы можете программно изменить настройки подключения, а затем программно же перезагрузить приложение.
Ниже приведу пример кода, который я использую для запуска программы с базой, указанной как параметр при запуске приложения. Модифицируйте её, добавив проверку существования (доступности) базы:
// автоматическая настройка на базу при запуске программы
// путь к базе передаётся как 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 кнопки, настроенной вами для сохранения записи, будет находиться искомое значение.
Есть особенности установка сервера, а именно: выбор метода аутентификации. Необходимо выбрать совместимый с версией 5.х
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 = <идентификатор клиента>
Лучшая новость 2020 года! Супер!
sibprogsistem wrote:k245 wrote:sibprogsistem wrote:расскажите о параметрах в процедурах
procedure <Имя> [(параметры)];
Про параметры в обычных процедурах? Или про процедуры - обработчики событий?
про процедуры - обработчики событий
Тема довольно объёмная. Там и событийный механизм Windows, и ООП нужно будет осветить...а потом пройтись по всем компонентам My Visual Database, да желательно с рабочими примерами по каждому обработчику... Постараюсь включить это в свой рабочий план, благодарю за обратную связь!
sibprogsistem wrote:расскажите о параметрах в процедурах
procedure <Имя> [(параметры)];
Про параметры в обычных процедурах? Или про процедуры - обработчики событий?
vit007 wrote:Хотел сделать переход на вкладке ч/з кл. enter...
Нестандартные решения могут запутать пользователей. Но, если очень хочется, это можно сделать через глобальный обработчик нажатия клавиш формы.
В заключительной части пойдет речь о процедурах и функциях различного назначения: работа с компонентами приложения, получение информации о системных папках и файлах проекта.
https://createmyvisualdatabaseapp.blogs … /10/4.html
vit007 wrote:Нужно в PageControl функция OnKeyPress.
Подскажите, для чего вам нужен этот обработчик? Возможно, ваша задача решается другим способом...
vit007 wrote:Наверно, из графики надо добавить в прогу картинки клавишь в серых тонах. Т.е. есть у меня кнопки только с рисунком, и когда управляешь параметром Enable, то клавиша вроде посерела, а картинка на ней по-прежнему "сочная".... . И может быть непонятно...
Картинки можно программно добавлять свои, в том числе для состояния кнопки, когда она недоступна.
Эта часть описания полезных процедур посвящена утилитам для работы с таблицами TdbStringGridEx и деревьями TdbTreeView. Кстати, у них очень много общего, потому что они - родственники: дерево является наследником таблицы. Для тех, кто пока не в теме объектно-ориентированного программирования, поясню, что речь идет о том, что у компонентов TdbTreeView и TdbStringGridEx есть схожие свойства и методы, и всё, что работает для таблицы, как правило будет работать и для дерева.
https://createmyvisualdatabaseapp.blogs … /10/3.html
Продолжая своё повествование о полезных функциях и процедурах, я расскажу ещё о двух категориях: Работа со строками и Файлы. Функции очень простые, но весьма полезные.
https://createmyvisualdatabaseapp.blogs … /10/2.html
В своей работе каждый специалист обязательно использует тщательно подобранные, удобные инструменты. Несмотря на то, что в My Visual Database есть множество готовых функций и процедур, за три года использования этой среды у меня образовался свой "чемоданчик" полезных инструментов, которыми я с вами поделюсь.
Все функции разбиты на категории, снабжены описаниями и примером их использования.
https://createmyvisualdatabaseapp.blogs … /10/1.html
Nilaus wrote:Подскажите, может кто делал базу электронного документооборота, интересует структура базы, никак не могу сообразить с чего начать.
Цель: регистрация входящей и исходящей корреспонденции, внутренних документов.
Начинайте с ТЗ. Потом по ТЗ спроектируете таблицы, затем интерфейс: https://vk.com/@createmyvisualdatabasea … nyi-uroven
vit007 wrote:До 3D еще рости рости
А вот в в скрипте часто использую
cId:=SQLEXecute('SELECT id FROM request WHERE id='+frmMain.TableGrid1.sqlValue);
Вот каждый раз базе приходится создавать переменную и делать выборку. Это можно или не нужно выносить "за скобку"...
запрос странный: он возвращает то, что у вас и так есть - значение поля ID Или Null, если никакая строка в таблице не выбрана
procedure Form1_OnShow (Sender: TObject; Action: string);
begin
Form1.TableGrid1.AppearanceOptions := aoDontFillCells + aoHideFocus;
end;
Вы там 3D-графику что-ли рендерите скриптами? )))
Если какие-то задержки и происходят, то не в скриптах. Возможно, требуется оптимизация SQL-запросов или ограничение количество загружаемых записей в таблицу или дерево.
Для экономии объёма памяти создавайте универсальные параметризованные процедуры для выполнения однотипных действий.
А вот с глобальными переменными советую быть осторожней. Их должно быть минимальное (необходимое и достаточное) количество, иначе возрастает риск труднообнаружимых ошибок и головной боли.
Без вашего проекта можно только погадать на кофейной гуще, почему это происходит...
Чтобы выбрать (подсветить) строку используйте свойство SelectedRow
Form1.TreeView1.SelectedRow := tmpRow;
Функции (метода) нажатия у дерева нет. Есть события на действия мыши и клавиатуры. Если у вас есть обработчики этих событий, вы можете вызывать их как обычные процедуры.
Передать TStringList можно, только как это поможет? Record может включать любые поля, а TStringList - только одну строку с текстом. Создать свой собственный класс, чтобы нашпиговать им список, не выйдет - FastScript это не поддерживает.
Совет: храните все в БД и вытаскивайте нужное запросом. Если нужно будет увеличить скорость выборки, копайте в сторону временных таблиц SQLite.
abgroup-artur wrote:Выдает ошибку: tmpTable: TStringGridEx; - неизвестный тип.
Извините, нужно использовать класс - TdbStringGridEx. Исправил.
vovka3003 wrote:Этот скрипт процессорного мяса жрет больше, чем растянутая однопиксельная картинка с градиентом - памяти.
Согласен, но про счастье - буду настаивать на своём )))
Posts found: 1,051 to 1,075 of 1,488