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 3 of 6)
k245 wrote:Тогда нужно добавить поле в таблицу с параметрами системы (а если такой таблиц нет, то создать), и записывать туда дату последнего обновления.
Не могли бы Вы пример прислать?
1.Я создал в таблице БД Main поле dateupd (ДАТА/ВРЕМЯ).
2. На основной форме вынес DatePicker с привязкой к полю dateupd БД Main.
3. На форме Frm_Import на кнопке "Импортировать в базу" создал событие Frm_Import_Button3_OnAfterClick.
А на самом главном я ничего сделать не могу. В скрипте пишу "FrmMain.dupdate.DateTime := ...; (((
Спасибо за все советы. Дата необходима для визуального контроля. Есть две программы: одна с интерфейсом для пользователя, другая для администратора. Администратор обновляет БД, а пользователь открывая основную форму должен видеть и понимать какой "свежести" данная БД и давно ли ее обновляли. Как-то так. Обновил администратор базу, в таблице появились новые записи или наоборот - удалены, у пользователя есть кнопочка "обновить таблицу", он жмет и видит, что данные были обновлены администратором полчаса назад, как раз в тот промежуток времени пока программа была открыта пользователем и была свернута (неактивна). Вот как-то так.
k245 wrote:Vickus wrote:Возможно не правильно сформулировал. Сохранять данные по дате обновления не требуется, гланое, чтобы было видно когда в последний раз она обновлялась. Если невозможно без сохранения, то значит необзодимо создать поле?
Если нужно ТОЛЬКО В МОМЕНТ ОБНОВЛЕНИЯ, тогда достаточно на форме (Form1) метку разместить (labUpdateDate).
Чтобы на метке появилась надпись, присвойте свойству caption нужное значение:
procedure Form1_buttonabout_OnAfterClick (Sender: TObject);
begin
Form1.labUpdateDate.Caption := 'Last Updated On: ' + datetostr(now) + ' At: ' + timetostr(time);
end;
Про метку и её свойства можно почитать здесь: https://k245.ru/mvdb/metka-tdblabel.html
P.S. Как только вы закроете программу, информация о дате обновления исчезнет. И при последующем запуске в метке ничего отображаться не будет. Это я так, на всякий случай озвучиваю )))
Большое спасибо! Я точно также сделал чуть раньше, все так и получилось. А чтобы дата сохранялась, необходимо в БД добавить поле типа dateupddb? И вместо лэйбла текстовое поле? А что дальше подскажете?
k245 wrote:Vickus wrote:Я не программист, а самоучка. Пытаюсь разобраться. Сам пытался поменять, как Вы выразились, строчку, но ничего не вышло, поэтому и прошу помощи. А Вам вместо того, чтобы хейтить лучше бы проявить доброжелательность по примеру Дерека, который постоянно не отказывает и идет на помощь!
Не проблема: если вы продемонстрируете свои попытки в виде вашего проекта, в котором какая-то часть не работает, я вам лично всё подправлю.
И где вы тут увидели хейтерство? А вот культуру общения на форуме - да, насаждаю ))

