Не пойму как реализована связь
1) Выбераешь когда запись на главном экране
2) Показывает другую таблицу с данными.
1 2025-08-08 13:35:09
Re: Вопрос по таблицам (5 replies, posted in Russian)
2 2025-08-08 04:08:46
Re: Вопрос по таблицам (5 replies, posted in Russian)
В том то и дело если я укажу таблицу MainItems, то он покажет все строки. Нужно что бы было как с заказами, например: На главной странице таблица с номерами заказа, а когда преходишь к записи, что бы открылась REC форма с комплектующими.
Извиняюсь, если запутал.
Добрый ...
Как добавить на главную страницу таблицу, что бы она содержала в себе уникальные записи, при нажатии на которой откроется форма REC с данными именно к этой уникальной записи.
В своеми примере в свойствах TableGrid на главной форме вы указали таблицу Main, которая не содержит данных и не связана ни с какой другой таблицей.
Какую таблицу вы хотите добавить в грид на главной странице?
Какие записи и какой таблицы являются уникальными и почему, по какому признаку?Возможно вам просто нужно указать таблицу MainItems в свойствах грида на главной форме и выбрать поля для показа..
3 2025-08-07 13:31:01
Topic: Вопрос по таблицам (5 replies, posted in Russian)
Добрый день, подскажите, пожалуйста как можно реализовать следующее:
Есть таблица MainItems, в ней хранятся записи проводок. Находится на форме REC
Как добавить на главную страницу таблицу, что бы она содержала в себе уникальные записи, при нажатии на которой откроется форма REC с данными именно к этой уникальной записи.
Пример во вложении
4 2023-11-24 11:59:45
Re: Проблема с массивом (22 replies, posted in Russian)
В режиме ParentComboBox список дочернего Комбо формируется на основе фильтра и зависимости в базе данных.
Как я вам написал при выборе в Родительском окне Организации ИД=4 в дочернем Комбо будут выведены все записи департаментов где
id_tOrganization=4. При этом фильтр изменяет фильтр заданый в ролях.
.
Вот именно, не работает, хотя все прописано. Оставил через скрипт, а то уже много времени на это потратил(((
Спасибо вам за помощь
5 2023-11-24 03:12:34
Re: Проблема с массивом (22 replies, posted in Russian)
А в общем в режиме ПарентБокса они работают так как внесены данные в базу данных.
Например для ид=4 Организации определены
департаменты с ид=88 по ид=153
Проверьте зависимость в таблицах организации и департаментов
Доброго.
В том то и дело, если закоментить код, то вываливается весь список
6 2023-11-22 11:09:50
Re: Проблема с массивом (22 replies, posted in Russian)
Добрый день, есть 2 комбобокса (зависимых), на первом "Организация" (главном) настроена фильтрация по ролям - все работает, но на 2м зависимом "Департамент", указаны фильтры и они не работают. открывается весь список, а нужно фильтровать.
настроил скриптами (2 первые процедуры), но я думаю это не должно работать так.
Можете подсказать, может я где-то неправильно настроил роли?
Для всех пользователей кроме админа (пустой пароль) пароль 1
7 2023-11-14 08:13:55
Re: Проблема с массивом (22 replies, posted in Russian)
Добрый день,
Подскажите, плиз, можно ли сделать что бы в таблице показывались только уникальные значения из видимых столбцов?
8 2023-11-13 04:08:19
Re: Проблема с массивом (22 replies, posted in Russian)
procedure Form1_Edit2_OnKeyPress (Sender: TObject; var Key: Char); begin if not ( Key in ['0'..'9','.',',','Z','X']) then key :=#0; end;
Как всегда на высоте) Спасибо большое
если кому понадобится, тут коды, берем из #Decimal number - https://adrenalinebot.com/en/api/useful … i-keycodes
9 2023-11-12 16:36:40
Re: Проблема с массивом (22 replies, posted in Russian)
Добрый день, подскажите, пожалуйста, еще по одному вопросу- Можно ли, разрешить ввод только числовые значения и некоторые буквы?
Сработает ли такое?
if CharInSet(key, ['0'..'9', '.', ',']) then
Key := #0;10 2023-11-12 08:10:09
Re: Проблема с массивом (22 replies, posted in Russian)
Тоже самое( Можно попросить вас посмотреть проект во вложении?Так будет удобнее работать
Офигеть... надо будет разобраться; думал на счет Кейсов, но как-то сразу не сообразил.
Спасибо огромное за помощь.
11 2023-11-10 13:03:42
Re: Проблема с массивом (22 replies, posted in Russian)
for i:=0 to 30 DO
Заработало, спасибо огромное
12 2023-11-10 13:02:31
Re: Проблема с массивом (22 replies, posted in Russian)
andrey.yugay wrote:Соответсвует; Не подскажите куда копать?
а Вы пробовали заменить Duble?
например на Extended
Тоже самое(
Можно попросить вас посмотреть проект во вложении?
13 2023-11-10 12:39:26
Re: Проблема с массивом (22 replies, posted in Russian)
andrey.yugay wrote:Variant or safe array out of bounds
Тип Double является общим типом с плавающей запятой в Delphi. Он подводит баланс между вместимость/точность и память/выполнение.
Он поддерживает приблизительно 15 цифр точности в диапазоне от 2.23 x 10-308 до 1.79 x 10308.
Если соответствует, то проблема в массиве
Соответсвует; Не подскажите куда копать?
14 2023-11-10 12:07:26
Topic: Проблема с массивом (22 replies, posted in Russian)
Добрый день, есть на форме, очень много текстовых блоков в виде календаря. Загоняю данные т.блоков в массив, теперь надо на данных одного массива, просуммировать в другом блоке.
Код вставляю такой
procedure frmNewRecord_Button3_OnClick (Sender: TObject; var Cancel: boolean);
var
td1: string = frmNewRecord.td1.text; td2: string = frmNewRecord.td1.text; td3: string = frmNewRecord.td1.text; td4: string = frmNewRecord.td1.text;
td5: string = frmNewRecord.td1.text; td6: string = frmNewRecord.td1.text; td7: string = frmNewRecord.td1.text; td8: string = frmNewRecord.td1.text;
td9: string = frmNewRecord.td1.text; td10: string = frmNewRecord.td1.text; td11: string = frmNewRecord.td1.text; td12: string = frmNewRecord.td1.text;
td13: string = frmNewRecord.td1.text; td14: string = frmNewRecord.td1.text; td15: string = frmNewRecord.td1.text; td16: string = frmNewRecord.td1.text;
td17: string = frmNewRecord.td1.text; td18: string = frmNewRecord.td1.text; td19: string = frmNewRecord.td1.text; td20: string = frmNewRecord.td1.text;
td21: string = frmNewRecord.td1.text; td22: string = frmNewRecord.td1.text; td23: string = frmNewRecord.td1.text; td24: string = frmNewRecord.td1.text;
td25: string = frmNewRecord.td1.text; td26: string = frmNewRecord.td1.text; td27: string = frmNewRecord.td1.text; td28: string = frmNewRecord.td1.text;
td29: string = frmNewRecord.td1.text; td30: string = frmNewRecord.td1.text; td31: string = frmNewRecord.td1.text;
td: Array[1..31] of String = [td1, td2, td3, td4, td5, td6, td7, td8, td9, td10, td11, td12, td13, td14, td15, td16, td17, td18, td19, td20, td21, td22, td23, td24, td25, td26, td27, td28, td29, td30, td31];
d1: double = frmNewRecord.d1.value; d2: double = frmNewRecord.d1.value; d3: double = frmNewRecord.d1.value; d4: double = frmNewRecord.d1.value;
d5: double = frmNewRecord.d1.value; d6: double = frmNewRecord.d1.value; d7: double = frmNewRecord.d1.value; d8: double = frmNewRecord.d1.value;
d9: double = frmNewRecord.d1.value; d10: double = frmNewRecord.d1.value; d11: double = frmNewRecord.d1.value; d12: double = frmNewRecord.d1.value;
d13: double = frmNewRecord.d1.value; d14: double = frmNewRecord.d1.value; d15: double = frmNewRecord.d1.value; d16: double = frmNewRecord.d1.value;
d17: double = frmNewRecord.d1.value; d18: double = frmNewRecord.d1.value; d19: double = frmNewRecord.d1.value; d20: double = frmNewRecord.d1.value;
d21: double = frmNewRecord.d1.value; d22: double = frmNewRecord.d1.value; d23: double = frmNewRecord.d1.value; d24: double = frmNewRecord.d1.value;
d25: double = frmNewRecord.d1.value; d26: double = frmNewRecord.d1.value; d27: double = frmNewRecord.d1.value; d28: double = frmNewRecord.d1.value;
d29: double = frmNewRecord.d1.value; d30: double = frmNewRecord.d1.value; d31: double = frmNewRecord.d1.value;
d: Array[1..31] of Double = [d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15, d16, d17, d18, d19, d20, d21, d22, d23, d24, d25, d26, d27, d28, d29, d30, d31];
begin
for i:=1 to 31 DO
begin
if td[i] = '"П"' then ds:=ds+d[i];
end;
frmNewRecord.EDailyHours.Value := ds;
end;При нажатии Расчет, получаю ошибку: Variant or safe array out of bounds
Подскажите, пожалуйста, где нужно исправить?
Заранее благодарю
15 2023-10-18 04:24:45
Re: Фильтрация + удаление записей (17 replies, posted in Russian)
Доброго утра, можно материться от восторга?!
Спасибо огромное за подробное объяснение каждого шага, очень признателен.
Хорошего дня!
Пользуйтесь!
procedure Form1_TableGrid1_OnCellClick (Sender: TObject; ACol, ARow: Integer); begin // полное имя файла (путь к файлу) Form1.Edit1.Text := SQLExecute('SELECT w_filename FROM a WHERE id='+Form1.TableGrid1.sqlValue); // путь к папке рассположения файла c (\) Form1.Edit2.Text := ExtractFilePath(SQLExecute('SELECT w_filename FROM a WHERE id='+Form1.TableGrid1.sqlValue)); // путь к папке рассположения файла, без (\) Form1.Edit3.Text := ExtractFileDir(SQLExecute('SELECT w_filename FROM a WHERE id='+Form1.TableGrid1.sqlValue)); // диск рассположения файла Form1.Edit4.Text := ExtractFileDrive(SQLExecute('SELECT w_filename FROM a WHERE id='+Form1.TableGrid1.sqlValue)); // расширение файла Form1.Edit5.Text := ExtractFileExt(SQLExecute('SELECT w_filename FROM a WHERE id='+Form1.TableGrid1.sqlValue)); // имя файла с расширением Form1.Edit6.Text := ExtractFileName(SQLExecute('SELECT w_filename FROM a WHERE id='+Form1.TableGrid1.sqlValue)); // папка рассположения файла Form1.Edit7.Text := ExtractFilePath(SQLExecute('SELECT w_filename FROM a WHERE id='+Form1.TableGrid1.sqlValue)); // если путь к папке или файлу относительный то нужно использовать: // ExtractFilePath (ParamStr (0)) - путь к программе // application.ExeName - полный путь к исполняемому файлу // ExtractFileDir(application.ExeName) - адрес папки (корня) рассположения исполняемого файла без (\) на конце end; procedure Form1_Button2_OnClick (Sender: TObject; var Cancel: boolean); var sFile: string = SQLExecute('SELECT w_filename FROM a WHERE id='+Form1.TableGrid1.sqlValue); sCopy : string ='backup\'+FormatDateTime('yyyy', now); begin if FileExists(ExtractFileDir(application.ExeName)+sFile) then begin if sDir(sCopy) then begin if not CopyFile( ExtractFileDir(application.ExeName)+sFile, ExtractFilePath(application.ExeName)+sCopy+ '\'+FormatDateTime('DD_hh.mm.ss', now)+ExtractFileName(sFile), False) then showmessage('Ошибка копирования файла'); end else showmessage('Ошибка создание каталога'); end else showmessage('Такого файла нет'); end; function sDir (sName: String): Boolean; begin if (DirectoryExists(sName)) then Result := True else if (CreateDir(sName)) then Result := True else Result := False; end;Хотел понтануться и сделать через (try), но сам запутался
![]()
16 2023-10-17 12:52:05
Re: Фильтрация + удаление записей (17 replies, posted in Russian)
Это удаление файла
а вот это, что у вас ?
sDeletedFile := SQLExecute('SELECT file_filename FROM files WHERE id='+NewRecords.TableGrid1.sqlValue); sDeletedFile := ExtractFileDir(Application.ExeName) + sDeletedFile;
Полный код такой:
begin
sDeletedFile := SQLExecute('SELECT file_filename FROM files WHERE id='+frmNewRecord.TableGrid1.sqlValue);
sDeletedFile := ExtractFileDir(Application.ExeName) + sDeletedFile;
files_backup := SQLExecute('SELECT fname FROM files WHERE id='+frmNewRecord.TableGrid1.sqlValue);
ShowMessage(sDeletedFile+' '+files_backup);
CopyFile(sDeletedFile, 'backup\'+FormatDateTime('yyyy', now)+'\'+files_backup);
end;
17 2023-10-17 12:25:23
Re: Фильтрация + удаление записей (17 replies, posted in Russian)
По событиям понятно, не пойму как вытащить имя файла что бы скопировать его... Пробовал копировать в текстовое поле при создании (сохранять в таблицу в отдельное поле) сохранять просто имя файла - ничего не срабатывает.
procedure frmNewRecord_Button9_OnClick (Sender: TObject; var Cancel: boolean);
begin
sDeletedFile := SQLExecute('SELECT file_filename FROM files WHERE id='+frmNewRecord.TableGrid1.sqlValue);
sDeletedFile := ExtractFileDir(Application.ExeName) + sDeletedFile;
files_backup := SQLExecute('SELECT fname FROM files WHERE id='+frmNewRecord.TableGrid1.sqlValue);
ShowMessage(sDeletedFile+' '+files_backup);
CopyFile(sDeletedFile, 'backup\'+FormatDateTime('yyyy', now)+'\'+files_backup);
end;
18 2023-10-17 11:51:25
Re: Фильтрация + удаление записей (17 replies, posted in Russian)
Добрый день, подскажите как можно сделать бэкап файлов с разными именами в другую папку перед удалением (т.к. они минуют корзину), которые сохраняются по определенному пути
19 2023-10-09 12:07:48
Re: Фильтрация + удаление записей (17 replies, posted in Russian)
Подскажу по предыдущей ошибке. В связи с изменением типа одно из полей таблицы files не должно записываться как NULL (Ограничение NOT NULL не выполнено).
Убрал - Обязательные поля и все нормально.
Спасибо огромное за помощь
20 2023-10-09 10:43:41
Re: Фильтрация + удаление записей (17 replies, posted in Russian)
3. Читаем внимательно
Поменял тип, получаю ошибку
21 2023-10-09 09:54:06
Re: Фильтрация + удаление записей (17 replies, posted in Russian)
Тоже думал, но так и не дошел до изменения.
поправил, один вопрос отпал
Спасибо большое
В MVD существует функция "NewRecord".
Вы называте так Форму и в дальнейшем используете это имя в скрипте.
Скрипт распознает это как функцию и есстественно указывает, что неправильные аргументы функции а не вашего запроса.
Переименуйте Форму и внесите изменения в скрипте.Аккуратнее надо быть с зарезервироваными словами которые есть в SQL, Паскале и MVD.
22 2023-10-09 08:55:04
Topic: Фильтрация + удаление записей (17 replies, posted in Russian)
Добрый день,
подскажите, пожалуйста 3 вопроса:
1) Есть кнопка удаление файла со скриптом:
procedure NewRecord_Button9_OnClick (Sender: string; var Cancel: boolean);
begin
sDeletedFile := SQLExecute('SELECT file_filename FROM files WHERE id='+NewRecord.TableGrid1.sqlValue);
sDeletedFile := ExtractFileDir(Application.ExeName) + sDeletedFile;
end;
Ругается на место sDeletedFile := SQLExecute('SELECT file_filename FROM files WHERE id='+NewRecord.TableGrid1.sqlValue); - Array type required.
Подскажите в чем может быть проблема
2) Есть 2 таблицы - Main и Files - (связь с Main) - Как настроить на 1 форме 2 таблицы, что бы при выделении MAIN отображались во второй все дочерние записи
3) Явное указание записи файлов в папку не работает - пытался повесить на кнопку при сохранении и при открытии формы - ничего не срабатывает
procedure AddFile_Button1_OnClick (Sender: TObject; var Cancel: boolean);
begin
AddFile.DBFile1.dbCopyTo:= 'Storage\'+FormatDateTime('yyyy', now);
end;
23 2020-03-24 09:59:46
Re: Что реализовать в первую очередь? (399 replies, posted in Russian)
Огромное спасибо! Век живи - век учись...дураком...))
andrey.yugay wrote:Доброго времени суток, можно вас попросить пример? Т.к. я никак не могу добиться что-бы панель опускалась ниже.
На примере трёх панелей. При клике по панели она "раскрывается", остальные "сворачиваются"
procedure Form1_Panel1_OnClick (Sender: TObject); begin Form1.Panel1.height := 30; Form1.Panel2.height := 30; Form1.Panel3.height := 30; TdbPanel(Sender).height := 200; end; procedure Form1_OnShow (Sender: TObject; Action: string); begin Form1.Panel1.align := alTop; Form1.Panel2.align := alTop; Form1.Panel3.align := alTop; Form1.Panel1.height := 30; Form1.Panel2.height := 30; Form1.Panel3.height := 30; end;
24 2020-03-24 08:18:32
Re: Что реализовать в первую очередь? (399 replies, posted in Russian)
Доброго времени суток, можно вас попросить пример? Т.к. я никак не могу добиться что-бы панель опускалась ниже.
заранее благодарю,
с ув. Андрей
andrey.yugay wrote:Да, примерно такое, но здесь у вас только меню (навигация, грубо говоря), я же говорю о комплексном... к примеру чтобы там еще можно было вставить элементы (эдиты, комбы и т.д) (пример в приложенном рисунке)
Это тоже относительно несложно: панели размещаются на родительской панели, затем программно устанавливается Align := alTop и пару скриптов для разворачивания/сворачивания (изменения высоты панели).
Красивый нестандартный интерфейс - это всегда искусство, на это никаких готовых компонент не напасёшься
25 2020-03-23 15:28:35
Re: Что реализовать в первую очередь? (399 replies, posted in Russian)
Да, примерно такое, но здесь у вас только меню (навигация, грубо говоря), я же говорю о комплексном... к примеру чтобы там еще можно было вставить элементы (эдиты, комбы и т.д) (пример в приложенном рисунке)
andrey.yugay wrote:Планируется ли реализация след:
Свернуть/Развернуть область; что-то наподобие панели, но с возможностью свернуть ее в плашку. соответственно нижний элемент при раскрытии опускается вниз, при сворачивании -вверх.Если речь о меню-"аккордеоне", то его можно реализовать программно:
Полное описание с проектом находится в статье: https://vk.com/@createmyvisualdatabaseapp-akkordeon