3,376

(7 replies, posted in Russian)

Создайте событие OnAfterClick для кнопки с действием "Сохранить запись", в данном событии вы можете получить id записи, которая была сохранена и произвети необходимый импорт, пример

procedure Form2_ButtonSave_OnAfterClick (Sender: string);
begin
    Form2.ButtonSave.dbGeneralTableId; // id созданной записи в данном свойстве
end;

3,377

(6 replies, posted in Russian)

Есть готовый пример с оповещение о добавлении новой записи, но без пользователей.

3,378

(7 replies, posted in Russian)

scorpirus wrote:

Спасибо Дмитрий за ответ.

Вопрос по теме,который заинтересует не только меня.

Есть пример базы: https://cloud.mail.ru/public/KyuR/4753B8ySx

Нужны скрипты
1.На удаление файла(ов) из поддиректории,пример: ВАСИЛИЙ\09.05.2017 - 00час 37мин\Koala.jpeg
2.На удаление поддиректории,пример: ВАСИЛИЙ\09.05.2017 - 00час 37мин
3.На удаление самой директории вместе с поддиректорией и файлом(и)

Если не затруднит,можно каждому пункту отдельный скрипт?


Скачайте пожалуйста последнюю бета версию, добавил функцию для получения поддиректорий в директории
https://www.dropbox.com/s/4sb2tk75rauoj … b.zip?dl=0


1. DeleteFile('имя файла для удаления');
2. RemoveDir('имя директории для удаления'); // удаляет директорию если в ней нет файлов
3. Для удаления директории с поддиректориями и файлами используйте данный скрипт

function DeleteDirWithFiles(dir: string): boolean;
var
    sl: TStringList;
    i,c: integer;
begin
    result := True;
    sl := TStringList.Create;
    sl.Text := GetFilesList(dir);

    // удаляем все файлы
    c := sl.Count-1;
    for i := 0 to c do
        if not DeleteFile(sl[i]) then
        begin
            ShowMessage('Can''t remove file '+sl[i]);
            result := False;
        end;

    // удаляем поддиректории
    sl.Text := GetDirectories(dir);
    c := sl.Count-1;
    for i := c downto 0 do
        if not RemoveDir(sl[i]) then
        begin
            ShowMessage('Can''t remove dirercory '+sl[i]);
            result := False;
        end;

    // удаляем директорию
    RemoveDir(dir);
    sl.Free;
end;

пример использования

procedure Form1_Button4_OnClick (Sender: string; var Cancel: boolean);
var
    sDir: string;
begin
    sDir := ExtractFilePath(Application.ExeName)+'ВАСИЛИЙ\';

    if not DeleteDirWithFiles(sDir) then
        ShowMessage('Can''t remove directory');
end;

3,379

(6 replies, posted in Script)

You can do it using a script

procedure Form1_TableGrid1_OnChange (Sender: string);
begin
    Form1.TableGrid1.Columns[0].Options :=Form1.TableGrid1.Columns[0].Options - coShowTextFitHint; // for first column
    Form1.TableGrid1.Columns[1].Options :=Form1.TableGrid1.Columns[1].Options - coShowTextFitHint; // for second column
end;

3,380

(1 replies, posted in Russian)

Здравствуйте.


Можно, для этого у каждой ячейки есть свойство FontStye, пример

выделить жирным

Form1.TableGrid1.Cell[0,0].FontStyle :=  fsBold;

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

Form1.TableGrid1.Cell[0,0].FontStyle := fsUnderline + fsBold + fsItalic + fsStrikeOut;

3,381

(20 replies, posted in Russian)

jonibek wrote:

Уважаемы Дмитрий.
Как в подвале грида сделать надпись по центру?

procedure Form1_TableGrid1_OnChange (Sender: string);
begin
     Form1.TableGrid1.Columns[0].Footer.Alignment := taRightJustify; // справа
     Form1.TableGrid1.Columns[0].Footer.Alignment := taCenter; // по центру
end;

3,382

(9 replies, posted in Script)

derek
I have tested your project from first post using v3.4b but there is no any error messages.
Please attach your project and describe steps to reproduce the error.

3,383

(2 replies, posted in General)

Hello.


You can change value of field using calculated field, example:

CASE WHEN Monday=1 then 'Mo' else '' end

3,384

(5 replies, posted in General)

Hello.


I have added these functions (ParamStr and ParamCount). Please download latest beta version
https://www.dropbox.com/s/4sb2tk75rauoj … b.zip?dl=0

3,385

(3 replies, posted in SQL queries)

teco049 wrote:

Dear Dimitry,
thank you for the information.
Does this work only for datasets or also for single values/variable?
The attached demo shows how to work with different datasets which means results of SQL Queries.
Thank you.

Another example for you

3,386

(7 replies, posted in Russian)

Скачайте пожалуйста последнюю бета версию, добавил в отчеты функцию ReplaceStr
https://www.dropbox.com/s/4sb2tk75rauoj … b.zip?dl=0


Также удалите это событие в вашем проекте, оно сильно замедляет прорисовку грида

procedure frmOrder_GridOrder_OnColumnResize (Sender: string; ACol: Integer);
begin
    frmOrder_GridOrder_OnChange ('');
end;


Проект отправил на почту.

3,387

(6 replies, posted in Russian)

Здравствуйте.


Можно, но я могу помочь только с решением конкретных вопросов.

3,388

(7 replies, posted in Russian)

Пожалуйста укажите, где именно отчет в проекте? (имя формы и кнопки)

Можно, поместите на форму кнопку с действием "SQL запрос"

SELECT
strftime('%d.%m.%Y', einnahmen.datum),  
einnahmen.summe
FROM einnahmen

UNION ALL

SELECT   
strftime('%d.%m.%Y', ausgaben.datum), 
ausgaben.summe   
FROM ausgaben  

3,390

(2 replies, posted in General)

Hello.


Unfortunately no. If you want access over Internet, you should use MySQL DBMS.

3,391

(3 replies, posted in SQL queries)

Hello.


You can use variables if you create report by script, an example:

3,392

(7 replies, posted in Russian)

Думаю можно в отчете написать небольшой скрипт, который уберет переносы строк, приложите пожалуйста ваш проект.

3,393

(4 replies, posted in General)

mathmathou
It's possible only with using component TImageList, planned.

easyterm
Отправил.

3,395

(3 replies, posted in General)

Hello.


Yes, it's a bug. Fixed, please download latest beta version:
https://www.dropbox.com/s/4sb2tk75rauoj … b.zip?dl=0



Thank you for the project.



Also, in this procedure

procedure Form1_tgMainCustomers_OnCellClick (Sender: string; ACol, ARow: Integer);
begin
  //Form1.Label8.Caption := SQLExecute(('SELECT name FROM Customer WHERE id=')+('SELECT surname FROM Customer WHERE id=')+inttostr(form1.tgMainCustomers.dbitemid));

  Form1.btnCustTransSearch.Click;
end;

You should remove this line

Form1.btnCustTransSearch.Click;

Otherwise the query will be executed twice

3,396

(5 replies, posted in Russian)

вместо

CAST (trim(substr(replace(counter, '-', '     '), 1, 4)) AS INTEGER) DESC

используйте

CAST(SUBSTRING_INDEX(`counter`, '-', 1) AS UNSIGNED) DESC


попробуйте кстати убрать данную сортировку, возможно именно она вызывает медленную работу с SQLite

domebil wrote:

I have to do statistics by name by selecting conbobox1
Attached to the project

Hello.


Check it out.

3,398

(5 replies, posted in Russian)

Опишите пожалуйста, в чем суть данной сортировки?

Jorge wrote:

Спасибо, теперь все в порядке.
А скидок на новые версии нет никаких для тех, у кого старая лицензия?
Интересует с минорными обновлениями и с пожизненной лицензией.

Скидки есть, отправил вам информацию на e-mail.

необходимо использовать функцию strftime для форматирования даты

SELECT

strftime('%d.%m.%Y', workorder.adatum),
workorder.azahlungen

FROM workorder

WHERE

adatum >= {dtFrom} AND adatum <= {dtTo};

Данный поиск вы можете реализовать без использования SQL запроса, просто используйте кнопку с действием "Поиск"