26

(4 replies, posted in General)

The articles provide several practical tips on implementing protection and licensing

https://k245.ru/en/mvdb-en/modular-licensing.html

https://k245.ru/en/mvdb-en/correction-of-mistakes.html

Сначала отвечу на второй вопрос - используйте JOIN для соединения таблиц:

SELECT 
  p.id, t.edType, d.edDensity, c.edColor, p.height, p.weight  
FROM pieces p
LEFT JOIN type t ON t.id = p.id_type
LEFT JOIN density d ON d.id = p.id_density
LEFT JOIN color c ON c.id = p.id_color
WHERE
...

Ответ на первый вопрос сложней. И есть два пути решения: 1) усложнять запрос  2) создавать сам запрос с помощью скрипта

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

Pieces.height >= {btn_search_1}

заменить на

( (Pieces.height >= {btn_search_1}) OR ( {btn_search_1} is NULL  )

и так для каждого условия.


Вариант со скриптом предполагает, что вы включаете нужные строки в запрос только в том случае, если они содержат значение, отличное от пустого. Решение привязывается к конкретным названиям компонентов формы. Для того, чтобы я смог его написать для вас, приложите ваш проект .

senseyesenseye1983 wrote:

Всем привет. А подскажите есть ли возможность в программе сделать чтобы логи велись конкретно по изменениям:
например есть столбцы Имя Фамилия Дата рождения телефон в окне логов. Если изменить телефон то в логах у меня появляется запись изменена но непонятно что изменено... Есть ли возможность сделать так чтоб если изменили телефон то высвечивается изменен телефон может подкрашивается цветом ??? Помогите пожалуйста

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

Patriot10200 wrote:

Банальный отсев по номеру авто, спасибо, раньше с SQL вообще не пытался связываться, но буду стараться потихоньку изучать, Спасибо еще раз, но все таки мне не дает покоя прикол с обычным поиском, почему после поиска в расходе получается 0 вместо суммы?

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

Запрос должен выглядеть так:

SELECT                       
AC.Category,  
AP.Podcategory,   
Arenda_Autos_Money.Data_Operacii, 
Arenda_Autos_Money.Dohod, 
Arenda_Autos_Money.Rashod
FROM 
Arenda_Autos_Money
LEFT JOIN Arenda_Category AC ON AC.ID = Arenda_Autos_Money.id_Arenda_Category                  
LEFT JOIN Arenda_Podcategory AP ON AP.ID = Arenda_Autos_Money.id_Arenda_Podcategory    

WHERE        
Arenda_Autos_Money.Auto_Number_Money LIKE "%{Edit9}%"   

ORDER BY Arenda_Autos_Money.Data_Operacii;

Но все равно не ясно, что вы им ищете:

https://myvisualdatabase.com/forum/misc.php?action=pun_attachment&item=10339&download=0

31

(9 replies, posted in Russian)

6katran6 wrote:
k245 wrote:
SELECT *
FROM "rabnar"
WHERE
   (kol LIKE '%{Edit1}%') 
OR (koef LIKE '%{Edit1}%')
OR (user_name LIKE '%{Edit1}%')  
OR (user_fomiliya  LIKE '%{Edit1}%') 
OR (user_patronymic LIKE '%{Edit1}%') 
OR (user_position LIKE '%{Edit1}%') 
OR (user_full LIKE '%{Edit1}%') 
OR (key LIKE '%{Edit1}%') 
OR (key1 LIKE '%{Edit1}%') 
OR (key2 LIKE '%{Edit1}%') 
OR (key3 LIKE '%{Edit1}%') 
OR (key4 LIKE '%{Edit1}%') 
OR (key5 LIKE '%{Edit1}%') 
OR (key6 LIKE '%{Edit1}%') 
OR (key7 LIKE '%{Edit1}%') 
OR (key8 LIKE '%{Edit1}%') 
OR (key9 LIKE '%{Edit1}%') 
OR (kol LIKE  '%{Edit1}%') 
OR (kol-1 LIKE '%{Edit1}%') 
OR (kol-2 LIKE '%{Edit1}%') 
OR (kol-3 LIKE '%{Edit1}%') 
OR (kol-4 LIKE '%{Edit1}%') 
OR (kol-5 LIKE '%{Edit1}%') 
OR (kol-6 LIKE '%{Edit1}%') 
OR (kol-7 LIKE '%{Edit1}%') 
OR (kol-8 LIKE '%{Edit1}%') 
OR (kol-9 LIKE '%{Edit1}%') 
OR (kol-10 LIKE '%{Edit1}%') 
OR (kol-11 LIKE '%{Edit1}%') 
OR (kol-12 LIKE '%{Edit1}%') 
OR (kol-13 LIKE '%{Edit1}%') 
OR (kol-14 LIKE '%{Edit1}%') 
OR (kol-15 LIKE '%{Edit1}%') 
OR (kol-16 LIKE '%{Edit1}%') 
OR (kol-17 LIKE '%{Edit1}%') 
OR (kol-18 LIKE '%{Edit1}%') 
OR (kol-19 LIKE '%{Edit1}%') 
OR (kol-20 LIKE '%{Edit1}%') 
OR (kol-21 LIKE '%{Edit1}%') 
OR (kol-22 LIKE '%{Edit1}%') 
OR (kol-23 LIKE '%{Edit1}%') 
OR (kol-24 LIKE '%{Edit1}%') 
OR (tab LIKE   '%{Edit1}%') 
OR (tab-1 LIKE '%{Edit1}%') 
OR (tab-2 LIKE '%{Edit1}%') 
OR (tab-3 LIKE '%{Edit1}%') 
OR (tab-4 LIKE '%{Edit1}%') 
OR (tab-5 LIKE '%{Edit1}%') 
OR (tab-6 LIKE '%{Edit1}%') 
OR (tab-7 LIKE '%{Edit1}%') 
OR (tab-8 LIKE '%{Edit1}%') 
OR (tab-9 LIKE '%{Edit1}%') 
OR (tab-10 LIKE '%{Edit1}%') 
OR (tab-11 LIKE '%{Edit1}%') 
OR (tab-12 LIKE '%{Edit1}%') 
OR (tab-13 LIKE '%{Edit1}%') 
OR (tab-14 LIKE '%{Edit1}%') 
OR (tab-15 LIKE '%{Edit1}%') 
OR (koef LIKE   '%{Edit1}%') 
OR (koef-1 LIKE '%{Edit1}%') 
OR (koef-2 LIKE '%{Edit1}%') 
OR (koef-3 LIKE '%{Edit1}%') 
OR (koef-4 LIKE '%{Edit1}%') 
OR (koef-5 LIKE '%{Edit1}%') 
OR (koef-6 LIKE '%{Edit1}%') 
OR (koef-7 LIKE '%{Edit1}%') 
OR (koef-8 LIKE '%{Edit1}%') 
OR (koef-9 LIKE '%{Edit1}%') 
OR (RustID LIKE '%{Edit1}%') 
OR (Rustpass LIKE '%{Edit1}%') 
OR (AnyDesk LIKE '%{Edit1}%') 

А здесь нужно заголовки для таблицы указать:

https://myvisualdatabase.com/forum/misc.php?action=pun_attachment&item=10331&download=0

так это мой скрипт я не пойму что тут не так он и не работает вы можете 2 примера показать как правильно делать запрос

ищет, вставьте его вместо того, что у вас в кнопке.

32

(13 replies, posted in General)

The entire developer community wishes the creator of MVDB to return. But, as far as I know, Dmitry made the final decision. But in life anything happens. Especially if it happens in a galaxy far, far away.

https://myvisualdatabase.com/forum/misc.php?action=pun_attachment&item=10334&download=1

33

(4 replies, posted in General)

This happens if you open other people's projects. Open any form and edit anything. This will signal the recompilation of the forms file that stores the license information. This is a feature of this version - to recompile you need to edit something on the project form.

procedure frm_Arenda_Dohod_Rashod_ComboBox1_OnChange (Sender: TObject);
begin
  if frm_Arenda_Dohod_Rashod.ComboBox1.ItemIndex = 1 then
    frm_Arenda_Dohod_Rashod.ed_Dohod_Rashod.dbField := 'Dohod'
  else
  if frm_Arenda_Dohod_Rashod.ComboBox1.ItemIndex = 2 then
    frm_Arenda_Dohod_Rashod.ed_Dohod_Rashod.dbField := 'Rashod'
  else ;
end;

35

(9 replies, posted in Russian)

6katran6 wrote:

как описать точней проблему не работает поиск не могу понять если не сложно приведите пример пару а дальше сам по пробую допилить

Нужно записать корректный запрос на языке SQL.

SELECT <что> FROM <откуда> WHERE <по условию>

36

(9 replies, posted in Russian)

SELECT *
FROM "rabnar"
WHERE
   (kol LIKE '%{Edit1}%') 
OR (koef LIKE '%{Edit1}%')
OR (user_name LIKE '%{Edit1}%')  
OR (user_fomiliya  LIKE '%{Edit1}%') 
OR (user_patronymic LIKE '%{Edit1}%') 
OR (user_position LIKE '%{Edit1}%') 
OR (user_full LIKE '%{Edit1}%') 
OR (key LIKE '%{Edit1}%') 
OR (key1 LIKE '%{Edit1}%') 
OR (key2 LIKE '%{Edit1}%') 
OR (key3 LIKE '%{Edit1}%') 
OR (key4 LIKE '%{Edit1}%') 
OR (key5 LIKE '%{Edit1}%') 
OR (key6 LIKE '%{Edit1}%') 
OR (key7 LIKE '%{Edit1}%') 
OR (key8 LIKE '%{Edit1}%') 
OR (key9 LIKE '%{Edit1}%') 
OR (kol LIKE  '%{Edit1}%') 
OR (kol-1 LIKE '%{Edit1}%') 
OR (kol-2 LIKE '%{Edit1}%') 
OR (kol-3 LIKE '%{Edit1}%') 
OR (kol-4 LIKE '%{Edit1}%') 
OR (kol-5 LIKE '%{Edit1}%') 
OR (kol-6 LIKE '%{Edit1}%') 
OR (kol-7 LIKE '%{Edit1}%') 
OR (kol-8 LIKE '%{Edit1}%') 
OR (kol-9 LIKE '%{Edit1}%') 
OR (kol-10 LIKE '%{Edit1}%') 
OR (kol-11 LIKE '%{Edit1}%') 
OR (kol-12 LIKE '%{Edit1}%') 
OR (kol-13 LIKE '%{Edit1}%') 
OR (kol-14 LIKE '%{Edit1}%') 
OR (kol-15 LIKE '%{Edit1}%') 
OR (kol-16 LIKE '%{Edit1}%') 
OR (kol-17 LIKE '%{Edit1}%') 
OR (kol-18 LIKE '%{Edit1}%') 
OR (kol-19 LIKE '%{Edit1}%') 
OR (kol-20 LIKE '%{Edit1}%') 
OR (kol-21 LIKE '%{Edit1}%') 
OR (kol-22 LIKE '%{Edit1}%') 
OR (kol-23 LIKE '%{Edit1}%') 
OR (kol-24 LIKE '%{Edit1}%') 
OR (tab LIKE   '%{Edit1}%') 
OR (tab-1 LIKE '%{Edit1}%') 
OR (tab-2 LIKE '%{Edit1}%') 
OR (tab-3 LIKE '%{Edit1}%') 
OR (tab-4 LIKE '%{Edit1}%') 
OR (tab-5 LIKE '%{Edit1}%') 
OR (tab-6 LIKE '%{Edit1}%') 
OR (tab-7 LIKE '%{Edit1}%') 
OR (tab-8 LIKE '%{Edit1}%') 
OR (tab-9 LIKE '%{Edit1}%') 
OR (tab-10 LIKE '%{Edit1}%') 
OR (tab-11 LIKE '%{Edit1}%') 
OR (tab-12 LIKE '%{Edit1}%') 
OR (tab-13 LIKE '%{Edit1}%') 
OR (tab-14 LIKE '%{Edit1}%') 
OR (tab-15 LIKE '%{Edit1}%') 
OR (koef LIKE   '%{Edit1}%') 
OR (koef-1 LIKE '%{Edit1}%') 
OR (koef-2 LIKE '%{Edit1}%') 
OR (koef-3 LIKE '%{Edit1}%') 
OR (koef-4 LIKE '%{Edit1}%') 
OR (koef-5 LIKE '%{Edit1}%') 
OR (koef-6 LIKE '%{Edit1}%') 
OR (koef-7 LIKE '%{Edit1}%') 
OR (koef-8 LIKE '%{Edit1}%') 
OR (koef-9 LIKE '%{Edit1}%') 
OR (RustID LIKE '%{Edit1}%') 
OR (Rustpass LIKE '%{Edit1}%') 
OR (AnyDesk LIKE '%{Edit1}%') 

А здесь нужно заголовки для таблицы указать:

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

37

(2 replies, posted in General)

The built-in connection form appears automatically when the application starts. To disable the appearance of the form and automatic connection to the database, use a directive that must be placed in the script.

{$MySQL disable_connectdialog}

begin
end.

The use of this directive assumes that the connection to the database will be carried out using a script.

var
  SQLCon: TMyConnection; // соединение с базой
...

SQLCon := TMyConnection(Form1.FindComponent('MySQLConnection')); // Form1  is main Form
...

function ConnectToDB(AServer: string = ''; APort: integer = 0; ADataBase: string = ''; AUsername: string = '';
  APassword: string = ''): boolean;
begin
  SQLCon.Server := AServer;
  SQLCon.Port := APort;
  SQLCon.Database := ADataBase;
  SQLCon.Username := AUsername;
  SQLCon.Password := APassword;
try
    SQLCon.Connect;
    Result := SQLCon.Connected;
  except
    Result := False;
  end;
end;

I don’t know how to call the built-in connection form using a script.

38

(4 replies, posted in General)

There are two solutions to this problem:
1) simultaneously edit the data structure in both the new version and the old one using the development environment.
2) when starting the program, use scripts to check for the presence of new tables/fields and add missing ones.

