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

Вниз

Помогите новичку в InterBase   Найти похожие ветки 

 
Vint ©   (2002-09-18 14:37) [0]

Уважаемые мастера!
C IB не работал, а тут понадобилось перебросить в чужую таблицу (IB) данные, перебрасываю напрямую

Form1.IBTable1.Insert;
Form1.IBTable1.FieldByName("NAME").AsString := " . . . ";
Form1.IBTable1.Post;
IBTransaction1.Commit;

выдает ошибку:
Cannot perform operation - DB is currently open
может из-за того, что там всякие навороты, типа логики (генераторы, триггеры и т.д.) мне разобраться в этом трудно.

помогите пожалуйста кто знает (и у кого есть время или желание)


 
Mike Kouzmine   (2002-09-18 15:10) [1]

На какой строке ошибка? А старт делаешь?


 
Cobalt ©   (2002-09-18 15:15) [2]


> IBTransaction1.Commit;


А транзакцию в явном виде начинаешь?
Возможно, метод Post сам закрывает транзакцию, посмотри исходник.


 
Vint ©   (2002-09-18 15:15) [3]

>Mike Kouzmine (18.09.02 15:10)

Издеваешься ?


 
Vint ©   (2002-09-18 15:20) [4]

>Cobalt © (18.09.02 15:15)

Вот, что я могу посмотреть:

/* Domain definitions */
CREATE DOMAIN TCHECK AS SMALLINT
default 0
check (Value in (0, 1)) NOT NULL;
CREATE DOMAIN TCHECK AS SMALLINT
default 0
check (Value in (0, 1)) NOT NULL;
CREATE DOMAIN TCHECKFOUR AS SMALLINT
default 0
check (Value in (0,1,2,3)) NOT NULL;
CREATE DOMAIN TEXILE AS INTEGER;
CREATE DOMAIN TKEY AS INTEGER NOT NULL;
CREATE DOMAIN TKEY AS INTEGER NOT NULL;
CREATE DOMAIN TKEY AS INTEGER NOT NULL;
CREATE DOMAIN TLARGENAME AS VARCHAR(70) CHARACTER SET WIN1251
default "" COLLATE PXW_CYRL;
CREATE DOMAIN TLARGENAME AS VARCHAR(70) CHARACTER SET WIN1251
default "" COLLATE PXW_CYRL;
CREATE DOMAIN TMEDIUMNAME AS VARCHAR(50) CHARACTER SET WIN1251
default "" COLLATE PXW_CYRL;
CREATE DOMAIN TMONEY AS NUMERIC(15, 4)
default 0 NOT NULL;
CREATE DOMAIN TMONEY AS NUMERIC(15, 4)
default 0 NOT NULL;
CREATE DOMAIN TPS AS VARCHAR(20) CHARACTER SET WIN1251
default "";
CREATE DOMAIN TSMALLNAME AS VARCHAR(20) CHARACTER SET WIN1251
default "" COLLATE PXW_CYRL;
CREATE DOMAIN TSMALLNAME AS VARCHAR(20) CHARACTER SET WIN1251
default "" COLLATE PXW_CYRL;
CREATE DOMAIN TSMALLNAME AS VARCHAR(20) CHARACTER SET WIN1251
default "" COLLATE PXW_CYRL;
CREATE DOMAIN TSMALLNAME AS VARCHAR(20) CHARACTER SET WIN1251
default "" COLLATE PXW_CYRL;
CREATE DOMAIN TSTATUS AS INTEGER
default 0 NOT NULL;
CREATE DOMAIN TSTATUS AS INTEGER
default 0 NOT NULL;
CREATE DOMAIN TSTATUS AS INTEGER
default 0 NOT NULL;

/* Table: CTAGS, Owner: JC4 */

CREATE TABLE "CTAGS"
(
"ID" "TKEY",
"STATUS" "TKEY",
"NAME" "TLARGENAME",
"NICK" "TSMALLNAME",
"FORM" "TCHECK",
"AD" "TMEDIUMNAME",
"PHONE" "TSMALLNAME",
"INN" "TSMALLNAME",
"R_S" "TSMALLNAME",
"IDBANK" "TKEY",
"DOVFACE" "TLARGENAME",
"PS" "TPS",
"REALTYP" "TCHECKFOUR",
"REALDY" "TSTATUS",
"REALPAY" "TSTATUS",
"REALSMMAX" "TMONEY",
"REALSTATUS" "TSTATUS",
"SMCLOSE" "TMONEY",
"DISABLED" "TCHECK",
"IDEXT" "TEXILE",
CONSTRAINT "PK_CTAGS" PRIMARY KEY ("ID")
);
ALTER TABLE "CTAGS" ADD CONSTRAINT "FK_CTAGS_BANKS" FOREIGN KEY ("IDBANK") REFERENCES BANKS ("ID");
SET TERM ^ ;


/* Triggers only will work for SQL triggers */

CREATE TRIGGER "CTAGS_TI" FOR "CTAGS"
ACTIVE BEFORE INSERT POSITION 0
as begin
if (NEW.id is null) then NEW.id=gen_id(ctags_gen, 1);
if (NEW.idExt is not null) then begin
NEW.Nick=NEW.Name;
NEW.Status=4;
end
end
^

CREATE TRIGGER "CTAGS_TI1" FOR "CTAGS"
ACTIVE AFTER INSERT POSITION 0
as
declare variable idMnt integer;
begin
execute procedure MntValid("TODAY")returning_values idMnt;
insert into ctagclcs (idctag, idMnt) values (NEW.id, :idMnt);
end
^

CREATE TRIGGER "CTAGS_TD" FOR "CTAGS"
ACTIVE BEFORE DELETE POSITION 0
as begin
if (OLD.id in(1,2,3)) then exception SESysData;
end
^

COMMIT WORK ^
SET TERM ;^


а IBTransaction1.Commit; это я так на всякий случай :-)



 
Mike Kouzmine   (2002-09-18 15:20) [5]

В смысле? Я же не знаю, что ты пишешь у себя, я только вижу что написано в вопросе.
Это я могу спросить - Издеваешься?


 
Vint ©   (2002-09-18 15:31) [6]

>Mike Kouzmine (18.09.02 15:20)

Вся программка это те строчки, что в вопросе,
да еще DataSource1, IBTransaction1, IBDatabase1, IBTransaction1 и Button1 :-)


 
Mike Kouzmine   (2002-09-18 15:36) [7]

А что удивительного, что я спросил про старт? Кобальт тоже спросил. И он, наверное правильно сказал, что начинаешь неявно и постом же ее закрываешь, а потом пытаешься еще и коммит делать. Хотя, я не силен в этом, просто хотел по мере знаний помочь. Надо подождать когда мастера подскажут.


 
Vint ©   (2002-09-18 15:39) [8]

>Mike Kouzmine (18.09.02 15:20)

Вот код полностью:

procedure TForm1.Button1Click(Sender: TObject);
begin
IBDatabase1.Connected := true;
IBTransaction1.Active := true;
IBTable1.Active := true;

IBDatabase1.Params.Clear;
IBDatabase1.Params.Add("user_name=jc4");
IBDatabase1.Params.Add("password=123456");
IBDatabase1.Params.Add("lc_ctype=CYRL");
IBDatabase1.Params.Add("lc_ctype=WIN1251");
IBDatabase1.Params.Add("sql_role_name=finance");

Form1.IBTable1.Insert;
Form1.IBTable1.FieldByName("ID").AsInteger := 6000;
Form1.IBTable1.FieldByName("STATUS").AsInteger := 1;
Form1.IBTable1.FieldByName("IDBANK").AsInteger := 1;
Form1.IBTable1.FieldByName("NAME").AsString := "Иванов Петр";
Form1.IBTable1.Post;

IBTransaction1.Commit;
IBDatabase1.Connected := false;
end;



 
Vint ©   (2002-09-18 15:48) [9]

Вопрос закрыт, сам разобрался!


 
Johnmen ©   (2002-09-18 15:51) [10]

>Vint © (18.09.02 15:39)

Местами бредово.......:)
А именно - почему сначала коннект, а потом уж параметры коннекта ?????!!!!!!!!


 
Mike Kouzmine   (2002-09-18 15:55) [11]

А что было?



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

Текущий архив: 2002.10.10;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.013 c
14-31941
ikivio
2002-09-05 10:12
2002.10.10
Ищу сообщников в создании программ.


14-31955
Igor_thief
2002-09-15 13:17
2002.10.10
Hook


1-31792
Nitrox
2002-10-01 23:34
2002.10.10
Как скопировать целый каталог с подкаталогами...


1-31742
AL2002
2002-09-28 00:48
2002.10.10
Есть ли у RichEdit событие OnMouseOver


3-31662
sky3d
2002-09-18 11:54
2002.10.10
TRIGGER TRACE TOOLS (MS SQL 2000)