На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Обязательно указание:
1) типа базы данных (Paradox/Oracle/Interbase и т.п.)
2) способа доступа к базе данных (ODBC/ADO/DAO/BDE и т.п.)
Например: Paradox/BDE, MS Access/ADO

Наиболее часто задаваемые вопросы:
Базы даных для начинающих. Первые шаги. Понятие о BDE.
Переход на клиент-сервер и начала ADO
Приёмы работы с BLOB (OLE/Memo) полями
Запросы и параметры или как избавиться от многих проблем. Проблемы с датами в запросах.
Нужели мне нужно устанавливать BDE? (или почему не работает программа на другом компьютере)
Модераторы: Bas, Rouse_
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> validation error for column , InterBase
    Проблема в следующем:
    пишу вот такой вот запрос
    ExpandedWrap disabled
      INSERT INTO Trener(FIO, ZVANIE,ADRES,TELEFON,NVS)
        VALUES(:FIO,:ZVANIE,:ADRES,:TELEFON,:NVS);

    т.е. надо вставить значения в поля, но при активации IBQuery, выдаётся ошибка validation error for column NVS, value "*** null ***"...
    В чём проблема?

    Эта тема была разделена из темы "InterBase"
      Цитата DroN_S @
      но при активации IBQuery


      ну для начала для изменений в базе лучше использовать

      ExpandedWrap disabled
        IBQuery1.ExecSQL;


      ну а для SELECT уже

      ExpandedWrap disabled
        IBQuery1.Open;
        ...
        IBQuery1.Close;
      Сообщение отредактировано: .DeV!L -
        .DeV!L
        это всё понятно, но речь то шла не о том... из за чего вылазиет ошибка?
          может не всем переменным присвоиз значения, посмотри, может :NVS нигде не определяется...
            .DeV!L
            в общем в база написана так...
            ExpandedWrap disabled
              CREATE table VID_SPORTA(
              NVS integer not null primary key,
              NAZVANIE varchar(40));
               
               
              CREATE table TRENER(
              NT integer not null primary key,
              FIO varchar(40),
              ZVANIE varchar(30),
              ADRES varchar(40),
              TELEFON numeric(9),
              NVS integer not null references VID_SPORTA);

            вот тригер для него
            ExpandedWrap disabled
              CREATE trigger VID_SPORTA1 for VID_SPORTA
              after update
              as
              begin
               if(old.NVS<>new.NVS) then
               update TRENER
               set NVS=new.NVS
               where NVS=old.NVS;
              end!!

            видно что NVS не может быть пустым... но как присвоить ему значение...
              DataBase

              попробуй слить мой вариант, поля там соответствуют, так что разногласий не должно быть :unsure:
                .DeV!L
                а можно скрипт в ПМ или пример с работой, а то так как то не то....
                  DroN_S, у тебя ошибка при создании самой таблицы TRENER. NVS надо определить, как внешний ключ.
                  ExpandedWrap disabled
                    create table TRENER (
                    NT integer not null primary key,
                    FIO varchar(40),
                    ZVANIE varchar(30),
                    ADRES varchar(40),
                    TELEFON numeric(9),
                    NVS integer not null,
                    foreign key(NVS) references VID_SPORTA
                    );
                  Сообщение отредактировано: Coala -
                    DroN_S

                    я там прикрепил не скрипт, а базу....
                    просто её скачать нада, на загрузившейся страничке жмёшь кнопку Free и потом ждёшь, пока отсчитается время и появится ссылка:) (весит 36Кб)
                      .DeV!L
                      да, нет, я скачал архи, в архиве баз, ты напиши маленький исходник или дай сам скрипт базы, а ток так трудно с ней работать...

                      Coala
                      Цитата
                      у тебя ошибка при создании самой таблицы TRENER. NVS надо определить, как внешний ключ.

                      можно по подробнее...
                        Давай попробуем:
                        есть таблица VID_SPORTA, в которой есть первичный ключ NVS, его ты определил.
                        Есть таблица TRENER, в которой также есть поле для указания вида спорта - причем только такого, который есть в VID_SPORTA.
                        Другие значение недопустимы. То есть - имеем место на ограничение по ссылочной целостности.
                        Для ее реализации необходимо не просто создать в TRENER поле для вида спорта, но и указать, что оно может принимать
                        только те значение, кои указаны в VID_SPORTA. То есть, использовать при создании таблицы TRENER внешний ключ
                        из таблицы VID_SPORTA :
                        ExpandedWrap disabled
                          NVS integer not null,
                          foreign key(NVS) references VID_SPORTA

                        ключевые слова foreign key и references.
                          Coala
                          и что притаком раскладе, ошибка с пустым полем пропадёт?
                            DroN_S, RTFM :wall: :wall: :wall:
                              Coala
                              Цитата
                              RTFM

                              и что бы это значило
                                я может чего-то не понял, но по порядку

                                запрос
                                ExpandedWrap disabled
                                  INSERT INTO Trener(FIO, ZVANIE,ADRES,TELEFON,NVS)
                                    VALUES(:FIO,:ZVANIE,:ADRES,:TELEFON,:NVS);


                                теперь первое:
                                в структуре таблицы первым полем идет NT - PK. Как это поле заполняется? В запросе нет этих данных.

                                Далее триггер. Это триггер "after update". Какое он может иметь отношение к INSERT INTO в TRENER????

                                Тебе перед вставкой нового тренера надо определять ключ его вида спорта из VID_SPORTA и вставлять его значение явно в запросе.

                                И еще такое замечание по поводу триггера VID_SPORTA1 - зачем редактировать PK?
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.0856 ]   [ 16 queries used ]   [ Generated: 8.07.26, 07:28 GMT ]