Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 19

Тема: Ошибка чтение несуществующего элемента

  1. #1

    По умолчанию Ошибка чтение несуществующего элемента

    Создал массив структуры типа параметр_1[*].id (datetime, receivedatetime,value и т.д.)(структура описана в библиотеке типа структура_1 поля id,datetime,receivedatetime,value..).
    И всё работает как надо- кроме того, что выдаются системные сообщения(после запуска проекта)
    -"попытка чтения несуществующего элемента". И действительно 1-ю минуту(так настроено) масив пустой
    и вполне оправданы такие сообщения , но даже после чтения таблиц БД, когда массив заполняется(через основной параметр
    PostgresSQL -запроса, который имеет тот же тип(тот же массив той же структуры)).
    (SQl-запрос типа select * from имя-таблицы where id=1 order by datetime DESC) СКАДА продолжает высчитывать ошибки обращения
    к несуществующему элементу, в программах ST типа(или цикла WHILE):
    IF параметр_1[1].datetime<>NULL
    THEN
    last_value:=параметр_1[1].value; //и это работает!!!
    END_IF;
    хотя точно параметр_1[1].datetime существует и не равен NULL(и value существует),
    но системные сообщения ругаются что попытка чтения несуществующего элемента
    и наращивают счётчик ошибок.
    Если бы не эти системные сообщения , то можно было бы сказать , что всё работает.
    Никто не встречался с такой проблемой в MS4D?
    Последний раз редактировалось AlexBut; 04.03.2025 в 16:51.

  2. #2

    По умолчанию

    вроде как NULL не понимает, поэтому и ошибку выдает!

  3. #3

    По умолчанию

    Цитата Сообщение от AlexBut Посмотреть сообщение
    IF параметр_1[1].datetime<>NULL
    Это в каком языке такие конструкции? В SQL для NULL обычно применятся что-то вроде "is not NULL", операции сравнения с NULL не работают.

  4. #4
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    12,280

    По умолчанию

    Ну очевидно же, что ST. Тоже не знаю, как там на null проверять.
    Если это строка например.

  5. #5

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    Ну очевидно же, что ST. Тоже не знаю, как там на null проверять.
    Если это строка например.
    Проще в резалтсете заменять null на нечто заведомо не существующее, но не null.
    nvl(datetime, to_date('01.01.0001')) - как-то так, детали от диалекта зависят.

  6. #6

    По умолчанию

    А как в MS4D проверять параметр на NULL?

  7. #7
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    12,280

    По умолчанию

    как вариант проверять на 0 или на длину строки, не равную 0

  8. #8

    По умолчанию

    На такую конструкцию компилятор не ругается :
    i_incr2:=1;
    WHILE Параметр_2[i_incr2].datetime<>Null
    DO
    i_incr2:=i_incr2+1;
    last_row_ev:=i_incr2-1;
    END_WHILE;
    Но MS4D в процессе исполнения выдаёт в системном окне сообщений "обращение к несуществующему элементу" и счётчик этого сообщения постоянно растёт.
    А как проверить что строка не Null(читаю таблицу БД и заранее неизвестно сколько строк заполнено).
    Тип Параметра_2 Array[*] Of Структура_2 (При компиляции нет ошибок).
    И результат работы этой программы правильный и если бы не ошибка исполнения...
    Последний раз редактировалось AlexBut; 05.03.2025 в 12:30.

  9. #9

    По умолчанию

    Вы в самом запросе null подменяйте на нечто осмысленное, выше я примерно подсказал - как. Т.е.

    select nvl(datetime_col, to_date('01.01.0001')) as datetime_col from my_table where <условие>

    Как оно (nvl) в PostgresSQL будет выглядеть - я не знаю, не знаком с ним. Но наверняка то же самое либо аналог есть.

    или в самом запросе дополнить условие where типа ...and datetime_col is not null

    чтобы заведомо строки с null'ами не получать. Как вариант.
    Последний раз редактировалось imaex; 05.03.2025 в 12:30.

  10. #10
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,466

    По умолчанию

    из дискуссии я так и не понял проблема в базе или в МС
    если по базе то не думая, есть такие варианты Screenshot 2025-03-05 123839.png
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. Удаление элемента в массиве
    от Александр2023 в разделе Помощь Разработчикам
    Ответов: 7
    Последнее сообщение: 26.06.2023, 23:57
  2. Отображение элемента
    от Dmitrijb в разделе Master SCADA 3
    Ответов: 0
    Последнее сообщение: 13.04.2022, 09:17
  3. Ошибка чтение "Универсальный конфигуратор ПЧВ"
    от flsegio в разделе Эксплуатация
    Ответов: 6
    Последнее сообщение: 01.11.2020, 03:04
  4. срабатывание элемента визуализации
    от Lebrus в разделе Разработки
    Ответов: 5
    Последнее сообщение: 26.05.2019, 13:00
  5. Фрейм, рамка элемента
    от Spawn в разделе СПК1xx (архив)
    Ответов: 4
    Последнее сообщение: 18.11.2015, 00:09

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •