Topic: Нужна помощь не программисту

Доброго времени суток, уважаемые форумчане. Возникла необходимость подобрать софтинку для работы. В поисках натолкнулся на простую, удобную и бесплатную программку Клиент-Мастер. Можно было на этом и остановится, но пройдя на сайт атора, понял что есть возможность адаптировать под себя точечно. Сейчас уже понимаю, что погорячился. Но дело принципа. Ставлю My Visual Database уже на 2 компьютер (на первом лицензия закончилась, но если сделаю, директор пообещал оплатить лицензию), кое чего добился, но некоторые моменты решить не удается. На форуме смотрю примеры, читаю вопросы, но никак. На 6м десятке трудно стать программистом. Так вот, если у кого то найдется время помочь исправить мои ошибки, или объяснить что не так делаю, буду очень благодарен. Вопросы такого плана:
1. В примере "Linked Lists" увидел что можно сделать удобную функцию из комбобокса в комбобокс: страна-регион-город, с примером разобрался, но при запуске программы, при нажатии кнопки поиск, в таблицу выбрасывает все записи из первого комбобокса.  Не могу победить.
2. В примере "Employees - a lot of files at once" усмотрел полезную функцию прикрепления файлов. Все прописал, все вроде проверил. Но при работе в программе прикрепленные файлы в одной заявке, отображаются во всех уже сохраненных. Кстати в примере "Employees - a lot of files" такая же проблема.
3. Ну и захотел добавить в программу  напоминалку. То что скрипты это не мое, я уже знаю, но очень захотелось ( заявки иногда растягиваются на несколько недель). С трудом прописал скрипт из примера, но опять что то наверное упустил. Само окно напоминания не появляется.
    Но сам добавил таблицу истории с заявкой, как в программе "Nanny Management ", прикрутил счетчик с оригинальным счетом, и немножко переделал склад по примеру "Склад простой".
Надеюсь на помощь.

Re: Нужна помощь не программисту

Привет,
Если вы можете прикрепить программу (заархивированную и без файла .exe), которую вы написали до сих пор, то я уверен, что кто-то сможет проработать ваши проблемы и дать вам предложения.
Derek.

Re: Нужна помощь не программисту

из корня Вашего проекта удалите файлы с расширением *.exe и *.dll
заархивируйте папку с проектом и загрузите..

Re: Нужна помощь не программисту

на каких формах находятся Ваши работы?
что за напоминала Вам нужно опишите ее

Re: Нужна помощь не программисту

Добрый,

По первому вопросу: на форме "Form1" - комбобокс "Оборудование". При нажатии на кнопку Поиск, в таблице сразу отображаются внесенные заявки, но если в словаре "Оборудование", внесено например 3 записи, то в таблице будет отображаться каждая заявка с названием каждого из видов оборудования. Нумерация заявки не меняется. Если в словаре "Оборудование"  3 записи, то заявка №1 повторится 3 раза с №1, но с разным оборудованием указанным в словаре.

По второму вопросу: на форме "Application" таблица добавления файлов. При создании заявки и прикреплении файлов, новые  прикрепленные файлы отображаются во всех уже созданных заявках. Если был файл  в предыдущей заявке, добавляется новый. Пример брал здесь :
//myvisualdatabase.com/forum/viewtopic.php?pid=19222#p19222

Третий вопрос: На форме "Form1" кнопка "Напоминание". Здесь, все работает, кроме того что окно с напоминанием (как в примере), не появляется. Здесь, мое полное непонимание работы скрипта, и ошибка там же. Пример "Reminder" с описанием брал здесь:
//myvisualdatabase.com/forum/viewtopic.php?pid=3601#p3601

6 (edited by sibprogsistem 2021-04-05 14:16:37)

Re: Нужна помощь не программисту

по первому вопросу
комбобокс не установлен в условия поиска

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

Post's attachments

Attachment icon Безымянный.png 327.96 kb, 1 downloads since 2021-04-05 

7 (edited by Не программист 2021-04-05 14:30:49)

Re: Нужна помощь не программисту

Я так пробовал, при запуске программа начинает "ругаться", Если убираю это условие, все работает. Еще раз попробую.

8 (edited by sibprogsistem 2021-04-05 14:36:31)

Re: Нужна помощь не программисту

по второму вопросу:
в этом случае нужно включать отображение дочерних записей ( то есть записи привязанные именно к этой заявке)
http://myvisualdatabase.com/forum/misc.php?action=pun_attachment&item=7640&download=0

Post's attachments

Attachment icon Безымянный.png 330.44 kb, file has never been downloaded. 

Re: Нужна помощь не программисту

Сейчас на работе. Вечером проверю, попробую, отпишусь.

10 (edited by sibprogsistem 2021-04-05 14:56:25)

Re: Нужна помощь не программисту

Не программист wrote:

Я так пробовал, при запуске программа начинает "ругаться", Если убираю это условие, все работает. Еще раз попробую.

все дело в том, что у вас в таблице нет связи
с брендом (создайте связь d таблице application с таблицей  brand)

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

после нужно опять же добавить комбобокс в процедуру сохранения

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

Post's attachments

Attachment icon Безымянный.png 514.35 kb, file has never been downloaded. 

Re: Нужна помощь не программисту

по вопросу оповещения
немного переделал скрипт

procedure frmReminder_OnShow (Sender: TObject; Action: string);
begin
     Timer := TTimer.Create(frmReminder);
     Timer.Interval := 6000;
     Timer.OnTimer := @OnTimer;
     Timer.Enabled := true;
     OnTimerA;
end;

procedure frmReminder_OnClose (Sender: TObject; Action: string);
begin
   Timer.Free;
end;

procedure OnTimerA;
var
   sMessage: string;
begin
     sMessage := SQLExecute('SELECT message FROM reminder WHERE strftime(''%d.%m.%Y %H:%M'', datetime) <= strftime(''%d.%m.%Y %H:%M'', ''now'', ''localtime'') ');
    if sMessage<>'' then   ShowMessage(sMessage);
end;

но это все равно не верно
Вы не получаете уведомления потому как у Вас в скрипте происходит проверка  совпадение даты и времени ( но такое практически не возможно )
я поменял проверку на <= ...
тут нужно создавать дополнительное поле для сверки (отображалось сообщение или нет)..

если самостоятельно не получиться я немного помогу ( просто сейчас занят)

12 (edited by Не программист 2021-04-07 12:02:46)

Re: Нужна помощь не программисту

Доброго времени суток,

Со вторым вопросом разобрался. Ранее делал так как Вы объяснили, но почему то результата не было. Вполне вероятно, что дело пошло в лучшую сторону, после удаления файла sqlite из папки (он был какого то неимоверного размера, порядка 8 мб, при том, что ничего загружено в БД не было) . Но факт - таблица загруженных файлов работает корректно. Спасибо.

По первому вопросу, с комбобоксами, на Ваших скриншотах, все указано правильно, при условии что каждый комбобокс работает сам. Вероятно я неправильно задаю вопрос. Если в комбобоксе "Оборудование" выбрано оборудование, то в комбобоксе "Модель", выпадают модели, связанные с этим оборудованием. То есть в таблице это выглядит как : application<-model<-brend.  Если я добавлю id_brend  в application, будет ошибка. Я еще раз переделал связи, и пришел к тому, что при добавлении в таблицу поиска в отображение результатов поля brendname, начинается чехорда с выводом результата. Если не добавлять, то все работает корректно. Заказчик я, пользователь я, поэтому думаю что на этом можно остановиться. Не совсем то, что я хотел, но работает.

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

Еще раз подгружаю проект, с исправленными ошибками.

Post's attachments

Attachment icon КлиентМастер.zip 370.29 kb, 4 downloads since 2021-04-07 

13 (edited by sibprogsistem 2021-04-07 11:50:54)

Re: Нужна помощь не программисту

Вы опять не добавили  комбобокс в сохранение

то есть имя модели сохранялось без привязки к бренду
http://myvisualdatabase.com/forum/misc.php?action=pun_attachment&amp;item=7650&amp;download=0

Post's attachments

Attachment icon Безымянный.png 237.91 kb, file has never been downloaded. 

Re: Нужна помощь не программисту

попробуйте

Post's attachments

Attachment icon test.rar 23.83 kb, 12 downloads since 2021-04-07 

Re: Нужна помощь не программисту

Попробовал. Ваш пример работает. Не понимаю, что с моей головой не правильно, но в примере было так

Post's attachments

Attachment icon 2021-04-06 13 36 27.jpg 19.58 kb, file has never been downloaded. 

Re: Нужна помощь не программисту

Всем доброго,
Как правильно запускать (указывать, активировать) :

procedure OnTimer;

17 (edited by sibprogsistem 2021-04-08 15:25:43)

Re: Нужна помощь не программисту

Не программист wrote:

Всем доброго,
Как правильно запускать (указывать, активировать) :

procedure OnTimer;

     Timer := TTimer.Create(frmReminder);  // создание таймера
     Timer.Interval := 6000;  // время в миллисекундах, после которого должно произойти действие
     Timer.Enabled := true;  // вкл/выкл таймер
     Timer.OnTimer := @OnTimer;  // действие 

     

@OnTimer; - указатель на процедуру
    OnTimer; - вызов процедуры

разница есть , в 1-м варианте просто ссылаемся на процедуру, во 2-м варианте:

procedure OnTimer;  в данном случае вызываем   ---  OnTimer;
procedure OnTimer (var time:integer;); в данном случае вызываем   ---  OnTimer(40000 "передаем параметр в переменную time");

дальше долго писать, прочтите тут

http://www.delphi-manual.ru/lesson9.php
http://www.snkey.net/books/delphi/ch1-6.html
https://delphisources.ru/pages/faq/faq_ … e.php.html

Re: Нужна помощь не программисту

Опять неверно задал вопрос. Чтобы задать кнопке какой то скрипт, в программе я выбираю вкладку "Событие", выбираю "OnClose". и во вкладке "Скрипт" появляется, ну например :
procedure Form1_OnClose (Sender: string; Action: string);
begin
     
end;
Как в скрипт прописывается :
procedure OnTimer;
begin
     
end;
Просто ручками?

19 (edited by sibprogsistem 2021-04-08 18:48:57)

Re: Нужна помощь не программисту

ну да !
и если Вы впишите таймер в отдельную процедуру то не забудьте  ее вызвать

Re: Нужна помощь не программисту

Еще вопрос, в скрипте уже назначено событие форме "Form1" :  procedure Form1_OnShow (Sender: string; Action: string); , При попытке назначить ещё одну процедуру , procedure Form1_OnShow (Sender: string; Action: string); компилятор выделяет строчку красным и ругается. Как правильно прописать еще одну процедуру которая начинается с : procedure Form1_OnShow (Sender: string; Action: string); ?

Re: Нужна помощь не программисту

Не программист wrote:

Еще вопрос, в скрипте уже назначено событие форме "Form1" :  procedure Form1_OnShow (Sender: string; Action: string); , При попытке назначить ещё одну процедуру , procedure Form1_OnShow (Sender: string; Action: string); компилятор выделяет строчку красным и ругается. Как правильно прописать еще одну процедуру которая начинается с : procedure Form1_OnShow (Sender: string; Action: string); ?

имя процедуры не должно совпадать ..
в данном случае  Form1_OnShow - имя

Re: Нужна помощь не программисту

Ну, вообщем, если убрать в скриптах все связанное с Form1 и оставить только напоминатель, указав начало и конец всех процедур с Form1 (как в примере), то скрипт работает нормально. При попытке добавить   что то на Form1, то, что добавлено не работает.

 var
    //isManyFiles: boolean;
    //sFileName: string;
    Timer: TTimer;

//Напоминатель события
procedure Form1_OnShow (Sender: TObject; Action: string);
begin
     Timer := TTimer.Create(Form1);
     Timer.Interval := 60000;
     Timer.OnTimer := @OnTimer;
     OnTimer;
     Timer.Enabled := true;
end;

procedure OnTimer;
var
   sMessage: string;
begin
     sMessage := SQLExecute('SELECT message FROM reminder WHERE strftime(''%d.%m.%Y %H:%M'', datetime)<=strftime(''%d.%m.%Y %H:%M'', ''now'', ''localtime'') ');
     if sMessage<>'' then ShowMessage(sMessage);
end;

procedure Form1_OnClose (Sender: TObject; Action: string);
begin
    Timer.Free;
end;

// Дата, часы на Form1
procedure Form1_OnShowClock (Sender: string; Action: string);
begin
     Timer := TTimer.Create (nil);
     Timer.OnTimer := @OnTimer;
     Timer.Interval := 1000;
     Timer.Enabled := True;

end;

procedure OnTimerClock;
begin
     Form1.DateTime.Caption := FormatDateTime('c', Now);
end;

procedure Form1_OnCloseCloc (Sender: string; Action: string);
begin
     Timer.Free;
end;

 
Что не так делаю.

23 (edited by sibprogsistem Yesterday 09:06:03)

Re: Нужна помощь не программисту

Весь листинг - это программа
все процедуры и функции - это подпрограммы
     
для того, что бы они заработали, к ним нужно обратиться
в программе уже есть стандартные обращения к подпрограммам они расположены ( свойство компонента -> события) , выберите нужное Вам событие для выбранного компонента или формы и щелкните дважды на пустое поле..
     
Если Вы пишите подпрограмму самостоятельно то ее имя нужно составлять так, что бы Вам было понятно для чего эта подпрограмма,
так  же самостоятельно написанная подпрограмма не может работать без ее вызова
     
для того, что бы вызвать самостоятельно написанную подпрограмму нужно написать ее имя в уже рабочей процедуре либо в нести ее имя в пустую строку в ( событиях )  на против нужного Вам события..
     
код программы исполняется слева направо  и сверху вниз как при чтении обычной книги, в таком порядке и выстраивайте (алгоритм) логику Вашей программы. Если смотреть на программу как на книгу то процедуры - это главы этой книги, к любой главе можно обратиться в любой момент, исполнятся код главы будет в соответствии с порядком чтения...
   
(Sender: string; Action: string); - это писать не обязательно, только если Вы собираетесь использовать эти данные.. В данном случае:
Sender  - источника события
Action - Действие, в этой переменной содержится текстовая строка с описанием действия для которого открылась эта форма..

Re: Нужна помощь не программисту

Прочитал. Попробовал. Вот что не так?

Post's attachments

Attachment icon Reminder.jpg 152.97 kb, file has never been downloaded. 

Re: Нужна помощь не программисту

А так работает

Post's attachments

Attachment icon Reminder 2.jpg 135.44 kb, file has never been downloaded.