06.11.2007, 14:43 | #1 |
Участник
|
Столкнулся с следующей ситуацией.
Переменная типа записи возвращает пустое значение. 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 |
Участник
|
Вроде как должна найти измененную запись и соответственно новое значение поля.
Нигде не ошибся в именовании переменных? Точно делается FIND? Точно апдейтится извне данная запись? Почему не используешь GET? Просто интересно, потому что поиск по первичному ключу, я так понял... |
|
06.11.2007, 15:07 | #3 |
Участник
|
Пробавал GET - тоже самое.
Апдейт протсходит через Automation. Режим Debug Mode, точка останова после - "update извне даты HR_Employee_TrialStartDate". Смотрю значение в таблице через Query Analyzer - значение обновлено. |
|
06.11.2007, 16:24 | #4 |
Участник
|
а тут у тебя чего?
recHR_Employee.SETFILTER(recHR_Employee.HR_Employee,'%1',prmHR_Employee) ; prmHR_Employee какое значение имеет? |
|
06.11.2007, 17:03 | #5 |
Участник
|
Вообще, prmHR_Employee - входящий параметр.
prmHR_Employee переменная типа integer и пусть равняется 176. Когда выполняется IF recHR_Employee_2.FINDFIRST THEN ... то находит нужную строчку, но recHR_Employee_2.HR_Employee_TrialStartDate там пустая. |
|
06.11.2007, 17:20 | #6 |
Участник
|
короче непонятно какой будет фильтр стоять после такого
recHR_Employee.SETFILTER(recHR_Employee.HR_Employee,'%1',prmHR_Employee); Если нужную строку находит, значит MODIFY не сделал наверное. |
|
06.11.2007, 17:44 | #7 |
Участник
|
Цитата:
По существу: Nav работает с версиями базы. А в текущей версии требуемое поле пусто. Я бы посоветовал использовать SELECTLATESTVERSION перед строкой recHR_Employee_2.RESET; |
|
06.11.2007, 18:09 | #8 |
Участник
|
Цитата:
recHR_Employee - переменная типа записи на таблицу HR_Employee recHR_Employee.SETFILTER(recHR_Employee.HR_Employee,'%1',prmHR_Employee); Это поле называется также как таблица или чего это значит? |
|
06.11.2007, 18:23 | #9 |
Участник
|
Да нет. Название поля 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 |
Участник
|
Цитата:
Но это не суть проблемы, ошибка в коде //update извне даты HR_Employee_TrialStartDate скорее всего. Я думаю мистер Программер нам прояснит ситуацию. |
|
07.11.2007, 06:14 | #11 |
Участник
|
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. Всем спасибо. |
|