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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.11.2007, 14:43   #1  
Iskatel is offline
Iskatel
Участник
 
86 / 10 (1) +
Регистрация: 18.09.2006
Столкнулся с следующей ситуацией.
Переменная типа записи возвращает пустое значение.

recHR_Employee - переменная типа записи на таблицу HR_Employee
recHR_Employee_2 - переменная типа записи на таблицу HR_Employee

Сейчас recHR_Employee.HR_Employee_TrialStartDate = ''.

recHR_Employee.RESET;
recHR_Employee.SETFILTER(recHR_Employee.HR_Employee,'%1',prmHR_Employee) ;
IF recHR_Employee.FINDFIRST THEN
dtHR_Employee_Date :=recHR_Employee.HR_Employee_TrialStartDate;

//update извне даты HR_Employee_TrialStartDate

Сейчас recHR_Employee.HR_Employee_TrialStartDate = 15.10.2007.

recHR_Employee_2.RESET;
recHR_Employee_2.SETFILTER(recHR_Employee_2.HR_Employee,'%1',prmHR_Employee) ;
IF recHR_Employee_2.FINDFIRST THEN
dtHR_Employee_Date :=recHR_Employee_2.HR_Employee_TrialStartDate;

recHR_Employee_2.HR_Employee_TrialStartDate возвращает значение = ''.
По идеи должен вернуть дату 15.10.2007, но этого не делает.

Как сделать чтобы следующий RESET вернул дату 15.10.2007 ?
Старый 06.11.2007, 14:59   #2  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Вроде как должна найти измененную запись и соответственно новое значение поля.
Нигде не ошибся в именовании переменных?
Точно делается FIND? Точно апдейтится извне данная запись?
Почему не используешь GET? Просто интересно, потому что поиск по первичному ключу, я так понял...
Старый 06.11.2007, 15:07   #3  
Iskatel is offline
Iskatel
Участник
 
86 / 10 (1) +
Регистрация: 18.09.2006
Пробавал GET - тоже самое.

Апдейт протсходит через Automation. Режим Debug Mode, точка останова после - "update извне даты HR_Employee_TrialStartDate". Смотрю значение в таблице через Query Analyzer - значение обновлено.
Старый 06.11.2007, 16:24   #4  
Corleone is offline
Corleone
Участник
 
355 / 10 (1) +
Регистрация: 27.05.2004
Адрес: London
а тут у тебя чего?
recHR_Employee.SETFILTER(recHR_Employee.HR_Employee,'%1',prmHR_Employee) ;

prmHR_Employee какое значение имеет?
Старый 06.11.2007, 17:03   #5  
Iskatel is offline
Iskatel
Участник
 
86 / 10 (1) +
Регистрация: 18.09.2006
Вообще, prmHR_Employee - входящий параметр.

prmHR_Employee переменная типа integer и пусть равняется 176.

Когда выполняется IF recHR_Employee_2.FINDFIRST THEN ...
то находит нужную строчку, но recHR_Employee_2.HR_Employee_TrialStartDate там пустая.
Старый 06.11.2007, 17:20   #6  
Corleone is offline
Corleone
Участник
 
355 / 10 (1) +
Регистрация: 27.05.2004
Адрес: London
короче непонятно какой будет фильтр стоять после такого
recHR_Employee.SETFILTER(recHR_Employee.HR_Employee,'%1',prmHR_Employee);

Если нужную строку находит, значит MODIFY не сделал наверное.
Старый 06.11.2007, 17:44   #7  
Fordewind is offline
Fordewind
Участник
 
1,134 / 10 (3) +
Регистрация: 01.12.2005
Цитата:
Сообщение от Programmer Посмотреть сообщение
Вообще, prmHR_Employee - входящий параметр.

prmHR_Employee переменная типа integer и пусть равняется 176.
Если prmHR_Employee переменная типа integer, то не надо использовать '%1' да и SETFILTER вообще. Лучше использовать SETRANGE.

По существу: Nav работает с версиями базы. А в текущей версии требуемое поле пусто. Я бы посоветовал использовать SELECTLATESTVERSION перед строкой
recHR_Employee_2.RESET;
Старый 06.11.2007, 18:09   #8  
Corleone is offline
Corleone
Участник
 
355 / 10 (1) +
Регистрация: 27.05.2004
Адрес: London
Цитата:
Сообщение от Fordewind Посмотреть сообщение
Если prmHR_Employee переменная типа integer, то не надо использовать '%1' да и SETFILTER вообще. Лучше использовать SETRANGE.
Я вообще не понял на какое поле фильтр ставится!

recHR_Employee - переменная типа записи на таблицу HR_Employee
recHR_Employee.SETFILTER(recHR_Employee.HR_Employee,'%1',prmHR_Employee);

Это поле называется также как таблица или чего это значит?
Старый 06.11.2007, 18:23   #9  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Цитата:
Сообщение от Gmc Посмотреть сообщение
Это поле называется также как таблица или чего это значит?
Да нет. Название поля HR_Employee. Просто
recHR_Employee.SETFILTER(recHR_Employee.HR_Employee,'%1',prmHR_Employee)
можно было записать так
recHR_Employee.SETFILTER(HR_Employee,'%1',prmHR_Employee);

Лондон-Париж, та-да-ту-там ... та-ду-дам )

Упс. А житель туманного альбиона прав ) По представленному коду поле называется так же, как сама таблица. Че делать будем, коллеги? Мировое сообщество, что скажете? )
Старый 06.11.2007, 18:31   #10  
Corleone is offline
Corleone
Участник
 
355 / 10 (1) +
Регистрация: 27.05.2004
Адрес: London
Цитата:
Сообщение от romeo Посмотреть сообщение
Да нет. Название поля HR_Employee. Просто
recHR_Employee.SETFILTER(recHR_Employee.HR_Employee,'%1',prmHR_Employee)
можно было записать так
recHR_Employee.SETFILTER(HR_Employee,'%1',prmHR_Employee);

Лондон-Париж, та-да-ту-там ... та-ду-дам )
Нет там такого поля, но тогда уж GET если имеется ввиду код сотрудника.

Но это не суть проблемы, ошибка в коде
//update извне даты HR_Employee_TrialStartDate
скорее всего.

Я думаю мистер Программер нам прояснит ситуацию.
Старый 07.11.2007, 06:14   #11  
Iskatel is offline
Iskatel
Участник
 
86 / 10 (1) +
Регистрация: 18.09.2006
recHR_Employee.RESET;
recHR_Employee.SETFILTER(recHR_Employee.HR_Employee,'%1',prmHR_Employee) ;
IF recHR_Employee.FINDFIRST THEN
dtHR_Employee_Date :=recHR_Employee.HR_Employee_TrialStartDate;

//update извне даты HR_Employee_TrialStartDate Сейчас recHR_Employee.HR_Employee_TrialStartDate = 15.10.2007.

SELECTLATESTVERSION ;

recHR_Employee_2.RESET;
recHR_Employee_2.SETFILTER(recHR_Employee_2.HR_Employee,'%1',prmHR_Employee) ;
IF recHR_Employee_2.FINDFIRST THEN
dtHR_Employee_Date :=recHR_Employee_2.HR_Employee_TrialStartDate;


Вернуло то, что нужно. А именно дату 15.10.2007.

Всем спасибо.
 


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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 13:53.