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

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

Связка TIBQuery + TDBGridEh + TUpdateSQLW. Подправить даные.


_RusLAN ©   (2006-05-25 17:31:00) 

Даные выбираются по запросу с left outer join c двух таблиц на определенную дату.
В TDBGridEh редактируются только даные из второй таблицы.
я в OnUpdateRecord по тому есть ли значение в поле ID (ключевое поле из второй таблицы) определяю нужно редактировать запись или нужно вставить запись, и вызываю TUpdateSQLW.Apply(ukModify) или ukInsert соответственно.
Но для вставки записи мне нужно получить сначала ее ID и указать Дату.
Как мне подсуть эти значения в набор даных или сразу в параметры запроса?
Спасибо!


_RusLAN   (2006-05-29 11:58:00) [1]

Всем спасибо!
Особенно Borland за предоставленный исходный код.
Надо его читать и перечитывать.
В ОнАпдейтРекорд надо было писать

IBUpdateSQLW1.QueryW[ukInsert].ParamByname('ADate').AsString := '23.05.06';

Это для параметра для которого в НД нет соответсвтующего поля.

А для параметра для которого есть поле данных в НД то тоже так, только надо имя параметра задать таким, чтоб оно отличалось от имени поля в НД.


_RusLAN   (2006-05-26 16:18:00) [2]

Sergey13 ©   (26.05.06 14:19) [5]
Я так понимаю, тебе вместо апдейта надо вызвать отдельный запрос на вставку


Я так и делаю - вызываю TUpdateSQLW.Apply(ukInsert)

Sergey13 ©   (26.05.06 14:19) [5]
Кстати для такой работы проще наверное будет юзать ИБДатаСет, а не Кверик+Апдейт.


Ну я прочитал на Ibase.ru, что нужно писать в отдельной транзакции, поэтому использую TUpdateSQLW

Но основной вопрос так и не снят.
Допишу еще информации.
у меня в компоненте TUpdateSQLW есть запрос на вставку типа
insert into table2
(ID, ID_объекта, Data, "разные доп. поля")
values (:ID, :ID_объекта, :Data, :"разные доп. поля")

значения параметрам :ID_объекта, :"разные доп. поля" подставляются автоматом из набора данных.

а как мне присвоить значения параметрам :ID, :Data перед вызовом  TUpdateSQLW.Apply(ukInsert)


Sergey13   (2006-05-26 14:19:00) [3]

2 [4] _RusLAN ©   (26.05.06 13:56)
Я так понимаю, тебе вместо апдейта надо вызвать отдельный запрос на вставку, а потом отрефрешить текущую запись.
Кстати для такой работы проще наверное будет юзать ИБДатаСет, а не Кверик+Апдейт.


_RusLAN   (2006-05-26 13:56:00) [4]

Sergey13 ©   (26.05.06 13:43) [3]
В Data подсказать что написать? 8-)


Нет спасибо. Как получить эти значения я знаю.  

Sergey13 ©   (26.05.06 13:43) [3]
и вставлять полученное значение в ИД-шник


Куда/Как мне их присвоить? Вот что меня истересует.


Sergey13   (2006-05-26 13:43:00) [5]

>Но для вставляемой записи надо заполнить поля ID и Data (ведь в НД ID равно НУЛЛ, а Data нет вообще).
Запросить
select gen_id(my_gen,1) from rdb$database
и вставлять полученное значение в ИД-шник. В тигере, разумеется поправить (если надо) заполняемость только пустых new.id.
В Data подсказать что написать? 8-)


_RusLAN   (2006-05-26 13:28:00) [6]

ANB ©   (25.05.06 20:22) [1]
ОК, прочитал сегодня, что написал вчера - и правда трудно понять.
Приведу приверные структуры таблиц и запроса

Есть таблица 1 - список объектов.
ID,
Name

Таблица два 2 - характеристика объекта на дату,
ID,
ID объекта,
Дата,
и разные поля описывающие состояние объекта

Запрос выбирает Всеобъекти и их характеристики на конкретную дату( если есть).

Select t1.Name, t2.ID, t2.разные доп. поля
from Table 1 t1
left outer join Table2 t2 on t2.ID_объекта = t1.ID
where t2.Date = '01.01.2006'

в гриде пользователь редактирует только t2.разные доп. поля
Так вот, в OnUpdateRecord я смотрю в t2.ID, если оно содержит значение, то я просто вызываю TUpdateSQLW.Apply(ukModify), если оно НУЛЛ, то мне надо вызвать TUpdateSQLW.Apply(ukInsert). Но для вставляемой записи надо заполнить поля ID и Data (ведь в НД ID равно НУЛЛ, а Data нет вообще).
Как мне присвоить значения этих параметров запроса на вставку.
спасибо!


ANB   (2006-05-25 20:22:00) [7]

Ничего не понял, но для генерации ID вообще то в IB есть генераторы.

Для лучшего понимания запости структуру таблиц (в виде DDL) и текст запроса.

А также объясни, чего ты хочешь логически (в терминах бизнес-логики).


Наверх

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