powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблема с полем Rule при дополнении структуры таблиц.
16 сообщений из 16, страница 1 из 1
Проблема с полем Rule при дополнении структуры таблиц.
    #35876974
Сергун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую!

У меня возникли затруднения с выполнением следующего задания по Visual FoxPro

6) Дополнить структуру каждой таблицы с помощью Конструктора таблиц следующим образом: для каждого поля каждой таблицы заполнить поле Caption, несколько полей каждой таблицы должны иметь значение по умолчанию (Default value), контроль вводимых значений (Rule) и маску ввода (Input Mask).

У меня проблема с полем Rule, в котором записывается правило ввода полей таблиц. Работаю я с таблицей Методические пособия. Туда входят поля: "Код методического пособия", "Название", "Автор", "Год издания" и "Общее количество экземпляров на кафедре". Правило ввода я решил сделать следующим образом. Код методического пособия и общее количество экземпляров на кафедре должно быть больше нуля; название пособия должно превышать один символ; поле автор, вместе с его фамилией и инициалами, должно превышать семь символов; контроль ввода года издания пособия по стандарту – от 1970 до 2009 включительно.

В связи с этим поле Rule должно иметь следущее содержание:

cdbook>0+langth(title)>1+langth(author)>7+ (1970<=year<2010)+many>0

При нажатии кнопки Ок, мне выдается ошибка о том, что файл langth.prg не найден, хотя это вовсе не файл, а команда, проверяющая длину слова.

При нажатии кнопки Ок, мне выдаётся ещё одна ошибка следующего содержания: "Field CDBOOK validation rule is violated". Т.е. Правила подтверждения Области CDBOOK нарушены. А почему?... Пробовал переводить cdbook в строковый тип, пишет ошибку о несоответствии типов...

Скажите, пожалуйста, как правильно мне оформить запись в поле Rule?
...
Рейтинг: 0 / 0
Проблема с полем Rule при дополнении структуры таблиц.
    #35877097
Сергунcdbook>0+langth(title)>1+langth(author)>7+ (1970<=year<2010)+many>0
То есть Вы считаете, что логические данные можно складывать арифметически, а не логически? И какой результат ожидается от .t.+.f.?
Может таки надо применять AND?
При нажатии кнопки Ок, мне выдается ошибка о том, что файл langth.prg не найден, хотя это вовсе не файл, а команда, проверяющая длину слова. В фоксе нет такой команды. Но есть функция и она пишется несколько по-другому - len()
...
Рейтинг: 0 / 0
Проблема с полем Rule при дополнении структуры таблиц.
    #35877248
Зингер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Давайте поэтапно разберемся сначала с этим.

Сергун

В связи с этим поле Rule должно иметь следущее содержание:

cdbook>0+langth(title)>1+langth(author)>7+ (1970<=year<2010)+many>0

При нажатии кнопки Ок, мне выдается ошибка о том, что файл langth.prg не найден, хотя это вовсе не файл, а команда, проверяющая длину слова.



Опишите как описывается вами пользовательская функция langth().
...
Рейтинг: 0 / 0
Проблема с полем Rule при дополнении структуры таблиц.
    #35877514
reware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергун
В связи с этим поле Rule должно иметь следущее содержание:
cdbook>0+langth(title)>1+langth(author)>7+ (1970<=year<2010)+many>0
При нажатии кнопки Ок, мне выдается ошибка о том, что файл langth.prg не найден, хотя это вовсе не файл, а команда, проверяющая длину слова.


Нет в фоксе такой функции langth(). Есть для этого функция len().
...
Рейтинг: 0 / 0
Проблема с полем Rule при дополнении структуры таблиц.
    #35878180
Сергун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу прощения... Просто на многих языках есть зарезервированная функция langth(), возвращающая длину строки... А про Visual FoxPro я не нашёл про это и подумал также... У меня по заданию нужно ещё заполнить поле Default value, в котором хранится значение, принимаемое полем по умолчанию. Вот там я применял сложение, а в поле Rule значит сложение неприемлемо?... Значит содержимое этого поля должно быть следующим:

cdbook>0 and lan(title)>1 and lan(author)>7 and (1970<=year<2010) and many>0

Спасибо!
...
Рейтинг: 0 / 0
Проблема с полем Rule при дополнении структуры таблиц.
    #35878181
Сергун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу прощение... Вместо lan() - len()...
...
Рейтинг: 0 / 0
Проблема с полем Rule при дополнении структуры таблиц.
    #35878246
Сергун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ничего не пойму... Написал исправленный вариант:

cdbook>0 and lan(title)>1 and lan(author)>7 and (1970<=year<2010) and many>0