P.S. Что касается вашей задачи, то нужно правильно формулировать запрос. Вам не просто нужно, чтобы где-то на форме отображалась дата обновления после загрузки. Скорей всего вам необходимо, чтобы эта дата запоминалась в базе и отображалась всё время. А вот обновлялась после того, как загрузили данные из Excel, верно?
Возможно не правильно сформулировал. Сохранять данные по дате обновления не требуется, гланое, чтобы было видно когда в последний раз она обновлялась. Если невозможно без сохранения, то значит необзодимо создать поле?
Я не программист, а самоучка. Пытаюсь разобраться. Сам пытался поменять, как Вы выразились, строчку, но ничего не вышло, поэтому и прошу помощи. А Вам вместо того, чтобы хейтить лучше бы проявить доброжелательность по примеру Дерека, который постоянно не отказывает и идет на помощь!
derek wrote:Привет
Это помогает?
Derek.
Дерек, большое спасибо за Вашу помощь! А возможно тоже самое, но чтобы не всплывало окно сообщения, а именно на форме в лэйбле или текстовом поле такое же отображалось? Еще раз благодарю!
Добрый день!
Прошу помощи у знатоков. Есть форма загрузки данных из файла Excel. Подскажите, как можно сделать так, чтобы после нажатия кнопки "Загрузить данные" на основной форме с таблицей, в которую как раз и загрузились данные из файла, отображалась надпись типа "Последнее обновление БД: 28.09.2023 08:16".
Благодарю!
derek wrote:Привет Vickus
Ознакомьтесь с прикрепленным примером различных вариантов форматирования числовых столбцов.
Это применимо независимо от того, относится ли это к вычисляемым полям или нет.
Regards,
Derek.
.
Please have a look at the attached example for the various formatting options for number columns.
This applies whether it refers to calculated fields or not.
Дерек, благодарю за очередную ПОМОЩЬ! Все получилось!
Добрый день!
Помогите, пожалуйста, решить проблему с отображением в таблице чисел из вычисляемого поля в денежном формате.
Дело в том, что в БД есть поле с вычисляемым значением (см. вложение), точнее итогом main.price * main.zakaz (цена - денежный формат, умножается на количество - целое число). В таблице полученное число отображается без запятой. Как сделать отображение с запятой и двумя знаками после нее?
Спасибо всем, кто решит мне помочь!
derek wrote:Привет Vickus,
Использование фильтра tablegrid работает лучше всего, если условие всегда истинно. Если оно является переменным, то лучше использовать кнопки «поиск» либо с предварительно установленным условием фильтра (см. Приложение), либо, что еще более гибко, было бы использовать поле со списком.
Нет необходимости в сценарии
С уважением,
Derek.
Огромное спасибо Дерек!
Воспользовался Вашим советом, отлично все получилось!
Добрый день!
Подскажите, в настройках компанентов таблицы есть возможность установки фильтра (п.3). Возможно ли данный фильтр использовать в скрипте и если да, то как сделать, чтобы была возможность отключения данного фильтра кнопкой, типа "Показать все записи".
Заранее всех благодарю!
2. И еще вспомнилось. Есть вычисляемое поле в денежном формате. Почему-то в таблице отображается как целое число, без запятой. Как исправить данную проблему. Еще раз благодарю.
k245 wrote:Да вам не пример тут нужен, а скрипт, который вычисляет итоговую сумму в зависимости от установленных чекеров в таблице.
Вы вручную чекеры что ли ставите и не сохраняете их состояние в базу? Я бы рекомендовал сохранять информацию об оплате в базу, а колонку "Сумма" нужно сделать вычисляемой, в зависимости от оплаты. Тогда и скрипт не понадобится.
P.S. Эффективней спрашивать не о том, как работает функционал компонентов (это можно прочитать в инструкциях), а о том, как правильно решить бизнес-задачу.
На форме записи есть чекбокс. Хотелось бы, чтобы при установке чекбокса "Ранее включен в счет" в итоговой таблице на главной форме это значение имело знак минус и в футере из суммы вычиталось.
Добрый день!
Уважаемые знатоки и мастера своего дела!
Помогите с решением задачи. Необходимо, чтобы значение одного из полей в таблице менялось на отрицательное при установке чекбокса.
Спасибо!
Добрый день!
Помогите примером, пожалуйста. Есть таблица с данными. При открытии записи есть возможность поставить галочку "Запись включена в счет" и кнопка Сохранить. Необходимо, чтобы после установки данной галочки и сохранении число приобретало отрицательное значение, чтобы данное отрицательное значение вычиталось из суммы в футере.
pavlenko.vladimir.v wrote:Vickus wrote:Добрый день!
Помогите, пожалуйста, с примером. Необходимо при клике на чекбокс в таблице, чтобы строка окрашивалась в любой цвет.
Спасибо!
procedure Form1_TableGrid1_OnEditAccept (Sender: TObject; ACol, ARow: Integer; Value: String; var Accept: Boolean);
var
i,CC: integer;
begin
if (Form1.TableGrid1.Cell[ACol,ARow].AsBoolean = False) then
begin
CC := randomColor;
for i:=0 to Form1.TableGrid1.Columns.Count-1 do
Form1.TableGrid1.Cell[i,ARow].Color := CC;
end else
for i:=0 to Form1.TableGrid1.Columns.Count-1 do
Form1.TableGrid1.Cell[i,ARow].Color := clWhite;
end;
function randomColor: integer;
var
RR:integer;
begin
Randomize;
RR := Random(7);
CASE RR OF
1: Result := clFuchsia;
2: Result := clGray;
3: Result := clGreen;
4: Result := clNavy;
5: Result := clTeal;
6: Result := clAqua;
7: Result := clHighlight;
end;
end;
procedure Form1_OnShow (Sender: TObject; Action: string);
begin
if (SQLExecute('SELECT COUNT(id) FROM template') = '0') then
SQLExecute('INSERT INTO template(name)VALUES("Первое поле"),("Второе поле"),("Третье поле"),("Четвертое поле")');
end;
СПАСИБО!!!
Добрый день!
Помогите, пожалуйста, с примером. Необходимо при клике на чекбокс в таблице, чтобы строка окрашивалась в любой цвет.
Спасибо!
sparrow wrote:Vickus wrote: как реализовать удаление выделенными чекбоксами строк таблицы
procedure frm_main_Button1_OnClick (Sender: TObject; var Cancel: boolean);
begin
for vi := 0 to frm_main.table_main.rowcount -1 do
begin
if frm_main.table_main.cell[1,vi].AsBoolean = true then
begin
sqlexecute('delete from main where id = "'+inttostr(frm_main.table_main.row[vi].id)+'"');
frm_main.table_main.cell[1,vi].AsBoolean := false;
end;
end;
frm_main.table_main.dbUpdate;
end;
БЛАГОДАРЮ ЕЩЕ РАЗ!!!!!
Vickus wrote:sparrow wrote:Вот первая версия с устраненной ошибкой.
как видите работат.
ОГРОМНОЕ ВАМ СПАСИБО!!!!
Не сочтите за наглость, но не могли бы Вы подсказать как реализовать удаление выделенными чекбоксами строк таблицы
sparrow wrote:Вот первая версия с устраненной ошибкой.
как видите работат.
ОГРОМНОЕ ВАМ СПАСИБО!!!!
sparrow wrote:покажите что вы исправили а лучше еще раз программу исправленую
sparrow wrote:Дело не в программисте, а в желании научиться.
Сузим круг подозреваемых.
Найдите здесь http://myvisualdatabase.com/help_ru/scr … egrid.html
свойство Cell[x,y]. Зайдите в подробнее.
Узнайте что такое первый и второй аргумент и сверьтесь с вашей таблицей table_main.
Подсказка: счет колонок и строк в таблице начинается с 0.
Как я понимаю из вашего урока, в таблице колонка с чекбоксами имеет номер 1? Я исправил, но все равно не работает :-( Что-то не так понял снова?
sparrow wrote:procedure frm_main_Button1_OnClick (Sender: TObject; var Cancel: boolean);
begin
sqlexecute('update main set printflag = 0');
for vi := 0 to frm_main.table_main.rowcount -1 do
begin
if frm_main.table_main.cell[0,vi].AsBoolean = true then
begin
sqlexecute('update main set printflag = 1 where id = "'+inttostr(frm_main.table_main.row[vi].id)+'"');
frm_main.table_main.cell[0,vi].AsBoolean := false;
end;
end;
end;
Вот в этом кусочке кода две ошибки. Внимательно проверьте, что и где вы проверяете.
Нельзя просто копировать код.
Простите, я не программист, просто пытаюсь разобраться, поэтому ищу информацию и пытаюсь что-то под свои нужды подстроить. Так и не понял в чем ошибки? Не затруднит ли Вас либо указать мне на них, либо проект исправленный обратно выложить? Спасибо заранее огромное!
derek wrote:Привет
Здесь та же логика, что и в существующем скрипте (см. вложение).
Derek.
.
It's the same logic as in the existing script.
Можете посмотреть, что неверно делаю для распечатки в отчете выбранных в таблице позиций. Очень нужно. Спасибо!
okna29 wrote:скачал, обновил - все формы кроме form1 разворачиваются ) Нельзя ли под исправить?
Добрый день! Разобрались почему главная форма не открывается на весь экран? Подскажите в чем проблема?
СПАСИБО БОЛЬШОЕ! ВСЕ РАБОТАЕТ!
Posts found: 51 to 75 of 139