[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 240: Undefined array key 1
freepascal.ru форум 2019-06-21T07:02:14+03:00 https://freepascal.ru/forum/app.php/feed/topic/26523 2019-06-21T07:02:14+03:00 2019-06-21T07:02:14+03:00 https://freepascal.ru/forum/viewtopic.php?p=155788#p155788 <![CDATA[Re: Lookup поля]]>
Sharfik писал(а):У компоненты Query для работы с БД нет LookupCashe свойства, которое рекомендуют в сети

Э-э? Может, использовать компонент из другого набора, не?

Статистика: Добавлено Снег Север — 21.06.2019 07:02:14


]]>
2019-06-19T15:37:20+03:00 2019-06-19T15:37:20+03:00 https://freepascal.ru/forum/viewtopic.php?p=155752#p155752 <![CDATA[Re: Lookup поля]]> Есть вместо DBGrid компонент VirtualDBGrid. Из таблицы берем данные, и соответственно где то не текст, а номера id для других таблиц.
Собственно при форматировании полей VirtualDBGrid делает несколько lookup запросов к двум, трем другим dataset.
Какие бывают способы чтобы убрать тормоза из-за lookup? У компоненты Query для работы с БД нет LookupCashe свойства, которое рекомендуют в сети.

Статистика: Добавлено Sharfik — 19.06.2019 15:37:20


]]>
2018-02-10T00:03:11+03:00 2018-02-10T00:03:11+03:00 https://freepascal.ru/forum/viewtopic.php?p=129293#p129293 <![CDATA[Re: Lookup поля]]>
Нужно для Firebird.
вы просили пример... Хотя, возможно, примера под определённый сервер и не существует. Главное: основы даны.

В чем проблема?
отсутствие проекта (примера), наличие выдержек. Ну не фонтан догадываться что и где не так.

Это штатный способ решения такой задачи?
а кто его знает. См. выше.

Статистика: Добавлено pupsik — 10.02.2018 00:03:11


]]>
2018-02-09T22:56:49+03:00 2018-02-09T22:56:49+03:00 https://freepascal.ru/forum/viewtopic.php?p=129253#p129253 <![CDATA[Re: Lookup поля]]>
pupsik писал(а):Mikhail Простой [url=http://wiki.freepascal.org/TSqlite3_Master_Detail_Example]пример[url] с исходниками (ссылки на странице).

Нужно для Firebird. Конкретно не получается модификация дочерней таблицы вылетает ошибка
TPB constant (lock_timeout)

Добавлено спустя 3 часа 11 минут 54 секунды:
Модификация получилась, а вот вставка нет. InsertSQL для подчиненной таблицы такой

Код:

insert into goods
(name, fkcat, price, amount)
values (:name, :pkcat, :price, :amount);


здесь pkcat первичный ключ главной таблицы, пишет ошибку т.к. в этом параметре передается ноль. При этом следующий SelectSQL нормально работает.

Код:

select pkgoods, name, fkcategory, price, amount
from goods
where fkcat = :pkcat;


В чем проблема?

Добавлено спустя 48 минут 17 секунд:
В общем победа! :)
Устанавливаю внешний ключ вручную. Для этого создаю обработчик OnNewRecord для подчиненного IBDataSet.

Код:

procedure TfrmMain.dsDetailNewRecord(DataSet: TDataSet);
begin
 DataSet.FieldByName('fkcat').AsInteger:=dsMaster.FieldByName('pkcat').AsInteger;
end;


Изменяю InsertSQL на следующий запрос

Код:

insert into goods
(name, fkcat, price, amount)
values (:name, :new_fkcat, :price, :amount);


Это штатный способ решения такой задачи? :roll:

Статистика: Добавлено Mikhail — 09.02.2018 22:56:49


]]>
2018-02-09T23:55:02+03:00 2018-02-09T18:47:57+03:00 https://freepascal.ru/forum/viewtopic.php?p=129251#p129251 <![CDATA[Re: Lookup поля]]> Mikhail Простой пример с исходниками (ссылки на странице).

