:: Visual Foxpro, Foxpro for DOS
Сравнить два курсора
Centory

Сообщений: 88
Откуда: г. Зеленоград
Дата регистрации: 20.08.2004
Хочется сделать сабж. В чем суть проблемы - есть две базы - одна база это заголовк накладной, занимает одну запись в базе с уникальным полем number, вторая база это тело накладной, с полем docnumber, содержащим уникальный номер из первой базы (для привязки) и пожет содержать кучу позицицй.
Тело заголовка сравнить легко - перед редактированием документа запомниаем состояние а потом через afields или еще как сравниваем записи. Это легко.

А вот как быть с телом документа? Ведь там какие то позиции могу измениться или добавиться или удалиться.....
Может кто сталкивался с таким? Наверняка многие ведут историю редактирования документа......
Ratings: 0 negative/0 positive
Re: Сравнить два курсора
IGOR_SMIRNOVSKY

Сообщений: 132
Откуда: СПб
Дата регистрации: 02.03.2005
Работай с курсором, в нем доп. поля.
Например, поле с номером записи реальной таблицы
и т.д.




------------------
дураком помру
Ratings: 0 negative/0 positive
Re: Сравнить два курсора
PaulWist

Сообщений: 14614
Дата регистрации: 01.04.2004
Ну, например

CREATE CURSOR test (ID i, cID c(10))
INSERT INTO test (id, cid) VALUES (1, 'aa')
INSERT INTO test (id, cid) VALUES (2, 'bb')
SET MULTILOCKS on
CURSORSETPROP('buffering',5,'test')
?'--------------'
SCAN
?GETFLDSTATE(-1, 'test')
ENDSCAN
?'--------------'
UPDATE test SET id = 11 WHERE id = 1
SCAN
?GETFLDSTATE(-1, 'test')
ENDSCAN




------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Сравнить два курсора
Владимир Максимов
Автор

Сообщений: 14097
Откуда: Москва
Дата регистрации: 02.09.2000
Вообще-то, именно для того, чтобы упростить подбные задачи и было введено понятие "буфферизация". Если перед редактированием таблица была переведена в режим буферизации, то тогда:

MyTable.MyField - значение в буфере
OldVal("MyTable.MyField") - значение в исходной таблице непосредственно перед началом редактирования
CurVal("MyTable.MyField") - текущее значение в исходной таблице. Имеет смысл для оптимистической буферизации, если за то время, что данный пользователь редактировал данные другой пользователь изменил эти же данные.

Кроме того, почитай описание команд

GetFldState()
GetNextModified()
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 21 param Guest (Гостей: 19)

© 2000-2024 Fox Club 
Яндекс.Метрика