Форум: "Базы";
Текущий архив: 2006.07.30;
Скачать: [xml.tar.bz2];
ВнизСвязка TIBQuery + TDBGridEh + TUpdateSQLW. Подправить даные. Найти похожие ветки
← →
_RusLAN © (2006-05-25 17:31) [0]Даные выбираются по запросу с left outer join c двух таблиц на определенную дату.
В TDBGridEh редактируются только даные из второй таблицы.
я в OnUpdateRecord по тому есть ли значение в поле ID (ключевое поле из второй таблицы) определяю нужно редактировать запись или нужно вставить запись, и вызываю TUpdateSQLW.Apply(ukModify) или ukInsert соответственно.
Но для вставки записи мне нужно получить сначала ее ID и указать Дату.
Как мне подсуть эти значения в набор даных или сразу в параметры запроса?
Спасибо!
← →
ANB © (2006-05-25 20:22) [1]Ничего не понял, но для генерации ID вообще то в IB есть генераторы.
Для лучшего понимания запости структуру таблиц (в виде DDL) и текст запроса.
А также объясни, чего ты хочешь логически (в терминах бизнес-логики).
← →
_RusLAN © (2006-05-26 13:28) [2]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 нет вообще).
Как мне присвоить значения этих параметров запроса на вставку.
спасибо!
← →
Sergey13 © (2006-05-26 13:43) [3]>Но для вставляемой записи надо заполнить поля ID и Data (ведь в НД ID равно НУЛЛ, а Data нет вообще).
Запросить
select gen_id(my_gen,1) from rdb$database
и вставлять полученное значение в ИД-шник. В тигере, разумеется поправить (если надо) заполняемость только пустых new.id.
В Data подсказать что написать? 8-)
← →
_RusLAN © (2006-05-26 13:56) [4]Sergey13 © (26.05.06 13:43) [3]
В Data подсказать что написать? 8-)
Нет спасибо. Как получить эти значения я знаю.
Sergey13 © (26.05.06 13:43) [3]
и вставлять полученное значение в ИД-шник
Куда/Как мне их присвоить? Вот что меня истересует.
← →
Sergey13 © (2006-05-26 14:19) [5]2 [4] _RusLAN © (26.05.06 13:56)
Я так понимаю, тебе вместо апдейта надо вызвать отдельный запрос на вставку, а потом отрефрешить текущую запись.
Кстати для такой работы проще наверное будет юзать ИБДатаСет, а не Кверик+Апдейт.
← →
_RusLAN © (2006-05-26 16:18) [6]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)
← →
_RusLAN © (2006-05-29 11:58) [7]Всем спасибо!
Особенно Borland за предоставленный исходный код.
Надо его читать и перечитывать.
В ОнАпдейтРекорд надо было писатьIBUpdateSQLW1.QueryW[ukInsert].ParamByname("ADate").AsString := "23.05.06";
Это для параметра для которого в НД нет соответсвтующего поля.
А для параметра для которого есть поле данных в НД то тоже так, только надо имя параметра задать таким, чтоб оно отличалось от имени поля в НД.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.07.30;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.011 c