Главная страница
    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.47 MB
Время: 0.067 c
2-1175844369
Xmen
2007-04-06 11:26
2007.04.29
как исползовать in


2-1175825813
VolanD666
2007-04-06 06:16
2007.04.29
BytesPerScanLine


15-1175587742
Rouse_
2007-04-03 12:09
2007.04.29
Unsupported 16bit resource in file unit1.DFM


2-1176170835
minutka17
2007-04-10 06:07
2007.04.29
While:найти номер эл-та последовательности


15-1175512484
Kot Andrei
2007-04-02 15:14
2007.04.29
MSDN offline





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