Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.013 c
2-1152788121
rra
2006-07-13 14:55
2006.07.30
Определение нажатой кнопки


15-1151669678
MsGuns
2006-06-30 16:14
2006.07.30
Сожмем кулаки за Украину ?


2-1152130244
KaLLeKa
2006-07-06 00:10
2006.07.30
Проблема с программой...


3-1148397089
Karburator
2006-05-23 19:11
2006.07.30
Помогите, не могу подключить сетевую базу


15-1151567937
Holy
2006-06-29 11:58
2006.07.30
NEC ND-3551A. Disk T@2 и LabelFlash.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский