Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

IBDataset обновляет не все поля [D6, Firebird 2.1]


Страницы:   1 2

Степан ©   (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-предложения */


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо