Текущий архив: 2004.10.10;
Скачать: CL | DM;
Вниз
FireBird... Найти похожие ветки
← →
jack128 © (2004-09-21 19:21) [40]Knight © (21.09.04 19:20) [39]
И что это меняет??
← →
wisekaa © (2004-09-21 19:21) [41]См. выше перечисленные ответы.
Менять Query не надо.
А решение твоей проблемы такоеже как и с TTable, см ответ Vlad
← →
wisekaa © (2004-09-21 19:22) [42]Как происходит вставка значений в БД?
← →
wisekaa © (2004-09-21 19:25) [43]Да и самое главное проверь активность триггера.
← →
Knight © (2004-09-21 19:26) [44]
> [40] jack128 © (21.09.04 19:21)
> Knight © (21.09.04 19:20) [39]
> И что это меняет??
Меняет это то, что если база не наёдена, то она генерируется на лету... а тут никаких правых клавиш...
> [42] wisekaa © (21.09.04 19:22)
> Как происходит вставка значений в БД?
Инсёртом... через SQL-запрос...
← →
Knight © (2004-09-21 19:27) [45]
> [43] wisekaa © (21.09.04 19:25)
> Да и самое главное проверь активность триггера.
А это разве ничего не значит?CREATE TRIGGER set_ref_id FOR t_ref
ACTIVE BEFORE INSERT POSITION 0
AS BEGIN
NEW.ref_id = GEN_ID(get_ref_id, 1);
END;
← →
Vlad © (2004-09-21 19:28) [46]
> Knight © (21.09.04 19:20) [39]
Вобще тут сначала надо разобраться какой запрос у тебя находится в IBQuery. Если SELECT - тогда все вышесказанное справедливо. Если же ты туда сразу INSERT впихнул, тогда мой совет не подходит, причина в чем-то другом.
А так, без разницы в рантайме ты коннектишься к базе или нет, кто мешает в рантайме установить свойство?
← →
Knight © (2004-09-21 19:30) [47]
> [46] Vlad © (21.09.04 19:28)
> А так, без разницы в рантайме ты коннектишься к базе или
> нет, кто мешает в рантайме установить свойство?
Свойство касается только компонента или будет прописано в базу, если в базу, то как?
← →
Vlad © (2004-09-21 19:31) [48]
> Knight © (21.09.04 19:30) [47]
Ответь плз. на [46]
Свойство касается только компонента(т.е. клиентской части), в базе ничего не поменяется
← →
Vlad © (2004-09-21 19:32) [49]
> Knight © (21.09.04 19:30) [47]
Просто судя по всему ошибку генерирует клиент, а не сервер (проверь кстати этот вопрос)
← →
wisekaa © (2004-09-21 19:32) [50]
> Инсёртом... через SQL-запрос...
Опять не верю.
Вот код из примера, который работает 100%.procedure TForm1.FormCreate(Sender: TObject);
begin
IBDatabase.DatabaseName:=ExtractFilePath(Application.ExeName)+"knight.gdb";
IBDatabase.Open;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if IBQuery.Active then IBQuery.Close;
IBQuery.Sql.Text := "INSERT INTO t_ref (ref_name, ref_desc) VALUES (:NAME, :COMMENT)";
IBQuery.ParamByName("NAME").AsString := "name"+RandomFrom(["1","2","3","4","5"]);
IBQuery.ParamByName("COMMENT").AsString := "Êîììåíòàðèé";
IBQuery.ExecSQL;
IBTable.Refresh;
IBTableError.Refresh;
end;
← →
jack128 © (2004-09-21 19:33) [51]Knight © (21.09.04 19:26) [44]
Меняет это то, что если база не наёдена, то она генерируется на лету
У тя у твоей базы фиксированная структура? Или ты каждый раз разные базы создаешь?? В любом случае можно в ран тайм изменить в AfterOpen твоей Квери. MyField := Sender.FindFiled("ref_id"); if Assigned(MyField) then MyField.Required := False
← →
wisekaa © (2004-09-21 19:35) [52]
> [45] Knight © (21.09.04 19:27)
Не значит, в процессе эксплуатации Активность может слететь
← →
wisekaa © (2004-09-21 19:39) [53]Вот скипт БД
/******************************************************************************/
/*** Generated by IBExpert 2004.09.19 21.09.2004 19:37:00 ***/
/******************************************************************************/
SET NAMES WIN1251;
CREATE DATABASE "D:\DB\Test_Knight\knight.gdb"
USER "SYSDBA" PASSWORD "masterkey"
PAGE_SIZE 4096
DEFAULT CHARACTER SET WIN1251;
/******************************************************************************/
/*** Generators ***/
/******************************************************************************/
CREATE GENERATOR GET_REF_ID;
/******************************************************************************/
/*** Tables ***/
/******************************************************************************/
CREATE TABLE T_REF (
REF_ID INTEGER NOT NULL,
REF_NAME VARCHAR(32) NOT NULL,
REF_DESC VARCHAR(256) NOT NULL
);
/******************************************************************************/
/*** Primary Keys ***/
/******************************************************************************/
ALTER TABLE T_REF ADD PRIMARY KEY (REF_ID);
/******************************************************************************/
/*** Triggers ***/
/******************************************************************************/
SET TERM ^ ;
/* Trigger: SET_REF_ID */
CREATE TRIGGER SET_REF_ID FOR T_REF
ACTIVE BEFORE INSERT POSITION 0
AS BEGIN
NEW.ref_id = GEN_ID(get_ref_id, 1);
END
^
SET TERM ; ^
← →
jack128 © (2004-09-21 19:43) [54]wisekaa © (21.09.04 19:32) [50]
if IBQuery.Active then IBQuery.Close;
IBQuery.Sql.Text := "INSERT INTO t_ref (ref_name, ref_desc) VALUES (:NAME, :COMMENT)";
IBQuery.ParamByName("NAME").AsString := "name"+RandomFrom(["1","2","3","4","5"]);
IBQuery.ParamByName("COMMENT").AsString := "Eiiiaioa?ee";
IBQuery.ExecSQL;
IBTable.Refresh;
IBTableError.Refresh
Андрей, ты не путай новичков такими примерами. Для таких целей IbDataSet есть. ;-)
← →
Vlad © (2004-09-21 19:45) [55]
> jack128 © (21.09.04 19:43) [54]
> Для таких целей IbDataSet есть. ;-)
Дык вот я что-то не пойму, нужен автору вобще DataSet как таковой или нет? Может он просто с помощью TIBQuery хочет Insert в таблицу сделать. Тогда естественно ни о каком required речи быть не может. Тогда тут более загадочная проблема...
← →
Knight © (2004-09-21 19:47) [56]
> [52] wisekaa © (21.09.04 19:35)
> Не значит, в процессе эксплуатации Активность может слететь
"Я сушла с ума... я сошла с уму... какая досада" %)))))
Заработало... справшивается, зачем писать ACTIVE при создании тригера если он всё-равно отключен???
← →
wisekaa © (2004-09-21 19:51) [57]
> [54] jack128 © (21.09.04 19:43)
Извини, я то просто работаю через dbExpress?
Этот пример было бестрее состряпать, и он 100% работал, что доказывало что дело не в БД.
← →
wisekaa © (2004-09-21 19:52) [58]
> [56] Knight © (21.09.04 19:47)
Не понял прокоментируй?
← →
Knight © (2004-09-21 19:55) [59]
> [58] wisekaa © (21.09.04 19:52)
> Не понял прокоментируй?
Что комментировать... сделал
ALTER TRIGGER set_ref_id ACTIVE;
И всё заработало... блин... 52 поста!!! Из-за такой ерунды, никогда бы не подумал, что такое может быть... :(
← →
Knight © (2004-09-21 19:56) [60]Я в трансе...может сменить этот Firebird на второй... как там его "Зелёный Дятел", вроде... или у него те же проблемы?
← →
jack128 © (2004-09-21 19:58) [61]Knight © (21.09.04 19:47) [56]
справшивается, зачем писать ACTIVE при создании тригера если он всё-равно отключен???
То есть ты выполнил запрос
CREATE TRIGGER set_ref_id FOR t_ref
ACTIVE BEFORE INSERT POSITION 0
AS BEGIN
NEW.ref_id = GEN_ID(get_ref_id, 1);
END;
А триггер стал не активным??? "Не верю" (с) сами знаете кто ;-)
← →
wisekaa © (2004-09-21 19:58) [62]<Offtop>
> [54]
Да и для отображения, заведения данных мы в проекте не используем db компоненты (т.е с палитры Data Controls)
</Offtop>
← →
wisekaa © (2004-09-21 20:00) [63]jack128 прав данный скрипт 100% создает активный триггер, сбой произошел по другим причинам (мог повлиять и размер страницы, если был 1028, а таблиц с тригерами больше 256).
← →
wisekaa © (2004-09-21 20:02) [64]Надо посмотреть как компонент IBDataBase создает триггера, вполне возможно он их сам делает неактивныи, предполагая вставку данных?
← →
Knight © (2004-09-21 20:04) [65]
> [61] jack128 © (21.09.04 19:58)
> То есть ты выполнил запрос
>
> CREATE TRIGGER set_ref_id FOR t_ref
> ACTIVE BEFORE INSERT POSITION 0
> AS BEGIN
> NEW.ref_id = GEN_ID(get_ref_id, 1);
> END;
> А триггер стал не активным??? "Не верю" (с) сами знаете
> кто ;-)
Ага... и я с ним тр...сь с 20.09.04 22:58... :(
← →
Knight © (2004-09-21 20:06) [66]
> [63] wisekaa © (21.09.04 20:00)
> jack128 прав данный скрипт 100% создает активный триггер,
> сбой произошел по другим причинам (мог повлиять и размер
> страницы, если был 1028, а таблиц с тригерами больше 256).
страница - 4096
таблица - одна
тригер - один
"Ни-че-го не понимаю" (с) сами знаете кто... :)
← →
Knight © (2004-09-21 20:07) [67]В общем, всем СПАСИБО... и мудрому Ка в отдельности :)
← →
jack128 © (2004-09-21 20:07) [68]
> как там его "Зелёный Дятел", вроде...
LOL :-)) Yaffil. Но он платный (хотя и н дорогой) Но проблемы не в сервере - 100%
wisekaa © (21.09.04 20:02) [64]
Надо посмотреть как компонент IBDataBase создает триггера,
?? А как с помощью IbDataBase создать триггеры???
Knight © (21.09.04 20:04) [65]
не, что то тут не то. Напомни свою версию FB? FB1.5 Release ?
<off>
wisekaa © (21.09.04 19:58) [62]
Я тоже с этой закладки компоненты не беру. А вот с закладки EhLib беру :-)
</off>
← →
Knight © (2004-09-21 20:15) [69]> [68] jack128 © (21.09.04 20:07)
> > как там его "Зелёный Дятел", вроде...
> LOL :-)) Yaffil. Но он платный (хотя и н дорогой) Но проблемы
> не в сервере - 100%
А я читал, что Interbase 6, Firebird и Yaffil, все бесплатные, только первые бесплатные с исходникаки, а дятел без. Тоже где-то закачан...
> ?? А как с помощью IbDataBase создать триггеры???
Так как... запросом...IBQuery.SQL.Text:="CREATE TRIGGER set_ref_id FOR t_ref
ACTIVE BEFORE INSERT POSITION 0
AS BEGIN
NEW.ref_id = GEN_ID(get_ref_id, 1);
END;";
IBQuery.ExecSQL;
> Knight © (21.09.04 20:04) [65]
> не, что то тут не то. Напомни свою версию FB? FB1.5 Release
1.5.1.4481
← →
jack128 © (2004-09-21 20:21) [70]Knight © (21.09.04 20:15) [69]
Yafill Embb - бесплатный. А просто Yaffil платный. Хотя после объединения FB и Ya это уже не имеет значения..
← →
Knight © (2004-09-21 20:36) [71]
> [70] jack128 © (21.09.04 20:21)
> Yafill Embb - бесплатный. А просто Yaffil платный. Хотя
> после объединения FB и Ya это уже не имеет значения..
Так мне локальный и нужен... однопользовательский, надоело уже с BDE таскаться, а тут реальный сервер, без инсталяции и всего полтора метра...
← →
Knight © (2004-09-21 20:40) [72]Так, что всё-же лучше? Firebird или Yaffil? Читал, что Yaffil это тот же FB, только с дополнительными наворотами...
← →
jack128 © (2004-09-21 22:47) [73]Knight © (21.09.04 20:40) [72]
Типа того. Код Ya оптемизирован под Win платформу. Ну есть пара дополнительных фишек, но после объявления об объединении с FB он фактически прикратил развитие..
← →
Knight © (2004-09-21 23:21) [74]А какая последняя версия Firebird? В IB Expert светится 2.0 , но нигде не могу найти, всё везде планы на будущее, круче, выше, сильнее и т.п.
Страницы: 1 2 вся ветка
Текущий архив: 2004.10.10;
Скачать: CL | DM;
Память: 0.62 MB
Время: 0.078 c