Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.04.29;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.04 c
8-1154280779
Pent
2006-07-30 21:32
2007.04.29
TFastDIB


2-1176107023
ppcumax
2007-04-09 12:23
2007.04.29
Как архивировать файлы в ZIP архивы?


15-1175436076
Ccil
2007-04-01 18:01
2007.04.29
Многопользовательские онлайновые игры в рунете


15-1175239812
Донской
2007-03-30 11:30
2007.04.29
Имитация интерфейса прибора


15-1175703936
Ringo
2007-04-04 20:25
2007.04.29
Альтернативная служба в армии





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