На главную Наши проекты:
Журнал   ·   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_
  
> 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?
                                  DroN_S

                                  ну а как ты работал с той базой что ты описал?
                                  так работай и с этой, она ничем не отличается в плане таблиц и набора полей в них, просто там прописаны Foreign Key и автоинкременты для Primary Key.

                                  у тя походу сама база криво создана!!! :wacko:
                                  Сообщение отредактировано: .DeV!L -
                                    .DeV!L
                                    на катай маленький пример, по работе...
                                    или давай я тебе скину свою бащу, сам попробуй с ней поработать...
                                      По сути тебе надо ответить публике на два вопроса
                                      1) Почему не записывается ID тренера
                                      2) Что в :NVS перед вставкой в таблицу TRENER и есть ли такое такое значение в поле NVS таблицы VID_SPORTA

                                      И обрати внимание на это.
                                      Цитата Coala @
                                      ключевые слова foreign key и references.
                                        SeaGirl
                                        Цитата
                                        2) Что в :NVS перед вставкой в таблицу TRENER и есть ли такое такое значение в поле NVS таблицы VID_SPORTA

                                        ничего не передаётся, а NVS в таблице VID_SPORTA есть и оно integer not null primary key...
                                          Цитата DroN_S @
                                          ничего не передаётся, а NVS в таблице VID_SPORTA есть и оно integer not null primary key...
                                          :wall: :wall: :wall:
                                          Ладно, еще раз.
                                          Вот твой запрос
                                          ExpandedWrap disabled
                                            INSERT INTO Trener(FIO, ZVANIE,ADRES,TELEFON,NVS)
                                              VALUES(:FIO,:ZVANIE,:ADRES,:TELEFON,:NVS);

                                          Какое имнно значение хранится в параметре :NVS перед выполнением этого запроса? Я прошу назвать цифру и сказать есть ли такая цифра среди записей в таблице VID_SPORTA в поле NVS.
                                            SeaGirl
                                            никакого значения нет!!!!
                                              Цитата DroN_S @
                                              никакого значения нет!!!!


                                              это и есть ошибка:)

                                              там должен быть ID вида спорта, т.е. какое-то значение из таблици VID_SPORTA из поля
                                              NVS

                                              З.Ы. звыняйтэ, но примера наверно не будет, за не имением желания и отсутствием свободного времени :wacko:
                                              Сообщение отредактировано: .DeV!L -
                                                Цитата DroN_S @
                                                никакого значения нет!!!!

                                                Значит равно Null.

                                                Далее смотрим на структуру твоей таблицы
                                                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 );

                                                Особое внимание в этой структуре уделим строке

                                                NVS integer not null,

                                                Судя по тексту выделенному красным в этом поле не может быть значения NULL. А ты пытаешься вставить такую запись, где оно будет NULL.
                                                Теперь смотрим на текст твоей ошибки
                                                Цитата DroN_S @
                                                validation error for column NVS, value "*** null ***"...

                                                который нам собственно и говорит что именно делается неправильно.

                                                Решение: Перед операцией INSERT присвоить значения параметрам которые будут вставляться.
                                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                                0 пользователей:


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