На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! информация о разделе
user posted imageДанный раздел предназначается исключительно для обсуждения вопросов использования языка запросов SQL. Обсуждение общих вопросов, связанных с тематикой баз данных - обсуждаем в разделе "Базы данных: общие вопросы". Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ.

Модераторы: Akina
  
> BC++B: Access: Параметр со значением NULL
    создаю кверик типа такого:
    INSERT INTO TAB1 VALUES (:ID, :Numbers, :LogDate);
    :ID, :Numbers, :LogDate -- понятно параметры.
    В БД указано, что тип поля Numbers может быть NULL. Таким образом иногда я вставляю значение, а иногда и не надо ничего. Так вот, делаю
    ...->ParamByName("Numbers")->Clear();
    потом даю на выполнение сиквел и что?! оно вместо NULL подставляет IS NULL! Ну и естественно вілетает ошибка... Такое впечатление, что Билдер думает, что этот параметр вставляется в секцию WHERE...

    Как все-таки заставить Билдер подставлять в текст сиквела не IS NULL, а именно NULL?
      В общем в книжке написано, что для вставки NULL значений есть 2 способа:
      1 использовать слово NULL вместо реального значения.
      2 предполагает использование разновидности синтаксиса команды INSERT, когда столбцы определяются явно, а где NULL тот столбец просто не пишет.
      ... может чем-то помог...
        В Борландовской АДО реализации параметры со значением Null и пустой строкой работают очень плохо, даже со всеми предосторожностями, изменением свойств параметра (есть там в свойствах TParameter установки по отношению к NULL) квери всё равно склонны вылетать, причём иногда с весьма странными ошибками, типа "нельзя использовать Blob field in Where statement" - т.е. кверю выбивает где-то на ранних стадиях компилляции, а ошибка всплывает какая ни поподя...

        Мой совет, никогда не используйте параметры со значением "NUll" и "пустая строка", при необходимости их вставить прямо в квере и пишите:

        Insert   into (MyField)
        Values (Null)

        В общем, если я ожидаю возможность появления такого значения, я вместо параметров генерю текст квери на-лету: не удобно, зато надёжно...
        Сообщение отредактировано: Vit -
          Сделал через одно место, но все-же:
          INSERT INTO TAB1 VALUES (:ID, IIF(:Numbers=0, NULL, :Numbers), :LogDate);
          Таким образом что-бы вставить NULL я параметру присваиваю 0.  :o
          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0173 ]   [ 15 queries used ]   [ Generated: 2.05.24, 17:05 GMT ]