Topic: Переменная в фильтре таблицы

возможно ли сделать переменную в фильтре таблицы по типу
(id_mirrow="'+idMirrow+'") ? или это как то нужно прописывать в самом скрипте а не в фильтре?

2 (edited by sibprogsistem 2019-10-30 12:12:28)

Re: Переменная в фильтре таблицы

agatlogic101 wrote:

возможно ли сделать переменную в фильтре таблицы по типу
(id_mirrow="'+idMirrow+'") ? или это как то нужно прописывать в самом скрипте а не в фильтре?

var
idMirrow: string = IntToStr(Form1.ComboBox1.dbItemID);
begin
Form1.Tablegrid1.dbFilter:='id_mirrow="'+idMirrow+'"';
end;

Re: Переменная в фильтре таблицы

Спасибо

4 (edited by agatlogic101 2019-10-30 12:23:12)

Re: Переменная в фильтре таблицы

Часто замечал случай когда открываешь программу на форме в первый раз, скрипт  не подтягивается и в таблице полная каша, закрываешь форму, открываешь повторно и больше такой ошибки не будет до того пока опять программу не перезапустишь. С этим как то можно бороться? В нескольких проектах замечал

5 (edited by sibprogsistem 2019-10-30 12:28:46)

Re: Переменная в фильтре таблицы

взможно таблица не обновляется

попробуйте в свойство  OnShow нужной Вам  формы
добавить это


Form1.Tablegrid1.dbUpdate;

Re: Переменная в фильтре таблицы

sibprogsistem wrote:
agatlogic101 wrote:

возможно ли сделать переменную в фильтре таблицы по типу
(id_mirrow="'+idMirrow+'") ? или это как то нужно прописывать в самом скрипте а не в фильтре?

var
idMirrow: string = IntToStr(Form1.ComboBox1.dbItemID);
begin
Form1.Tablegrid1.dbFilter:='id_mirrow="'+idMirrow+'"';
end;

Я так понимаю где то нужен IFNULL? В случае если id = 0 возникает ошибка и форма с таблицей не открывается

Re: Переменная в фильтре таблицы

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

var
idMirrow: string = IntToStr(Form1.ComboBox1.dbItemID);
begin
if (Form1.ComboBox1.dbItemID <>-1) then Form1.Tablegrid1.dbFilter:='id_mirrow="'+idMirrow+'"';
end;

8 (edited by agatlogic101 2019-10-30 12:47:18)

Re: Переменная в фильтре таблицы

нет не работает, у меня ид берётся из таблицы, у которой переменная берётся из её связи. есть ли какой то вариант подобной записи?
if (idMirrow > 0) then люди.Tablegrid3.dbFilter:='id_mirrow="'+idMirrow+'"';

Re: Переменная в фильтре таблицы

agatlogic101 wrote:

нет не работает, у меня ид берётся из таблицы, у которой переменная берётся из её связи. есть ли какой то вариант подобной записи?
if (idMirrow > 0) then люди.Tablegrid3.dbFilter:='id_mirrow="'+idMirrow+'"';

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

10 (edited by agatlogic101 2019-10-30 13:03:24)

Re: Переменная в фильтре таблицы

Я упрощу вопрос, так будет проще.
Есть строка
idMirrow := SQLExecute('SELECT id_mirrow FROM people WHERE id='+ Form1.TableGrid2.sqlValue );
как сделать так, что если он обращается к этой таблице и видит что id_mirrow  = 0, то бы он не ругался, а помещал этот 0 или какое то значение в idMirrow  (исходя из строчки выше) А дальше бы уже тот скрипт который вы написали бы срабатывал, видел что ида нет, и показывал бы просто пустую таблицу. Я так понимаю тут нужен IFNULL как то поставить

11 (edited by agatlogic101 2019-10-30 13:09:10)

Re: Переменная в фильтре таблицы

