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

6,977

(3 replies, posted in Russian)

Скорей всего вам необходимо воспользоваться событием OnChange компонента TableGrid (где выводится результат поиска)

пример

procedure Form1_TableGrid1_OnChange (Sender: string);
begin
    if Form1.TableGrid1.RowCount = 0 then
    begin
        ShowMessage('Искомого значения найдено не было.');
    end;
end;

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


Вы пытаетесь писать данные запросы в вычисляемые поля?
если да, то это невозможно.

You should create event OnShow for Login form:

example:

procedure Form1_OnShow (Sender: string; Action: string);
begin
    Form1.Button1.Default := True;
end;

where Button1 is button for login.

6,980

(22 replies, posted in Russian)

В данном случае необходимо воспользоваться для поиска SQL запросом, пожалуйста, приложите ваш проект к сообщению (zip файл без exe и dll), реализую такой поиск в вашем проекте.

Nervis
Спасибо за идею, думаю будет полезно сделать эту возможность отключаемой.

6,982

(1 replies, posted in General)

Forms don't have identify for table, only components have identify which tables are associated.


for TableGrid is "dbGeneralTable"
for CompoBox is "dbForeignKey"
for others is "dbTable"

6,983

(8 replies, posted in General)

Please, download this example, how to enable footer by script.

6,984

(8 replies, posted in General)

You should to enable footer:

Form1.TableGrid1.Options := Form1.TableGrid1.Options + goFooter;

Nervis
Вам необходимо создать вычисляемое поле, в котором вы как бы повторите все необходимые выч. поля,


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

1.

(SELECT SUM(price) FROM tablename)

2.

(SELECT COUNT(quantity) FROM tablename)

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

((SELECT SUM(price) FROM tablename) * (SELECT COUNT(quantity) FROM tablename))

Забыл экранировать кавычки, исправленный вариант

procedure Form1_OnShow (Sender: string; Action: string);
var
    s: string;
begin
    s := SQLExecute('SELECT group_concat(lastname || '' '' || firstname, char(13)) FROM person WHERE strftime(''%d.%m'', birthday)=strftime(''%d.%m'', ''now'')');
    if s <>'' then
    begin
        ShowMessage( 'Сегодня день рождения:' + #13 +s );            
    end;
end;

6,987

(5 replies, posted in Russian)

Можно, но только через кнопку с действием "Отчет", в настройках данной кнопки можете выбрать, в каком формате экспортировать, в т.ч. и Open Office


Возможно будет проще сделать это через буфер обмена, нажмите правой кнопкой мыши по компоненту TableGrid и в меню выберите пункт "Скопировать все", затем попробуйте вставить в Open Office

6,988

(22 replies, posted in Russian)

исправил данные участки кода, просто заменил значение 1 на 0

procedure NovayaForma_bOk_OnAfterClick (Sender: string);
begin
    if NovayaForma.edCounter.Value > SQLExecute('SELECT IFNULL(maxcounter, 0) FROM maxcounter WHERE id=1') then
    begin
        SQLExecute('INSERT OR REPLACE INTO maxcounter (id, maxcounter) VALUES(1, '+NovayaForma.edCounter.Text+')');
    end;
end;
    if Action='NewRecord' then
    begin
        NovayaForma.edCounter.Value := SQLExecute('SELECT IFNULL(MAX(counter), 0) FROM Osnova')+1;
        if SQLExecute('SELECT IFNULL(maxcounter, 0) FROM maxcounter WHERE id=1') >= NovayaForma.edCounter.Value then
        begin
            NovayaForma.edCounter.Value := SQLExecute('SELECT IFNULL(maxcounter, 0) FROM maxcounter WHERE id=1') + 1;
        end;
    end;
............

6,989

(8 replies, posted in General)

rjkantor
Please, try this example, for multiselection used first column in TableGrid.
http://myvisualdatabase.com/forum/misc. … download=1

An another example, how to multiselect items like checkbox.
Download project:

6,991

(22 replies, posted in Russian)

да, можно и на кнопку.

6,992

(5 replies, posted in Russian)

Либо просто увеличьте ширину колонок в Excel документе.

6,993

(22 replies, posted in Russian)

Необходимо удалить записи, а также выполнить SQL запрос

SQLExecute('UPDATE maxcounter SET maxcounter=1 WHERE id=1');

Точно, ошибся, попробуйте так

procedure Form1_OnShow (Sender: string; Action: string);
var
    s: string;
begin
    s := SQLExecute('SELECT group_concat(lastname || '' '' || firstname, char(13)) FROM person WHERE strftime('%d.%m', birthday)=strftime('%d.%m', ''now'')');
    if s <>'' then
    begin
        ShowMessage( 'Сегодня день рождения:' + #13 +s );
    end;
end;

6,995

(8 replies, posted in General)

You can only delete multiple records, example:
http://myvisualdatabase.com/forum/viewtopic.php?id=1433

Попробуйте так

procedure Form1_OnShow (Sender: string; Action: string);
var
    s: string;
begin
    s := SQLExecute('SELECT group_concat(lastname || '' '' || firstname, char(13)) FROM person WHERE date(birthday)=date(''now'')');
    if s <>'' then
    begin
        ShowMessage( 'Сегодня день рождения:' + #13 +s );
    end;
end;

выведет список имен и фамилий.

6,997

(3 replies, posted in Russian)

можно, здесь можете скачать проект с примером
http://myvisualdatabase.com/forum/viewtopic.php?id=1061

6,998

(22 replies, posted in Russian)

Пришлось все таки по другому реализовать

6,999

(22 replies, posted in Russian)

Пришлите пожалуйста свой проект на support@drive-software.com

7,000

(20 replies, posted in Russian)

к сожалению я не могу исправить ваш проект, это займет много времени.