9,251

(4 replies, posted in General)

Hello,


Action SHOW FORM just shows the form, this action does not clear the form.
Why in this example, you want to clean TableGrid?


But if you need that, you can use script, where you should create event OnShow of form gestPers, and clear manually.

procedure gestPers_OnShow (Sender: string; Action: string);
begin
     gestPers.TableGrid1.ClearRows;
end;

Поправил

Приветствую,


на форме добавления/редактирования записи необходимо расположить компонент Counter, но скрыть его, например поместить за пределами формы, а идентификатор будет формироваться с помощью скрипта в другом компоненте TextBox


используется событие OnShow для формы добавления/редактирования записи

procedure frmEmployee_OnShow (Sender: string; Action: string);
var
   s, s0: string;
   i,c: integer;
begin
     s0 := '';
     s := frmEmployee.EditCounter1.Text;
     c := Length(s);
     c := 6-c; // 6 - qty of zero
     for i := 1 to c do s0 := s0 + '0';
     frmEmployee.edCounter.Text := s0+s;
end;

сделал для вас проект с данной реализацией.

Готово

напишите на вкладке Скрипт данный код

begin
     Form1.TableGrid1.InactiveSelectionColor := clRed;
end.

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


Для того, чтобы указать произвольный цвет, можно воспользоваться шестнадцетиричным числом
пример: Form1.TableGrid1.InactiveSelectionColor := $00DDEEFF;


Список текстовых обозначений цвета:
clBlack Чёрный
clMaroon Тёмно-красный
clGreen Зелёный
clOlive Оливковый
clNavy Тёмно-синий
clPurple Пурпурный
clTeal Стальной
clGray Серый
clSilver Серебряный
clRed Красный
clLime Ярко-зелёный
clYellow Жёлтый
clBlue Синий
clFuchsia Фиолетовый
clAqua Бирюзовый
clWhite Белый


Список системных цветов, определяются настройками стиля Windows:
clActiveBorder
clActiveCaption
clAppWorkSpace
clBackground
clBtnFace
clBtnHighlight
clBtnShadow
clBtnText
clCaptionText
clGradientActiveCaption
clGradientInactiveCaption
clGrayText
clHighlight
clHighlightText
clHotLight
clInactiveBorder
clInactiveCaption
clInactiveCaptionText
clInfoBk
clInfoText
clMenu
clMenuBar
clMenuHighlight
clMenuText
clScrollBar
cl3DDkShadow
cl3DLight
clWindow
clWindowFrame
clWindowText

Приветствую,


к сожалению в текущей версии это сделать не получится, а с чем связана данная необходимость?

SELECT
*
FROM person
WHERE
(firstname LIKE '%{edFirstName}%') OR
(lastname LIKE '%{edFirstName}%')  OR
(login LIKE '%{edFirstName}%') OR
([@mail] LIKE '%{edFirstName}%') OR
(record_count LIKE '%{edFirstName}%') 
;

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

serg
скопируйте данный SQL запрос в кнопку Поиск


SELECT
*
FROM person
WHERE
(firstname LIKE '%{edFirstName}%') OR
(lastname LIKE '%{edFirstName}%')  OR
(login LIKE '%{edFirstName}%') OR
([@mail] LIKE '%{edFirstName}%');

9,259

(4 replies, posted in Reports)

Hello,


I can offer only a bit strange solution, example:

SELECT
fieldnumber
FROM tablename
ORDER BY
CAST (trim(substr(replace(fieldnumber, '.', '     '), 1, 3)) AS INTEGER),
CAST (trim(substr(replace(fieldnumber, '.', '     '), 7, 5)) AS INTEGER),
CAST (trim(substr(replace(fieldnumber, '.', '     '), 12)) AS INTEGER);

It's work with values from x.x.x to xxx.xxx.xxx

Приветствую,


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


например поиск по двум таблицам, используя UNION:

SELECT 
field1, 
field2, 
field3 
FROM table 1 
WHERE (field1 LIKE '%search%') OR (field1 LIKE '%search%')  OR (field1 LIKE '%search%') 

UNION

SELECT 
field1, 
field2, 
field3 
FROM table 2
WHERE (field1 LIKE '%search%') OR (field1 LIKE '%search%')  OR (field1 LIKE '%search%') 

т.о. можно искать по всем таблицам в базе
но имейте ввиду, что каждый запрос должен иметь одинаковое количество полей в предложении SELECT


более подробно о предложении UNION можно прочитать здесь
http://www.sql.ru/docs/sql/u_sql/ch14.shtml

9,261

(9 replies, posted in Russian)

Dreada
Скачайте пожалуйста еще раз, скорей всего я уже исправил эту ошибку, дайте знать результат
http://myvisualdatabase.com/download/myvisualdb.exe

9,262

(9 replies, posted in Russian)

savage
если в скрипте будет синтаксическая ошибка, то программа укажет где именно она находится.

majuten

Please, download beta version 1.44
https://www.dropbox.com/s/2phoggh5kfu88 … 4.zip?dl=0


for component TableGrid added event OnChange for it.


Please, download example project.

9,264

(14 replies, posted in Russian)

Скачать бета версию 1.44 можете здесь
https://www.dropbox.com/s/2phoggh5kfu88 … 4.zip?dl=0


Что нового?


- Для компонента TableGrid добавлено событие OnChange (26.08.2014)

Срабатывает, когда в компоненте изменились данные
Например после того, как был выведен результат поиска, либо удалена запись и т.д.


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


пример:

procedure Form1_TableGrid1_OnChange (Sender: string);
var
    i,c: integer;
begin
    c := Form1.TableGrid1.RowCount - 1;
    for i := 0 to c do
    begin
         if Form1.TableGrid1.Cells[3,i] = 'Да' then Form1.TableGrid1.Cell[3,i].Color := clRed;
         if Form1.TableGrid1.Cells[3,i] = 'Нет' then Form1.TableGrid1.Cell[3,i].Color := clGreen;
    end;
end;



- Добавлена функция для скрипта, позволяющая открыть файл из базы (08.09.2014)
пример

var
   s: string;
begin
     s := SaveFileFromDataBase('person', 'file', Form1.GridAbonent.dbItemID); // возвращает путь и имя файла, сохраненного в папку Temp
     OpenFile(s); // открываем файл
end;

проект, с примером реализации:
http://myvisualdatabase.com/forum/misc. … download=1




- Добавлены методы BeginUpdate и EndUpdate для компонента TableGrid (08.09.2014)
Служит для увеличения скорости при разукрашивании ячеек компонента.
пример

procedure Form1_TableGrid1_OnChange (Sender: string);
var
   i,c: integer;
begin
   Form1.TableGrid1.BeginUpdate;    
   c := Form1.TableGrid1.RowCount - 1;
   for i := 0 to c do
   begin
      if Form1.TableGrid1.Cells[3,i] = 'Yes' then Form1.TableGrid1.Cell[3,i].Color := clRed;
      if Form1.TableGrid1.Cells[3,i] = 'No' then Form1.TableGrid1.Cell[3,i].Color := clGreen;
   end;
   Form1.TableGrid1.EndUpdate;
end;


- Добавлена возможность для скрипта обратиться к подвалу компонента TableGrid (11.09.2014)
пример

 Form1.TableGrid1.Options := Form1.TableGrid1.Options + goFooter; // активируем подвал
 Form1.TableGrid1.Columns[0].Footer.Caption := 'Привет из подвала';



- Добавлена возможность для компонента DateTimePicker искать только по месяцу и году (11.09.2014)
для ее активирования, в свойстве Kind выберите MonthYear




- Добавлена функция для скрипта, получающая список файлов в указанной папке (13.09.2014)
пример ее использования, для добавления списка файлов в базу данных

