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

Вниз

Interbase Генератор/Триггер не срабатывает   Найти похожие ветки 

 
Mikhail83   (2007-04-06 10:02) [0]

При заполнении таблицы данными, не заполняется поле EmployeeID. Оно является первичным ключем и по сути счетчиком. Заполняю все необходимые поля, кроме указанного, конечно, а мне выругиваются: field "EmployeeID" must have a value.
Что не так??? Помогите пожалуйста.

создал таблицу:
CREATE TABLE "Employees"
(
 "EmployeeID" INTEGER NOT NULL,
 "Fam" VARCHAR(25) CHARACTER SET WIN1251 NOT NULL,
 "Name" VARCHAR(25) CHARACTER SET WIN1251 NOT NULL,
 "Otch" VARCHAR(25) CHARACTER SET WIN1251 NOT NULL,
 "Dolznost" VARCHAR(30) CHARACTER SET WIN1251 NOT NULL,
 "NumSotTel" VARCHAR(10) CHARACTER SET WIN1251,
 "Notes" VARCHAR(200) CHARACTER SET WIN1251,
PRIMARY KEY ("EmployeeID")
);


потом генератор:
CREATE GENERATOR "GEN_EMPLOYEES";

Триггер:
SET TERM ^ ;

/* Triggers only will work for SQL triggers */

CREATE TRIGGER "BEF_INS_EMPLOYEES" FOR "Employees"
ACTIVE BEFORE INSERT POSITION 0
as
begin
if (new."EmployeeID" is null) then new."EmployeeID" = GEN_ID(GEN_Employees,1);
end
^

COMMIT WORK ^
SET TERM ;^


 
Сергей М. ©   (2007-04-06 10:15) [1]


> а мне выругиваются: field "EmployeeID" must have a value


А это не Интербейз "выругивается")
Это клиентский компонент доступа ругается - ты, видать, задал для поля EmployeeID атрибут обязательного его заполнения.


 
Mikhail83   (2007-04-06 10:34) [2]

так и есть вот ведь:
"EmployeeID" INTEGER NOT NULL,

Делал по книге, там так написано, а что не нужно? Неужели из-за этого не срабатывает и не заносится значение триггером?


 
Sergey13 ©   (2007-04-06 10:35) [3]

> [0] Mikhail83   (06.04.07 10:02)

Если юзаешь IBX заполни проперть GeneratorField у датасета.


 
ЮЮ ©   (2007-04-06 10:41) [4]

[1]: КЛИЕНТСКИЙ КОМПОНЕНТ доступа ругается


> "EmployeeID" INTEGER NOT NULL,

Это не имеет отношение к клиентскому компоненту доступа.


> Заполняю все необходимые поля, кроме указанного, конечно,
> а мне выругиваются:

Где?


 
Mikhail83   (2007-04-06 10:44) [5]

Пробовал заполнять в окне Properties for: на закладке data и из программы


 
DrPass ©   (2007-04-06 10:47) [6]


> Делал по книге, там так написано, а что не нужно?

Либо вообще убрать поле EmployeeID из датасета, либо чем-то его заполнять. Если "чем-то заполнять" произвольно, в триггере соответственно убрать if (new."EmployeeID" is null) then. Если заполнять с умом, т.е. из генератора, то в принципе можно вообще убрать весь триггер...


 
Сергей М. ©   (2007-04-06 10:48) [7]


> Неужели из-за этого не срабатывает и не заносится значение
> триггером?


До триггера вообще дело не доходит.
Триггер твой срабатывает при выполнении INSERT-запроса, формируемого на кл.стороне, а кл.сторона его даже еще не сформировала, не говоря уже о передаче запроса на сервер для исполнения.

Обрати внимание на значение св-ва ImportedConctraints для TField, ассоциированного с полем EmployeeID - именно его непустое значение заставляет компонент проводить соотв.проверку на допустимость значения TField.Value при формировании запроса. Почитай справку по этому св-ву - все станет понятным.


 
Mikhail83   (2007-04-06 11:30) [8]

Ребята, спасибо за ответы.
то Сергей[7] Читал, плакал, ничего не понял.
С Интербайсом недавно начал знакомиться, учу.
Есть одно НО. ВРЕМЯ не ждет. Нужна база, не шибко навороченная, нет много времени понимать. Начальник такой.
- нужна база данных...
- когда ?...
- "вчера"...   - вот такой диалог.

Помогите, умоляю.
Вот просто тупо: где, что, и на что изменить чтоб автоинкримент нормально работал???


 
Сергей М. ©   (2007-04-06 11:35) [9]


> Читал, плакал, ничего не понял


Что конкретно не понял-то ?


 
ЮЮ ©   (2007-04-06 11:37) [10]

Каким образом программа "добирается" до Employees? Какой нибудь компонет (IBTable, IBQuery) на форму кидал? Два раза по нему кликал? В редакторе полей поля добавлял? Так вот там у поля EmployeeID Required стоит (по умолчанию) True. И DataSet ориентируется на это прежде, чем на "EmployeeID" INTEGER NOT NULL,



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

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

Наверх




Память: 0.49 MB
Время: 0.054 c
1-1173178321
vir
2007-03-06 13:52
2007.04.29
onFocusChange


2-1176390032
Roman_S
2007-04-12 19:00
2007.04.29
простой примерчик проверки пароля при запуске


15-1174495968
SkySpeed
2007-03-21 19:52
2007.04.29
Как исправить ошибку с повреждённым файлом реестра?..............


15-1175684431
homm
2007-04-04 15:00
2007.04.29
Виста меняет порядок локальных висков


15-1175245114
WondeRu at work
2007-03-30 12:58
2007.04.29
Незаполненное поле "Ваше имя" при отправлении поста