Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.30;
Скачать: CL | DM;

Вниз

Связка 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.032 c
15-1151645539
Ega23
2006-06-30 09:32
2006.07.30
С Днём рождения! 30 июня


15-1151835771
Socers'
2006-07-02 14:22
2006.07.30
Звук


1-1150550494
lux_dn
2006-06-17 17:21
2006.07.30
Утечка ПАМЯТИ & DLL


3-1148485734
Borisss
2006-05-24 19:48
2006.07.30
Delphi + MySQL


4-1144920685
oleg_
2006-04-13 13:31
2006.07.30
Выбор директории с указанием текущей