![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
IBDataset обновляет не все поля [D6, Firebird 2.1]
Степан © (2010-02-05 07:09:00)Здравствуйте!
Подскажите, что я делаю не так.
На главной форме IBdataset+DBGrid отображают реестр заказов:
SelectSQL
select
ord.id, ord.date_reg, ord.summa, ord.cust_id, cust.name
from
orders ord, customers cust
where
cust.id = ord.cust_id
в модальной форме добавляю новый заказ, при ее закрытии делаю Post. Поля таблицы orders обновляются, а cust.name - нет.
RefreshSQL
select
ord.id, ord.date_reg, ord.summa, ord.cust_id, cust.name
from
orders ord, customers cust
where
cust.id = ord.cust_id and ord.id = :id
Sergey13 (2010-02-05 10:35:00) [21]> [15] Степан (05.02.10 10:02)
Не запрос а код в делфи, там где пост делаешь. Поле CUST_ID заполнено?
Вариант (2010-02-05 10:26:00) [22]
> Сергей М. © (05.02.10 08:44) [1]
Если убрать в RefreshSQL свяку между таблицами, то что вернет запрос RefreshSQL? И вернет ли одну запись?
Степан (2010-02-05 10:02:00) [23]InsertSQL
insert into orders
(CUST_ID, DATE_REG, SUMMA)
values
(:CUST_ID, :DATE_REG, :SUMMA)
Sergey13 (2010-02-05 09:58:00) [24]> [1] Сергей М. © (05.02.10 08:44)
> Таблиы ведь УЖЕ объединены в WHERE-статье твоего SELECT- предложения
Так разные запросы то на выборку и на рефреш. Вроде все правильно тут.
> [0] Степан (05.02.10 07:09)
> в модальной форме добавляю новый заказ, при ее закрытии делаю Post.
Давай код добавления? Конкретно как заполнен ord.cust_id?
Степан (2010-02-05 09:51:00) [25]у транзакции DefaultAction = TACommit
Виталий Панасенко(дом) (2010-02-05 09:49:00) [26]refreshsql, по-моему кривой...
where ord.id=old.id, кажись так
Сергей М. (2010-02-05 09:47:00) [27]автокоммит транзакции = True ?
Степан (2010-02-05 09:44:00) [28]да, так
Сергей М. (2010-02-05 09:41:00) [29]Т.е. ты утверждаешь, что в рез-те последовательности
IBdataset.Insert
..
IBdataset.Post
..
IBdataset.Refresh
поле cust.name вновь добавленной записи выглядит в гриде пустым, так ?
Степан (2010-02-05 09:31:00) [30]да
Сергей М. (2010-02-05 09:26:00) [31]Параметр id, надо понимать, содержить ключ новой записи таблицы odrers ?
Степан (2010-02-05 09:21:00) [32]select
ord.id, ord.date_reg, ord.summa, ord.cust_id, cust.name
from
orders ord, customers cust
where
ord.id=:id
Сергей М. (2010-02-05 09:17:00) [33]У куда делось ord.id = :id ?
Степан (2010-02-05 09:16:00) [34]Хорошо, оставил так
select
ord.id, ord.date_reg, ord.summa, ord.cust_id, cust.name
from
orders ord, customers cust
Сергей М. (2010-02-05 09:06:00) [35]Для начала убери в те же WHERE-выкрутасы и из RefreshSQL
Степан (2010-02-05 08:54:00) [36]Что тогда писать в RefreshSQL?
Сергей М. (2010-02-05 08:44:00) [37]select
ord.id, ord.date_reg, ord.summa, ord.cust_id, cust.name
from
orders ord, customers cust /* объединение таблиц по ключ.полям происходит ЗДЕСЬ */
where
cust.id = ord.cust_id/* А эточто за where-выкрутасы ? Таблиы ведь УЖЕ объединены в WHERE-статье твоего SELECT-предложения */