Статистика: Добавлено pupsik — 09.02.2018 18:47:57


]]>
2018-02-09T13:43:56+03:00 2018-02-09T13:43:56+03:00 https://freepascal.ru/forum/viewtopic.php?p=129220#p129220 <![CDATA[Re: Lookup поля]]> Статистика: Добавлено Mikhail — 09.02.2018 13:43:56


]]>
2018-02-08T21:59:44+03:00 2018-02-08T21:59:44+03:00 https://freepascal.ru/forum/viewtopic.php?p=129147#p129147 <![CDATA[Re: Lookup поля]]>
Читающая транзакция активна все время пока датасет активен?
Если вы о св-ве Active. То, по логике активируется доступ к базе, таблице... активируется транзакция. При закрытии, в простом случае, закрывается. Но вот по поводу читающая (не знаю что вы под этим понимаете)...
Когда edit вызываем для dataset или post?
можно для каждого действия повесить свою. И управлять ими.

п.с.
Вы просто не внимательно прочитали.
хм... спорный вопрос. Но он не важен. И не интересно сразу выложить то что показалось, вдруг оно показалось :lol:

лирика:
Интересно: если код написан с ошибкой. Он есть, или его нет?

Статистика: Добавлено pupsik — 08.02.2018 21:59:44


]]>
2018-02-08T21:14:09+03:00 2018-02-08T21:14:09+03:00 https://freepascal.ru/forum/viewtopic.php?p=129144#p129144 <![CDATA[Re: Lookup поля]]>
pupsik писал(а):
Это поле подстановки.
это ясно и с первого поста. Но ведь можно и параметр указать в SQL и просто забыть о этом написать. Т.е. вырезки из кода - замечательно. Но..о это не пример с "багом.?".
Т.е. вы написали куски кода, а остальным гадать что же там теоретически должно быть. Возможно это и весело (мурашками в голове шевелить и гадать). Но вы сами себе добавляете вариант "не дождаться ответа и самому решать проблему".
И кстати: часто подготовка не работающего примера помогает самому выявить проблему.

Вообще-то я все написал и про поле и запросы, Вы просто не внимательно прочитали. :)

И к вопросу о транзакциях, когда стартует читающая в ibx? Когда edit вызываем для dataset или post? Читающая транзакция активна все время пока датасет активен?

Статистика: Добавлено Mikhail — 08.02.2018 21:14:09


]]>
2018-02-08T20:20:00+03:00 2018-02-08T20:20:00+03:00 https://freepascal.ru/forum/viewtopic.php?p=129140#p129140 <![CDATA[Re: Lookup поля]]>
Это поле подстановки.
это ясно и с первого поста. Но ведь можно и параметр указать в SQL и просто забыть о этом написать. Т.е. вырезки из кода - замечательно. Но..о это не пример с "багом.?".
Т.е. вы написали куски кода, а остальным гадать что же там теоретически должно быть. Возможно это и весело (мурашками в голове шевелить и гадать). Но вы сами себе добавляете вариант "не дождаться ответа и самому решать проблему".
И кстати: часто подготовка не работающего примера помогает самому выявить проблему.

Статистика: Добавлено pupsik — 08.02.2018 20:20:00


]]>
2018-02-08T20:04:28+03:00 2018-02-08T20:04:28+03:00 https://freepascal.ru/forum/viewtopic.php?p=129139#p129139 <![CDATA[Re: Lookup поля]]>
pupsik писал(а):ну а вдруг вы забыли о том что объявили где то параметр :lkcat?

Это поле подстановки.

Статистика: Добавлено Mikhail — 08.02.2018 20:04:28


]]>
2018-02-08T19:51:33+03:00 2018-02-08T19:51:33+03:00 https://freepascal.ru/forum/viewtopic.php?p=129137#p129137 <![CDATA[Re: Lookup поля]]>
fkcat = :lkcat
ну а вдруг вы забыли о том что объявили где то параметр :lkcat? :roll:

Еще есть вопросы по транзакциям, когда они работают?
конкретно в FB их 2 (при чтении) и более.
Ну а так: для старта
Или на этом форуме посмотрите.

Статистика: Добавлено pupsik — 08.02.2018 19:51:33


]]>
2018-02-08T19:17:15+03:00 2018-02-08T19:17:15+03:00 https://freepascal.ru/forum/viewtopic.php?p=129135#p129135 <![CDATA[Re: Lookup поля]]>
pupsik писал(а):
На выборку и редактирование есть, я их даже привел.
уж проще бы тестовый пример приложили...
У меня ваш ModifySQL вызывает смутные вопросы:
Если верно понял что там написано: вы хотите изменить строку в таблице goods значениями из самого goods ? Т.е. затрагиваются 2 поля: pkgoods и fkcat. Зачем тогда 2-я таблица и связь с ней по полю?

Уже решено, что-то я ступил. Надо так.

Код:

UPDATE goods SET
 fkcat = :fkcat
WHERE pkgoods = :pkgoods;

Еще есть вопросы по транзакциям, когда они работают?

Статистика: Добавлено Mikhail — 08.02.2018 19:17:15


]]>
2018-02-08T19:06:01+03:00 2018-02-08T19:06:01+03:00 https://freepascal.ru/forum/viewtopic.php?p=129133#p129133 <![CDATA[Re: Lookup поля]]>
На выборку и редактирование есть, я их даже привел.
уж проще бы тестовый пример приложили...
У меня ваш ModifySQL вызывает смутные вопросы:
Если верно понял что там написано: вы хотите изменить строку в таблице goods значениями из самого goods ? Т.е. затрагиваются 2 поля: pkgoods и fkcat. Зачем тогда 2-я таблица и связь с ней по полю?

Статистика: Добавлено pupsik — 08.02.2018 19:06:01


]]>
2018-02-08T18:18:19+03:00 2018-02-08T18:18:19+03:00 https://freepascal.ru/forum/viewtopic.php?p=129130#p129130 <![CDATA[Re: Lookup поля]]>
pupsik писал(а):
В чем ошибка?
нет запроса на редактирование, удаление и изменение.

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

Статистика: Добавлено Mikhail — 08.02.2018 18:18:19


]]>
2018-02-08T18:02:33+03:00 2018-02-08T18:02:33+03:00 https://freepascal.ru/forum/viewtopic.php?p=129128#p129128 <![CDATA[Re: Lookup поля]]>
В чем ошибка?
нет запроса на редактирование, удаление и изменение.

Статистика: Добавлено pupsik — 08.02.2018 18:02:33


]]>
2018-02-08T12:01:58+03:00 2018-02-08T12:01:58+03:00 https://freepascal.ru/forum/viewtopic.php?p=129103#p129103 <![CDATA[Lookup поля]]>
Интересует содержимое ModifySQL в компоненте TIBDataset. Для определенности, есть две таблицы
Goods(pkgoods, name, fkcat, price) и categ(pkcateg, title). Вторая таблица содержит справочник для поля fkcat первой таблицы.

SelectSql такой

Код:

 Select PKGOODS, NAME, FKCAT, PRICE  From GOODS;


В редакторе полей TIBdataset cозданы все поля из запроса + lookup поле lkCat. Оно настороено следующим образом

Код:

KeyFields:= FKCAT;
LookupDataset:=qrCat;
LookupKeyFields:=pkcateg;
LookupResultField:=title;


grCat - это запрос

Код:

Select  * from categ;


В DbGrid подстановочное поле работает, в том смысле что оно правильно отображается, но при попытке модификации выдает ошибку ModifySQL следующий

Код:

UPDATE goods SET
 fkcat = :lkcat
WHERE pkgoods = :pkgoods;

В чем ошибка? :?

Статистика: Добавлено Mikhail — 08.02.2018 12:01:58


]]>