AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
DAX
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.11.2019, 17:34   #1  
GSP is offline
GSP
Участник
 
34 / 10 (1) +
Регистрация: 14.10.2019
UserInfo
Новое поле в новое таблице связываю с UserInfo по полю name
Но выходит ошибка:

Значение "" в поле "ФИО" не найдено в связанной таблице "Данные пользователя".

С чем это может быть связано?
Старый 22.11.2019, 17:56   #2  
smailik is offline
smailik
Участник
Аватар для smailik
 
250 / 70 (3) ++++
Регистрация: 10.04.2012
Адрес: Москва
Смею предположить что ошибка возникает на форме при создании записи, а именно при заполнении руками нового поля? Если так, то связь источников данных вероятнее всего сделано через InnerJoin и при заполнении нового поля руками тем значением которого нет в таблице UserInfo она и ругается. В данном как вариант для этого нового поля надо сделать лукапный метод чтобы значение выбиралось из связанной таблицы, а не вводилось руками.
Старый 23.11.2019, 08:49   #3  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,427 / 1771 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Проверка на корректность вторичного ключа срабатывает даже если подчинённой таблицы нет на форме. Проверка происходит при вводе значения в поле, для которого настроена связь. В свойствах у Relation есть свойство Validate, которое отвечает за эту проверку
Старый 23.11.2019, 15:04   #4  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
642 / 347 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Цитата:
Сообщение от GSP Посмотреть сообщение
Новое поле в новое таблице связываю с UserInfo по полю name
Но выходит ошибка:

Значение "" в поле "ФИО" не найдено в связанной таблице "Данные пользователя".

С чем это может быть связано?
Связывай таблицы по полю UserId (или Id, не помню точно уже). Это уникальный первичный ключ на UserInfo. Если нужно будет ФИО, ты всегда сможешь его подтянуть. И это будет намного быстрее работать. Я не могу придумать ни одной причины, чтобы делать так, как ты сейчас пробуешь.
__________________
// no comments
Старый 24.11.2019, 20:57   #5  
GSP is offline
GSP
Участник
 
34 / 10 (1) +
Регистрация: 14.10.2019
У меня и есть лукап.
Старый 25.11.2019, 08:56   #6  
GSP is offline
GSP
Участник
 
34 / 10 (1) +
Регистрация: 14.10.2019
Эта связь уже есть
Старый 25.11.2019, 09:46   #7  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,651 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Мда... Тут даже и не понятно с чего начинать... Ликбез по теории реляционных баз данных читать как-то глупо...

Ну, для начала, сообщение об ошибке надо понимать буквально. Вот, что написано, то и есть. У Вас в Вашей таблице среди записей есть поле с пустым значением Вашего поля. По этому пустому значению предпринимается попытка найти запись в подчиненной таблице. Ничего не находит, и выводит соответствующее предупреждение.

Как так получилось - Вам лучше знать. Ищите, где такая пустота образовалась. Можно, конечно, разными настройками подавить это сообщение, но!

Так связь между таблицами не делают. В теории (и практике) реляционных баз данных связь между таблицами осуществляют по специальным полям, на которые накладывают специфические ограничения. Прежде всего, по уникальности. А у таблицы UserInfo поле Name не уникально. Т.е. связь не однозначна

Вторая проблема - поле Name может быть в любой момент изменено. Как следствие, Вы потеряете связь. Т.е. совершенно непредсказуемо для пользователя образуется связь с "левой" записью таблицы или наоборот, такая связь пропадет

Поэтому, делают следующим образом.

1. В Вашей таблице в обязательном порядке создают поле Id с кодом записи из таблицы UserInfo.

2. Заполнение поля Id
2.1 Если значение поля Name приходит "из вне" системы, то при вводе имени в modifiedField выполняют поиск записи в таблице UserInfo по указанному пользователем имени и программно заполняют поле id

В результате имеем 2 поля - значение пришедшие из вне для контроля и код записи справочника Axapta

2.2. Если в Вашей таблице надо просто выбрать запись из таблицы UserInfo, то просто Lookup для выбора Id и отображение поле Name, но уже из таблицы UserInfo
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
За это сообщение автора поблагодарили: GSP (1).
Старый 25.11.2019, 13:31   #8  
GSP is offline
GSP
Участник
 
34 / 10 (1) +
Регистрация: 14.10.2019
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Мда... Тут даже и не понятно с чего начинать... Ликбез по теории реляционных баз данных читать как-то глупо...

Ну, для начала, сообщение об ошибке надо понимать буквально. Вот, что написано, то и есть. У Вас в Вашей таблице среди записей есть поле с пустым значением Вашего поля. По этому пустому значению предпринимается попытка найти запись в подчиненной таблице. Ничего не находит, и выводит соответствующее предупреждение.

Как так получилось - Вам лучше знать. Ищите, где такая пустота образовалась. Можно, конечно, разными настройками подавить это сообщение, но!

Так связь между таблицами не делают. В теории (и практике) реляционных баз данных связь между таблицами осуществляют по специальным полям, на которые накладывают специфические ограничения. Прежде всего, по уникальности. А у таблицы UserInfo поле Name не уникально. Т.е. связь не однозначна

Вторая проблема - поле Name может быть в любой момент изменено. Как следствие, Вы потеряете связь. Т.е. совершенно непредсказуемо для пользователя образуется связь с "левой" записью таблицы или наоборот, такая связь пропадет

Поэтому, делают следующим образом.

1. В Вашей таблице в обязательном порядке создают поле Id с кодом записи из таблицы UserInfo.

2. Заполнение поля Id
2.1 Если значение поля Name приходит "из вне" системы, то при вводе имени в modifiedField выполняют поиск записи в таблице UserInfo по указанному пользователем имени и программно заполняют поле id

В результате имеем 2 поля - значение пришедшие из вне для контроля и код записи справочника Axapta

2.2. Если в Вашей таблице надо просто выбрать запись из таблицы UserInfo, то просто Lookup для выбора Id и отображение поле Name, но уже из таблицы UserInfo
Там нет пустых значений, такая ошибка выходит на выбор любого ФИО. Связь есть по id, но ошибка та же
Старый 25.11.2019, 14:03   #9  
smailik is offline
smailik
Участник
Аватар для smailik
 
250 / 70 (3) ++++
Регистрация: 10.04.2012
Адрес: Москва
Можете сюда выложить .xpo формы? Более понятно станет что да как
Старый 26.11.2019, 07:12   #10  
mdanko2000 is offline
mdanko2000
Участник
 
44 / 40 (2) +++
Регистрация: 21.04.2014
Цитата:
Сообщение от GSP Посмотреть сообщение
Эта связь уже есть
Писали же выше
Цитата:
S.Kuskov Проверка на корректность вторичного ключа срабатывает даже если подчинённой таблицы нет на форме. Проверка происходит при вводе значения в поле, для которого настроена связь. В свойствах у Relation есть свойство Validate, которое отвечает за эту проверку
Отключи на связи Validate, установив в False.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Таблица UserInfo. Права доступа. Poleax DAX: Администрирование 7 25.04.2016 12:37
SysUserInfo & UserInfo - какая разница kitty DAX: Программирование 7 10.02.2010 16:39
вопрос по userinfo fialka DAX: Программирование 3 10.10.2007 17:58
Корректировка структуры табицы UserInfo Alex_Molot DAX: Программирование 2 22.05.2007 14:14
как связать usergroupinfo c userinfo? Aslan DAX: Программирование 3 18.01.2006 09:47
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 20:38.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.