то есть программа ругается когда id_mirrow  из строчки = 0
idMirrow := SQLExecute('SELECT id_mirrow FROM people WHERE id='+ Form1.TableGrid2.sqlValue );

Re: Переменная в фильтре таблицы

а ну Вы и так все написали сами

var
idMirrow: string;
begin
idMirrow := SQLExecute('SELECT id_mirrow FROM people WHERE id='+ Form1.TableGrid2.sqlValue );
if (idMirrow <> '0') then люди.Tablegrid3.dbFilter:='id_mirrow="'+idMirrow+'"';
люди.Tablegrid3.dbUpdate;
end;

в случае .sqlValue   будет строковый ответ, потому нужно использовать переменную типа string, но (idMirrow <> '0') можно будет проверить только на равняется или не равняется..

13 (edited by agatlogic101 2019-10-30 13:16:32)

Re: Переменная в фильтре таблицы

Да... только при клике по таблице когда этот idMirrow выесняется, и когда запись там пуста, то возникает ошибка
Could not convert variant of type (Null) into type (OleStr) Которую я понимаю можно решить если просто запретить сточку
idMirrow := SQLExecute('SELECT id_mirrow FROM people WHERE id='+ Form1.TableGrid2.sqlValue ); если id_mirrow  = 0, или подставлять заранее этот 0, если понятно чо id_mirrow  = 0, что бы этой ошибки не было
то есть программа ругается когда id_mirrow  из строчки = 0 в тот момент когда она его пытается выяснить
idMirrow := SQLExecute('SELECT id_mirrow FROM people WHERE id='+ Form1.TableGrid2.sqlValue );

Re: Переменная в фильтре таблицы

можно добавить условие

if (idMirrow <> '0') AND (idMirrow <> '') then люди.Tablegrid3.dbFilter:='id_mirrow="'+idMirrow+'"';

15 (edited by agatlogic101 2019-10-30 14:57:27)

Re: Переменная в фильтре таблицы

idMirrow := SQLExecute('SELECT id_mirrow FROM people WHERE id='+ Form1.TableGrid2.sqlValue );
idMirrow не возможно получить если id_mirrow = null

16 (edited by sibprogsistem 2019-10-30 17:53:14)

Re: Переменная в фильтре таблицы

agatlogic101 wrote:

idMirrow := SQLExecute('SELECT id_mirrow FROM people WHERE id='+ Form1.TableGrid2.sqlValue );
idMirrow не возможно получить если id_mirrow = null

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

SQLExecute('SELECT IFNULL (id_mirrow, 0) FROM people WHERE id='+ Form1.TableGrid2.sqlValue );

Re: Переменная в фильтре таблицы

Вот этот способ работает!)

18 (edited by agatlogic101 2019-10-31 10:00:24)

Re: Переменная в фильтре таблицы

А возможно сделать что бы ComboBox был настроен на показ сразу и имени и фамилии? Я вижу вариант как зоздание третьего столбца в который скриптом будет изначально сразу при создании контакта заносится строка имя + фамилия и её уже показывать в ComboBox. Есть ли путь проще?
СТОЛБ1 Имя СТОЛБ2 фамилия СТОЛБ3 с помощью скрипта при добовлении в 1 и 2 данных подставляет в столб3 сумму текста (PS как именно это делается пока тоже не знаю)

19 (edited by sibprogsistem 2019-10-31 10:36:38)

Re: Переменная в фильтре таблицы

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

Post's attachments

Attachment icon Безымянный.png 83.75 kb, 108 downloads since 2019-10-31 

20 (edited by derek 2019-10-31 10:39:26)

Re: Переменная в фильтре таблицы

Привет,
Это помогает?
Смотрите также скриншот.
Derek.

Post's attachments

Attachment icon comboboxfields.zip 484.8 kb, 267 downloads since 2019-10-31 

Re: Переменная в фильтре таблицы

Thank you derek, this is what I need