Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3]      все
 Re: IBX + FireBird несколько таблиц в запросе  [new]
ъъъъъ
Member

Откуда:
Сообщений: 248
YuRock
Лучше на этапе разработки отказаться от CommitRetaining, чем судорожно

Тогда уж от IBX сразу отказаться.
13 мар 20, 10:21    [22098185]     Ответить | Цитировать Сообщить модератору
 Re: IBX + FireBird несколько таблиц в запросе  [new]
Vlad F
Member

Откуда:
Сообщений: 1183
antox
Vlad F
antox,

Понял. Тебе надо этот параметр в качестве дополнительного искусственного поля вытащить в селективной части SelectSQL.


Да, я тоже это понял почитав о невозможности использовать параметры селекта в рефреше, но что-то пока не могу реализовать

Так не работает:
select t.*, :uids


так тоже...

select t.*, (:uids) as uids


"Не работает", хм. Ты бы хоть ошибку написал, с какой не работает.

Хотя так работает

select t.*, ('value') as virtField


Как же мне вывести значение параметра в виде поля?

Пробуй так:

select
t.*,
(select sum(mycount) from tab2 where tab_id=t.id and uids=:uids) as sumt2,
cast(:uids as type of column tab2.uids) as uids
from
tab t

Плюс к этому надо будет добавить это новое фиктивное поля в коллекцию полей твоего IBDataSet, если они там у тебя статические.

Сообщение было отредактировано: 13 мар 20, 11:30
13 мар 20, 11:26    [22098263]     Ответить | Цитировать Сообщить модератору
 Re: IBX + FireBird несколько таблиц в запросе  [new]
antox
Member

Откуда: РФ
Сообщений: 1097
YuRock
antox
пропущено...


CommitRetaining
Лучше на этапе разработки отказаться от CommitRetaining, чем судорожно переделывать потом, когда у клиентов база станет раком.
Редактировать надо, пока открыта readonly транзакция, и только чтобы изменения в базу слить - открывать на мгновение пишущую и сразу закрывать.
Как этого добиться - путей много, гугл в помощь.
Ваш нынешний путь - обречен, это точно, 100%.


Как отказаться, если мне надо править данные прямо в сетке? Не везде, но где-то надо. Где не надо, там отдельным запросом меняю данные по commit

Сообщение было отредактировано: 13 мар 20, 19:18
13 мар 20, 19:17    [22098810]     Ответить | Цитировать Сообщить модератору
 Re: IBX + FireBird несколько таблиц в запросе  [new]
antox
Member

Откуда: РФ
Сообщений: 1097
YuRock
antox
Короче, похоже, все зря

Если в Refresh даже указать

select 
	t.*
	, (5) as sumt2
from 
	tab t
where
	t.id = :id



То все равно sumt2 = null, а не 5 после post

1. Не :id, а :old_id, уже 2 раза говорили.
2. Если не поможет - значит из-за того, что у тебя "*". Напиши нормальный список полей, как положено.
3. Не верю, чоо в refreshsql нельзя подзапрос. "Ошибка"? Так ее нужно исправить.


Сам не верю, мож запутался. На выходных сделаю все заново и проверю
13 мар 20, 19:18    [22098811]     Ответить | Цитировать Сообщить модератору
 Re: IBX + FireBird несколько таблиц в запросе  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 4115
ъъъъъ
YuRock
Лучше на этапе разработки отказаться от CommitRetaining, чем судорожно

Тогда уж от IBX сразу отказаться.
IBX к Retain никаким боком.
Другое дело, и я не спорю, что другие библиотеки позволяют меньшей кровью решить проблему "редактирования гридов" без долгой пишущей транзакции.
Но лично я считаю, что само по себе "редактирование грида" - это ужасно. Хотя и это решается средствами стандартного IBX без использования Retain, но это просто не нужно изначально.
13 мар 20, 21:23    [22098879]     Ответить | Цитировать Сообщить модератору
 Re: IBX + FireBird несколько таблиц в запросе  [new]
ъъъъъ
Member

Откуда:
Сообщений: 248
antox
если мне надо править данные прямо в сетке

Fib+ с гитхаба скачай и используй, вместо. Там искаропки модифицирующие запросы датасета в отдельной транзакции.
13 мар 20, 23:22    [22098925]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3]      все
Все форумы / Delphi Ответить