Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Вниз

Post на TIBDataSet.   Найти похожие ветки 

 
DROWSY   (2010-06-04 21:23) [0]

Firebird 1.5, Delphy 6.0
Есть набор TIBDataSet из двух таблиц.

select effects.code, effects.effeciency, effects.multiplier, effects_pro.pr_id, effects_pro.activ
from effects
  left outer join effects_pro on (effects.code = effects_pro.effects_code and PR_ID =  :PR_ID) order By effects.code

Значение "присоединённого" поля effects_pro.activ, для всех записей = Null.
Заполняю в гриде поле effects_pro.activ.
Если CachedUpdates = true, то всё нормально  Post-ится,
а если false, то значение поля в BeforePost = установленное в гриде,
,а уже в AfterPost сбрасывается в NULL,
VarisNull( DataSet.FieldByName("ACTIV").Value) = true.
Почему это происходит?


 
turbouser ©   (2010-06-04 21:40) [1]


> DROWSY   (04.06.10 21:23)  

Потому, что ibx, да и темболее под D6 1) заточены под ib 2) глюкодром
или ищи апдейты на ibx для D6 или используй нормальные компоненты - FIB например, или UIB


 
Loginov Dmitry ©   (2010-06-04 23:08) [2]

то значение поля в BeforePost = установленное в гриде,
,а уже в AfterPost сбрасывается в NULL,


Как настроены InsertSQL, ModifySQL, RefreshSQL ?


> Потому, что ibx, да и темболее под D6 1) заточены под ib
> 2) глюкодром


Компоненты IBX ниже версии X.11 использовать просто опасно.
Последние версии вот: http://ibase.ru/components.htm#components

Насчет глюков: работаю несколько лет с ними (D2007), причем весьма жестоко. Глюков не припомню (правда кроме TIBDatSet особо ничем другим не увлекался).


 
turbouser ©   (2010-06-04 23:24) [3]


> Loginov Dmitry ©   (04.06.10 23:08) [2]


> D2007

у автора D6..
в d2007 с ibx не работал, сказать не могу, но вот d7, d2006 - были проблемы. даже с апдейтами. бо FB уже давно <> IB


 
DROWSY   (2010-06-04 23:48) [4]


> Loginov Dmitry ©


========== TABLE EFFECTS ===========
SET SQL DIALECT 3;
SET NAMES NONE;

CREATE GENERATOR GEN_EFFECTS_ID;

CREATE TABLE EFFECTS (
   CODE        INTEGER NOT NULL,
   EFFECIENCY  INTEGER,
   MULTIPLIER  NUMERIC_4_3 /* NUMERIC_4_3 = NUMERIC(4,3) */
);

ALTER TABLE EFFECTS ADD CONSTRAINT PK_EFFECTS PRIMARY KEY (CODE);

/* Trigger: EFFECTS_BI */
CREATE TRIGGER EFFECTS_BI FOR EFFECTS
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
 IF (NEW.CODE IS NULL) THEN
   NEW.CODE = GEN_ID(GEN_EFFECTS_ID,1);
END
^

========== TABLE EFFECTS_PRO ===========

CREATE GENERATOR GEN_EFFECTS_PRO_ID;

CREATE TABLE EFFECTS_PRO (
   CODE          INTEGER NOT NULL,
   EFFECTS_CODE  SMALLINT NOT NULL,
   PR_ID         SMALLINT NOT NULL,
   ACTIV         T_YESNO /* T_YESNO = CHAR(1) CHECK ((VALUE IS NULL) OR (VALUE IN ("N","Y") OR (VALUE IN ("T","F")))) */
);

ALTER TABLE EFFECTS_PRO ADD CONSTRAINT PK_EFFECTS_PRO PRIMARY KEY (CODE);

/******************************************************************************/
/***                              Foreign Keys                              ***/
/******************************************************************************/

ALTER TABLE EFFECTS_PRO ADD CONSTRAINT FK_EFFECTS_PRO_1 FOREIGN KEY (EFFECTS_CODE) REFERENCES EFFECTS (CODE) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE EFFECTS_PRO ADD CONSTRAINT FK_EFFECTS_PRO_2 FOREIGN KEY (PR_ID) REFERENCES MAIN (PRID) ON DELETE CASCADE ON UPDATE CASCADE;

