На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS

Дорогие друзья! Поздравляем вас с Новым 2018 годом!

Всем удачи, успеха и благополучия!
В новом году ожидаем новых рекордов при подсчёте количества ёлочек на экране ;)


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  все  ( Перейти к последнему сообщению )  
> TClientDataset обработка ошибки
    Всем привет есть такой код редактирования
    ExpandedWrap disabled
      cdsF.Edit;
      cdsFMNo.AsString:=edMNo.Text;
      cdsFKomu.AsString:=edEmployee.Text;
      cdsFDataVyda4i.AsString:=edData.Text;
      cdsF.Post;

    поле cdsFMNo целого типа.
    При случайном присваивании ему не числового значения в строке
    ExpandedWrap disabled
      cdsFMNo.AsString:=edMNo.Text;

    происходит ошибка вида '<значение> is not valid integer for field MNo'
    Вопрос в том где ее можно перехватить и обработать?
    В TClientDataset есть события OnPostError и OnEditError оба не реагируют на данное исключение.
    Можно конечно заключить данный код в try..except но хотелось бы все ошибки данных обрабатывать самим TClientdataset
    возможно ли это?
      Читать про try-except
        Цитата Павел Калугин @
        Читать про try-except

        про try..except я все знаю и уже давно сына :blush:
          Цитата Delfin4ik @
          При случайном присваивании ему не числового значения в строке

          Случайностей быть не должно. Контролируй ввод, например по маске.
          Цель - ничто , процесс - все.
            Цитата Bas @
            Случайностей быть не должно. Контролируй ввод, например по маске.
            Тот же TEdit можно сделать NumericOnly (в свойствах смотри, точное название не помню).
              Цитата Delfin4ik @
              Цитата Павел Калугин @
              Читать про try-except

              про try..except я все знаю и уже давно сына :blush:

              о как.. Какой у нас старый Дельфинчик шестидесяти лет отроду завелся...
              Ладно это лирика
              Ну раз знаешь про try..except все так "оберини" им post и внутри обрабатывай ошибку
              Ну или, как СанИваныч и Bas верно пишут, не допускай ввода фигни
              1. разрешить в edMNo ввод только чисел (например в событии OnKeyPressed обработку сделать)
              2. раз поле числовое нечего ему asstring текст совать. есть же AsInteger, например
              Сообщение отредактировано: Павел Калугин -
                Цитата Павел Калугин @
                Какой у нас старый Дельфинчик шестидесяти лет отроду завелся
                Павел! Когда-то я нашего уважаемого Борисыча сынком обозвал! :D
                ЗЫ - не удержался, сорри за флуд...
                Сообщение отредактировано: #SI# -
                  Павел Калугин,#SI# - Использование преобразования очень помогает, вместо "неявного" преобразования
                  Цель - ничто , процесс - все.
                    Bas, я про это и аписал вторым пунктом ;)
                      man strtointdef
                        решение было принято такое: недопускать занесения неправильных значений.
                          То есть "asstring" оставили?
                            Цитата Павел Калугин @
                            То есть "asstring" оставили?

                            ну да оставил, в редакторе же текст а поле целого типа.
                            для проверки значения решил поюзать валидатор из JEDI VCL
                              Цитата Delfin4ik @

                              Delfin4ik поле.asinteger =strtoint(edit.text)
                              Так ты сразу отловишь косяки ввода. А они будут, как ни рисуй защиту от дурака.
                                Цитата Павел Калугин @
                                как ни рисуй защиту от дурака
                                Если речь о целых числах, то защиту надо просто включить:
                                Цитата #SI# @
                                TEdit можно сделать NumericOnly (в свойствах смотри, точное название не помню)
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script Execution time: 0,1263 ]   [ 18 queries used ]   [ Generated: 23.01.18, 03:53 GMT ]