abgroup-artur wrote:

Добрый день. Подскажите Как напечатать диаграмму Ганта сформированную в TreeView. Спасибо

Вам потребуется отчёт, в котором с помощью скрипта подгружается изображение. Для получения изображения разместите TdbTreeView на панели (TdbPanel) и скопируйте изображение с канвы в TImage, затем сохраните изображение в файл.

1,002

(6 replies, posted in Russian)

vovka3003 wrote:
sibprogsistem wrote:

..как программно задать главную форму?..

..что бы изменения в forms.xml не повлияли определение главной формы..

А точнее?

Могу предположить, что нужна не сама главная форма, а доступ к компонентам соединения с базой и генератора отчётов вне зависимости от того, какая форма в проекте является главной.

1,003

(6 replies, posted in Russian)

sibprogsistem wrote:

как программно задать главную форму?

Никак. Программно можно определить, какая форма является главной и присвоить это значение переменной. И в коде работать с этой переменной.

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


Это только мне так казалось или раньше комбики сами обновлялись? Версия 6.5.

1,005

(1 replies, posted in Russian)

в программе ни одного комментария.... попробуйте их написать и ошибка станет видней )))

1,006

(5 replies, posted in Talks about all)

Довольно туманная тема.... Речь идёт о MySQL и шифровании таблиц InnoBD?  Или о доп.библиотеках для SQLite?

1,007

(0 replies, posted in Russian)

При добавлении обработчика события onChage перестаёт работать свойство ParentCombobox.

konstantin wrote:

Можно ли дописать в

Form.Components[i] 

возможность обращаться к свойству Enabled?


Нет. Класс TComponent не имеет свойства Enabled   Используйте приведение классов, как показал sibprogsistem, но добавьте проверку:

if Form1.Components[i]) is TdbLabel then
  TdbLabel(Form1.Components[i]).Enabled:=True;

Могу предложить пару вариантов:


Этот вариант вернет или значение из поля frm, или заранее указанное значение, если запись не будет найдена. Из минусов - выборка будет по всей таблице.

select distinct
(case 
when ( select count(*) from color where id = 1 ) = 0 then '$00C08000'
else ( select frm from color where id = 1 )
end ) as ColorValue
from color

Этот вариант лучше по производительности, но в последнем условии нужно указать ID существующей записи.

select
(case 
when ( select count(*) from color where id = 1 ) = 0 then '$00C08000'
else ( select frm from color where id = 1 )
end ) as ColorValue
from color where id = x

Кстати, последняя строка в обоих примерах может содержать обращение к любой таблице. Если у вас есть таблица с одной записью ( какой -нибудь config ), то она идеально подойдет.

1,010

(5 replies, posted in Russian)

vovka3003 wrote:

ТС же ж не программист... )

Это только сначала. А потом - или пан, или пропал )))

1,011

(5 replies, posted in Russian)

Используйте класс TCSV для построчного доступа к файлу, а дальше парсите каждую строку.


Для разделения полей, судя по картинке, используется символ табуляции chr(9) - SplitString вам в помощь..В угловых скобках теги, которые, судя по картинке вам не нужны - удаляйте их ( тут помогут pos() и delete() ). 


После того, как данные по строке разобраны, вставляете их в базу SQL-командой  INSERT.

Модульное программирование в My Visual Database


https://1.bp.blogspot.com/-VInz9_ZzhWk/YHVd6fJVWiI/AAAAAAAAGCg/ETBXA0yCZ6EtNjnetlOCmD82eq3bxm5uQCLcBGAsYHQ/w400-h400/%25D0%25BF%25D0%25B0%25D0%25B7%25D0%25BB.jpg


Когда ваш проект вырастает, то редактирование скриптов во встроенном редакторе My Visual Database перестаёт быть комфортным. Сворачивание процедур уже не помогает - оно перестаёт работать, если число строк стало больше тысячи. Очевидным решением становится разбиение исходников на отдельные модули, которые подключаются к проекту в секции uses.


К сожалению, встроенный редактор My Visual Database не поддерживает редактирование нескольких файлов одного проекта, поэтому необходим дополнительный редактор.


https://createmyvisualdatabaseapp.blogs … abase.html

Вызов процедуры без собачки, но с параметрами, которые требуются для её выполнения:

// процедура - обработчик события
procedure frmPrint_OnShow (Sender: TObject; Action: string);
begin
......
end;

// процедура
procedure PrintData (AData:string);
begin
......
end;

...

// вызов процедур
PrintData('Привет');
...
frmPrint_OnShow (frmPrint, '');

Если вы напишите вызов процедур в нижнем блоке  begin end. то вызов произойдёт сразу после создания форм приложения, до запуска главной формы. Но обычно вызовы процедур и функций выполняются в обработчике каких-либо событий (нажатие кнопки, клик мышкой, срабатывание таймера и т.д.).

1,014

(3 replies, posted in Russian)

Стандартная кнопка всегда заполняет одну вкладку в Excel. Если нужно что-то другое (работать с несколькими вкладками, форматировать ячейки и т.д.) придется использовать OLE.

Описание свойств и методов Excel есть на сайте Microsoft (там, правда, все примеры для Visual Basic, но главное - названия все есть)..

Временные таблицы тут не нужны, нужен запрос:

select 
  res.id,
  p.model,
  res.date,
  res.res
from res
left join print p on p.id = res.id_print
where 
  res.res = (select max(res) 
             from res r 
             where (r.id_print = res.id_print) and (r.id_priznak = 1) )

По вашей базе он выдает такой результат:


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

Действительно, странное поведение... попробовал поставить свойства

Currency := True
Accuracy := 4

В результате при присвоении значения

Value := 1/1000000;

Отображается как  16.0000


В качестве костыля могу предложить использовать  DecimalRoundExt();

Value := DecimalRoundExt(1/1000000,4);

Отображается корректно:  0.0000

1,017

(3 replies, posted in Russian)

vovka3003 wrote:

По всей видимости это работает только при наличии реальных данных (записанных в БД)


Да, так и есть, но в документации об этом не сказано.  Самое странное, что в компоненте TdbTreeView, который является наследником TdbStringGridEx, подобная ошибка отсутствует: методы вставки дочернего узла не вызывают нарушения работы свойства RowVisible.


Хочу пояснить, что данная ошибка была обнаружена при попытке избежать написания хранимой процедуры. Создание хранимых процедур - деликатный процесс, требующий хорошего знания SQL, и мне подумалось, что можно и без них обойтись, если реализовать часть функционала на клиенте. Но не тут-то было: гибрид оказался хромым и косым.


Итоги - нет худа без добра:.благодаря этой ошибке я разобрался с написанием хранимых процедур, временных таблиц и других премудростей MySQL.

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

1,018

(3 replies, posted in Russian)

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

1,019

(3 replies, posted in Russian)

1. Добавляем строку в таблицу методом InsertRow()
2. Пытаемся поменять видимость данной строки через свойство RowVisible[]
3. Получаем ошибку

procedure Form1_Button2_OnClick (Sender: TObject; var Cancel: boolean);
var
  i: integer;
begin
  Form1.TableGrid1.InsertRow( Form1.TableGrid1.RowCount );
  i := Form1.TableGrid1.RowCount - 1;
  Form1.TableGrid1.Cells[0,i] := 'Ntc';
end;

procedure Form1_Button3_OnClick (Sender: TObject; var Cancel: boolean);
begin
  Form1.TableGrid1.RowVisible[0] := False;
end;
konstruktor wrote:

тут по сути проблема не с программой, а с базой. Файл базы блокируется и-за какого-то подвисшего компа , и другие не могут уже к базе обращаться. Появляется сообщение  'base is locked' .

Переходите на MySQL

Это конфликт вашей реализации логики работы интерфейса и предполагаемой архитектурой приложения с точки зрения My Visual Database. smile


Судя по всему это у вас форма редактирования. (но я как пользователь был бы недоволен отсутствием видимых кнопок "Сохранить" и "Отмена" - непонятно, в какой момент подтверждается продажа и как её отменить )


Так вот, когда вы вызываете отчет с формы редактирования, то, если запись не была сохранена, MVD пытается её сохранить (это момент отменить или изменить не получится) А у вас в логике сохранения (по цепочке кликов) прописано, что при сохранении нужно добавить ещё товар. Вот и открывается форма добавления товара.


procedure Prodaja_Button2_OnAfterClick (Sender: string);
begin
   Prodaja.Button3.Click();
end;

procedure Prodaja_Button3_OnAfterClick (Sender: string);
begin
   Prodaja.TableGrid1.SelectedRow := 0;
   Prodaja.Button4.Click();
end;

P.S. Формы редактирования с детализацией при всей их внешней привлекательности - тот ещё геморрой...
P.S.P.S. Дайте кнопкам понятные имена - это поможет вам в дальнейшем находить ошибки быстрей.

1,022

(2 replies, posted in Russian)

Отчет вам все равно придется создавать кнопкой. Вы можете сделать её невидимой, а в обработчике клика по метке (Label) вызвать метод кнопки Click;

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

BBDragon wrote:

Добрый день, уважаемые коллеги)
Делаю небольшую БД для кадровика, посоветовали использовать MVDB, удобная штука! Для удобства восприятия разбил данные по людям на несколько таблиц - Man (основные личные данные), Characteristics (навыки, умения, достижения и т.п.), Education (данные по образованию) и Work (по прошлым работам). Данные в таблицу Man сохраняются нормально, а вот в Characteristics уже нет, отсутствует персональная привязка к человеку. Связь с таблицей Man вроде бы настроена, есть поле id_Man. Однако при открытии формы frmCharacteristics выходят все записи этой таблицы, без привязки к конкретному человеку, а если я в настройках TableGrid ставлю галочку на "Показывать дочерние записи", то вообще ничего не выходит.  Как правильно настроить эту привязку?

Что это у вас за форма на картинке? Форма просмотра табличных данных с фильтрами? Но зачем тогда кнопка "Сохранить"?  Или это форма редактирования с детализацией?


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

BBDragon wrote:

P.S. Администратор, нельзя ли разрешить выкладывать ссылки на скриншоты или хотя бы прикреплять их? Я приложил главный скрин, но было бы лучше все 4, а то одним сложно пояснить всю ситуацию.

Ссылки выкладываются легко:

Вот, например, ссылка на вашу картинку:

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

Или любую другую:

http://i.mycdn.me/i?r=AzEPZsRbOZEKgBhR0XGMT1RkyxgvXHzhbcOeMcxWY2AiDKaKTM5SRkZCeTgDn6uOyic

Делается это так:


1. Вставили ссылку
2. Выделили ссылку
3. Нажали кнопочку "img"


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