/******************************************************************************/
/***                                Triggers                                ***/
/******************************************************************************/

/* Trigger: EFFECTS_PRO_BI */
CREATE TRIGGER EFFECTS_PRO_BI FOR EFFECTS_PRO
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
 IF (NEW.CODE IS NULL) THEN
   NEW.CODE = GEN_ID(GEN_EFFECTS_PRO_ID,1);
END

WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW WW

insertsql =

insert into EFFECTS
 (EFFECIENCY, MULTIPLIER)
values
 (:EFFECIENCY, :MULTIPLIER)
----------------------------
modifysql =
update EFFECTS
set
 EFFECIENCY = :EFFECIENCY,
 MULTIPLIER = :MULTIPLIER
where
 CODE = :OLD_CODE
----------------------------
refreshsql =
Select
 CODE,
 EFFECIENCY,
 MULTIPLIER
from EFFECTS
where
 CODE = :CODE
--------------------------

для обновления в таблице Effects_Pro, в AfterPost выполняется процедура:

SET TERM ^ ;

CREATE PROCEDURE INSERT_UPDATE_EFFECTS_PRO (
   prid integer,
   effects_code integer,
   activ char(1))
as
begin
 if (exists (select Effects_pro.activ from Effects_pro where Effects_pro.effects_code = :effects_code))
 then
 update Effects_pro set Effects_pro.pr_id = :PRID, Effects_pro.activ = :activ where (Effects_pro.effects_code = :Effects_code);
 else
 insert into Effects_pro values (null, :Effects_code, :prid, :activ);
end^

SET TERM ; ^

GRANT SELECT,INSERT,UPDATE ON EFFECTS_PRO TO PROCEDURE INSERT_UPDATE_EFFECTS_PRO;

GRANT EXECUTE ON PROCEDURE INSERT_UPDATE_EFFECTS_PRO TO SYSDBA;


 
DROWSY   (2010-06-05 01:00) [5]

Спасибо, мужчины.
Установил
IBX 6.11 для Delphi 6 SP2
Бяка исчезла.


 
turbouser ©   (2010-06-05 01:06) [6]


> DROWSY   (05.06.10 01:00) [5]

Пожалуйста :)


 
Германн ©   (2010-06-05 01:46) [7]


> Спасибо, мужчины.

Обычно принято говорить "спасибо, мужики". Тогда (не всегда, но в подобных случаях) женщины не обижаются. :)


 
turbouser ©   (2010-06-05 01:48) [8]


> Германн ©   (05.06.10 01:46) [7]


> Обычно принято

Иногда можно и деликатно промолчать.


 
Германн ©   (2010-06-05 02:12) [9]


> Иногда можно и деликатно промолчать.

До ответа на сабж, пожалуй можно и нужно.
После - тут уж на усмотрение. :)


 
turbouser ©   (2010-06-05 02:29) [10]


> Германн ©   (05.06.10 02:12) [9]

Человеку помогли? Он спасибо сказал? Ну так чего тут еще придираться? ЧСВ мучает??


 
Германн ©   (2010-06-05 02:44) [11]


> turbouser ©   (05.06.10 02:29) [10]
>
>
> > Германн ©   (05.06.10 02:12) [9]
>
> Человеку помогли? Он спасибо сказал? Ну так чего тут еще
> придираться?

Ты, Коля где увидел "придирки"?
Давай  закончим спор. :)


 
turbouser ©   (2010-06-05 02:49) [12]


> Германн ©   (05.06.10 02:44) [11]


> Ты, Коля где увидел "придирки"?

в [7], [9]

> Давай  закончим спор. :)

я и не спорил.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.059 c
15-1271655459
12
2010-04-19 09:37
2010.08.27
как бы компоненты в PHP :)


15-1274046713
Германн
2010-05-17 01:51
2010.08.27
То ли день сегодня такой, то ли...


2-1266165565
NewZ
2010-02-14 19:39
2010.08.27
Class.


11-1220788935
andreykorol
2008-09-07 16:02
2010.08.27
TKolListView


2-1270035677
Валигози2
2010-03-31 15:41
2010.08.27
Способ задания порядка записей





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский