cro-logo      
Добро пожаловать, Гость. Пожалуйста, выберите Вход или Регистрация

 
 
  ГлавнаяСправкаПоискВходРегистрация  
 
Переключение на Главную Страницу Страниц: 1
Послать Тему Печать
Неправильно работает GetFieldType()? (Прочитано 393 раз)
Пытливый
Профи
****
Вне Форума



Сообщений: 280
Неправильно работает GetFieldType()?
13.03.2019 :: 18:49:47
 
Не понимаю, что происходит.
Написал простенькую проверку на ограничение по типу поля:
Код:
@n := 0
while @n <= GetFieldCount(AE{0})
do (@FieldNo := GetFieldNumberByIndex(AE, @n)
      if GetFieldType(AE{0}, @FieldNo) < 6
      then Message(@FieldNo << " " << GetFieldType(AE{0}, @FieldNo))
      @n := @n + 1) 


И получаю две непонятки.
Очень похоже, что сравнение на тип поля считает результат строковым, а не числовым и в итоге 32 оказывается меньше 6.
Да собственно вообще непонятно, что это за двузначные типы полей которых в описании я не наблюдаю.
Наверх
 
 
IP записан
 
Пытливый
Профи
****
Вне Форума



Сообщений: 280
Re: Неправильно работает GetFieldType()?
Ответ #1 - 13.03.2019 :: 20:23:30
 
Странно, но если написать несколько иначе:
Код:
@n := 0
while @n <= GetFieldCount(AE{0})
do (@FieldNo := GetFieldNumberByIndex(AE, @n)
      @FieldType := GetFieldType(AE{0}, @FieldNo)
      if @FieldType < 6
      then Message(@FieldNo << " " << @FieldType)
      @n := @n + 1)  


Ограничение по типу поля начинает работать корректно, отбираются только те поля, которые нужны, но вот тип некоторых полей отображается как двузначное число, возможно какой-то глюк Message().
Наверх
 
 
IP записан
 
Zuluss
Бета-тестер
Вне Форума


Старинный пользователь
Кронос

Сообщений: 2 529
Санкт-Петербург
Re: Неправильно работает GetFieldType()?
Ответ #2 - 14.03.2019 :: 10:04:50
 
Цитата:
...тип некоторых полей отображается как двузначное число, возможно какой-то глюк Message().

Нет не глюк. Например, 29 -  Внешний файл. Ещё есть поля уровня доступа, поля баз банков внешних форматов.

Наверх
 
 
IP записан
 
Пытливый
Профи
****
Вне Форума



Сообщений: 280
Re: Неправильно работает GetFieldType()?
Ответ #3 - 14.03.2019 :: 10:25:44
 
Так в том и дело, что двузначный код возвращается для стандартных полей. Возможно какие-то флаги, например признак множественное, добавляются к базовому простому типу поля и тогда вполне может получится составной тип отличающийся от базового, но в описании я о таком финте не нашел упоминаний.
Наверх
 
 
IP записан
 
Zuluss
Бета-тестер
Вне Форума


Старинный пользователь
Кронос

Сообщений: 2 529
Санкт-Петербург
Re: Неправильно работает GetFieldType()?
Ответ #4 - 14.03.2019 :: 12:32:09
 
Да, действительно. Для некоторых типов полей через формулы возвращается двух- и даже трехзначное значение.
В формах ввода такого не наблюдается.
Наверх
 
 
IP записан
 
Пытливый
Профи
****
Вне Форума



Сообщений: 280
Re: Неправильно работает GetFieldType()?
Ответ #5 - 15.03.2019 :: 00:48:08
 
Допер я в чем дело с этими странными двузначными типами и стало понятно почему поле с типом 21 умудряется пройти через ограничение по максимуму 6. Это оказывается множественное поле, где первое значение тип поля 2, как и должно быть, а вот 1 это флаг поля - множественное. Других флагов я пока не смог получить.
Наверх
 
 
IP записан
 
Zuluss
Бета-тестер
Вне Форума


Старинный пользователь
Кронос

Сообщений: 2 529
Санкт-Петербург
Re: Неправильно работает GetFieldType()?
Ответ #6 - 15.03.2019 :: 10:35:16
 
Вполне возможно, но требует проверки.
Это не флаги, а статусы поля. Их перечень в описании и можно посмотреть в структуре банка при проектировании.
Наверх
 
 
IP записан
 
Переключение на Главную Страницу Страниц: 1
Послать Тему Печать