Но всё равно выдаётся ошибка о несоответствии типов и что Правила подтверждения Области CDBOOK нарушены... Почему?...

P.S. Строка у меня преобразилась в следующий вид:

cdbook>0.AND.LAN(title)>1.AND.LAN(author)>7.AND.(1970<=year<2010).AND.many>0

Скажите, пожалуйста, что можно сделать с полем cdbook? Пробовал перевести в строковый тип, не помогает...
...
Рейтинг: 0 / 0
Проблема с полем Rule при дополнении структуры таблиц.
    #35878266
Сергун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовал написать вот так:

cdbook>0.AND.LAN(title)>1+LAN(author)>7.AND.(1970<=year<2010)+many>0

Тоже самое...
...
Рейтинг: 0 / 0
Проблема с полем Rule при дополнении структуры таблиц.
    #35878271
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У тебя сообщение об ошибке следует читать так: выражение, записанное в RULE поля CDBOOK вернуло "ложь".

Все дело в том, в какой именно момент происходит вычисление выражения RULE. Точнее, какие именно значения у всех остальных полей, указанных в этом выражении на момент его вычисления.

Так вот, RULE поля выполняется сразу же в момент изменения значения этого поля. Вне зависимости от того, успели измениться значения других полей или нет. Например, ты меняешь значение полей CDBOOK и TITLE. Но проблема в том, что на момент выполнения RULE будет изменено только значение CDBOOK, а до поля TITLE дело просто не дойдет.

Поэтому, такие сложные выражения RULE надо записывать не в проверку одного поля, а в проверку всей записи. В дизайнере таблицы это на закладке Table раздел "Record Validation"

Подробнее читай здесь Правила (Rule)
...
Рейтинг: 0 / 0
Проблема с полем Rule при дополнении структуры таблиц.
    #35878275
Сергун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Простите за невнимательность... Функция LEN() там...
...
Рейтинг: 0 / 0
Проблема с полем Rule при дополнении структуры таблиц.
    #35878316
СергунПопробовал написать вот так:
LAN(author)>7.AND.(1970<=year<2010)
1. Что такое LAN()
2. Откуда взят такой способ сравнения? Имеется в виду 1970<=year<2010? Не пробовали по-отдельности каждое условие посмотреть? Например, взять и написать:
Код: plaintext
? 1970 <= 1980 < 2010 
и посомтреть куда и насколько далеко пошлет фокс за такие сравнения?
...
Рейтинг: 0 / 0
Проблема с полем Rule при дополнении структуры таблиц.
    #35879293
Сергун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проходящий спасибо! Я уже сам в этом разобрался... Просто постепенно начал писать правила для полей и выяснил ошибку... Вот теперь мне надо сделать следующее.

Дополнить программу, выполняющую создание структуры таблиц таким образом, чтобы вначале создавалась база данных, затем структура таблиц, затем создавались индексы и отношения между таблицами. Для созданной базы данных вызвать конструктор. Совет: данную программу лучше хранить и запускать в отдельном каталоге.

Я так понимаю, это програмный код писать надо?... Как его написать, я знаю! Вопрос: Куда?...
...
Рейтинг: 0 / 0
Проблема с полем Rule при дополнении структуры таблиц.
    #35879339
Сергун[Я так понимаю, это програмный код писать надо?... Как его написать, я знаю! Вопрос: Куда?...В текстовый файл с раcширением .prg, который, обычно, создается сам по команде modify command.
...
Рейтинг: 0 / 0
Проблема с полем Rule при дополнении структуры таблиц.
    #35879345
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЯ так понимаю, это програмный код писать надо?... Как его написать, я знаю! Вопрос: Куда?...

обычно делаем абсолютно наоборот.
в дизайнере рисуем БД, таблички, связи
и затем натравливаем на готовую БД утилиту gendbc.prg
и получаем код для создания БД.
...
Рейтинг: 0 / 0
Проблема с полем Rule при дополнении структуры таблиц.
    #35879388
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
open database (home()+"\Samples\Northwind\northwind")
SET DEFAULT TO (home()+"\tools\gendbc")
DO gendbc.prg

выполните в коммандном окне,
посмотрите что получилось
...
Рейтинг: 0 / 0
Проблема с полем Rule при дополнении структуры таблиц.
    #35879434
Сергун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо огромное!!! Посмотрю...

Ещё бы мне хотелось уточнить. Я перечитал задание и обратил внимание на это: " для каждого поля каждой таблицы ...". Вот то, что я сделал - это применится для всей таблицы или нужно каждое поле выделить и заполнить нужные поля? Или это будет одно и тоже?...
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблема с полем Rule при дополнении структуры таблиц.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]