procedure Form1_Button1_OnClick (Sender: string; var Cancel: boolean);
var
   SL: TStringList;
   i,c: integer;
begin
   SL := TStringList.Create; // создаем объект списка
   SL.Text := GetFilesList('d:\music');  // получаем все файлы папки music

   c := SL.count - 1; // узнаем количество найденых файлов
  
   for i :=0 to c do // цикл, где перебираем имя каждого файла и добавляем его в базу
      SQLExecute ('INSERT INTO music (musicfile) VALUES ("' + SL[i] + '")');
   
  SL.Free;
end;

9,265

(7 replies, posted in General)

Thank you for the help! Fixed.
You can download again version 1.43
http://myvisualdatabase.com/download/myvisualdb.exe

9,266

(11 replies, posted in Russian)

К сожалению у меня нет времени сделать примеры на все случаи жизни, и ваша просьба не очень простая.
Но идея хорошая, возможно в будущем реализую некий универсальный компонент для встраивания планировщика.

9,267

(237 replies, posted in Russian)

CrazyWetEr
Когда форма выходит за пределы конструктора, и компоненты смещаются, это баг, которому пока не нашел решения.

9,268

(2 replies, posted in Russian)

Приветствую,


у компонента TextBox есть свойство Filter, выберите значение %s%

Приветствую,


Спасибо, что нашли ошибку, исправил, пожалуйста скачайте бета версию 1.43 еще раз
https://www.dropbox.com/s/4qdlk4pouldrz … 201.43.zip

9,270

(9 replies, posted in Russian)

Pavel
Приветствую,


Просто откройте проект в версии 1.43 и запустите.
Данные потеряны не будут, но как я написал выше, весь русский текст набитый в базу прошлой версией, будет заглавными буквами, кроме тех полей, которые были прописаны в [DisableUpperCase].

Добрый день )


Сама  база  данных  sqlite  поддерживает  механизм предотвращения ввода одинаковых значений,  но  у  меня в программе  она  пока  не  реализована,  поэтому  можете  включить  эту возможность например через SQLite Studio, где необходимо зайти в режим редактирования  структуры  базы  данных  и поставить галочку на против пункта "Уникальность" в нужных полях БД.


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




В вашем случае это придется реализовать с помощью скрипта, создав событие OnClick на кнопке сохранения

procedure Form1_Button1_OnClick (Sender: string; var Cancel: boolean);
begin
    if StrToInt(VarToStr(SQLExecute ('SELECT count(*) from users WHERE firstname="' + Form1.edFirstname.Text + '" AND 'lastname = "' +  Form1.edLastname.Text + '" ))) > 0 then 
  begin
    ShowMessage('Такой пользователь уже есть');
    Cancel := True;
  end;
end;

код писал прямо здесь, не проверял )




Словарь, это такие таблицы, которые обычно заполняются первыми, перед использование базы данных и в дальнейшем не редактируются, например таблицы со Странами, Пол, Статус, Группа

9,272

(5 replies, posted in General)

jean.brezhonek
Please, send me your project to support@drive-software.com



But, what you are trying to do is against the second normal form (2nf)
http://en.wikipedia.org/wiki/Second_normal_form

9,273

(5 replies, posted in General)

jean.brezhonek

I don't see your joined file )

savage

я вам на почту скинул исправленный вариант.

исправьте UpdateDatabase(users: string);  на UpdateDatabase('users');

savage

Дело  в  том, что во время добавления записи в базу данных посредством SQL  запроса  (INSERT  INTO),  визуальные  компоненты не могут об этом ничего  знать, поэтому не обновляют свои значения новыми записями. Для решения  этой  проблемы  сделал  процедуру  UpdateDatabase(TableName: string), которую необходимо вызвать после функции SQLExecute


Скачайте  еще  раз  бета  версию  1.43,  в  которой  я  добавил данную процедуру
https://www.dropbox.com/s/4qdlk4pouldrz … 201.43.zip