Форум: "Базы";
Текущий архив: 2002.10.10;
Скачать: [xml.tar.bz2];
ВнизПомогите новичку в 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.007 c