или так:

procedure OnTimer (Sender: TObject);
begin
   Form1.DateTimePicker1.DateTime := Now();
   Form1.DateTimePicker2.DateTime := Now();
end;

procedure Form1_OnShow (Sender: TObject; Action: string);
var
  Timer:TTimer;
begin
  Timer := TTimer.Create(Form1);
  Timer.Interval := 1000;
  Timer.OnTimer := 'OnTimer';
end;
procedure Form1_Button1_OnClick (Sender: TObject; var Cancel: boolean);
begin
   Form1.DateTimePicker1.DateTime := Now();
   Form1.DateTimePicker2.DateTime := Now();
end;
Serenada wrote:

Я прикреплю сюда базу

Для составления запроса достаточно изображения схемы данных.

Да, все верно. Этот функционал реализован в кнопке, Action = SQL-запрос

Фильтр через SQL-запрос:

SELECT * FROM LIST
WHERE 
( LIST.WIDTH >= :WIDTH AND LIST.HEIGHT >= :HEIGHT )
OR
( LIST.WIDTH >= :HEIGHT AND LIST.HEIGHT >= :WIDTH )

значение ширины и высоты можно указать прямой заменой текста в запросе с помощью скрипта или использовать фичу с фигурными скобками, в которых указать имя компонента на форме:

https://myvisualdatabase.com/help_ru/bu … query.html

I'm guessing you'll need to create a table to hold the work calendar in, specifying:
1. Date
2. Duration of the working day, hours
This table will have to be completed every year. Of course, to speed up the process you can use a script based on the weekly work cycle information. But as for holidays, they will need to be entered manually. Or create a separate table to use it in the script. For example, in my country the dates of some holidays vary, every year the Ministry of Labor publishes a calendar plan for the next year.

45

(9 replies, posted in Russian)

Неправильно написан SQL запрос.
https://myvisualdatabase.com/forum/misc.php?action=pun_attachment&amp;item=10300&amp;download=0

Но что именно вам нужно этим запросом получить?

Почитайте про команду SELECT

https://oracleplsql.ru/select-sqlite.html

46

(6 replies, posted in General)

https://myvisualdatabase.com/forum/view … hp?id=3642

47

(2 replies, posted in General)

Really elegant solution

Простое решение не всегда правильное.
Начните со структуры данных вашего проекта.
И оперировать лучше не с колонками на экране, а полями в таблице БД.

49

(38 replies, posted in Russian)

sparrow wrote:

Константин,
Я попробовал третий вариант. Рабочий. Только требует дополнительной обработки в событии OnPaint
https://myvisualdatabase.com/forum/misc.php?action=pun_attachment&amp;item=10236


Выглядит прилично, как я понимаю, возможен вариант с универсальным обработчиком  формы OnPaint, в котором производится обход компонентов на форме и отрисовка рамок при необходимости. И кода будет поменьше, чем при создании кучи TShape smile

Какая-то сложная концепция.... И что такое "выходные результаты работы формы"?


Зачем изобретать велосипед с таймером? Сделайте многостраничный форму-мастер или используйте модальные вызовы окон.