Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / не получается "Сохранение" / 10 сообщений из 10, страница 1 из 1
04.06.2004, 10:07
    #32547906
ЕленаШ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не получается "Сохранение"
на кнопке выхода из формы так

if MessageBox("Хотите сохранить изменения?",3 + 32,"Подтверждение")=6
TableUpdate(.T.)
else
TableRevert(.T.)
endif
ThisForm.Release

это сообщение выдается в любом случае - а надо - только когда записи были изменены
Заранее спасибо
...
Рейтинг: 0 / 0
04.06.2004, 10:20
    #32547931
Reznichenko Y.V.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не получается "Сохранение"
Если я правильно понял, то следует сделать так:

if Updated()
if MessageBox(...
................
endif
endif

или что-то в этом роде.
...
Рейтинг: 0 / 0
04.06.2004, 10:22
    #32547939
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не получается "Сохранение"
Ну, так сначала проверьте были-ли изменения.

Для табличной буферизации

IF GetNextModified(0,"MyTable")<>0
* Была модификация
ENDIF

Для строковой буферизации или если нельзя перемещать указатель записи

LOCAL lcModify
lcModify = GetFldState(-1,"MyTable")
IF LEN(ChrTran(m.lcModify),"1","")>0
* Быда модификация
ENDIF

Правда, использование GetFldState() не всегда надежно, поскольку статус модификации конкретного поля может быть изменен явно, используя функцию SetFldState(). Если нужна однозначность, то придется в цикле пробежаться по всем полям (FCOUNT(), FIELD()) и сравнить OldVal() с текущим значением
...
Рейтинг: 0 / 0
04.06.2004, 11:35
    #32548180
ЕленаШ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не получается "Сохранение"
Спасибо.
ВладимирМ, трудно мне дается справочник и ComboBox.
Не можешь посмотреть где у меня ошибка, если есть время конечно.
...
Рейтинг: 0 / 0
04.06.2004, 11:49
    #32548219
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не получается "Сохранение"
А в чем проблема-то? Что-то я в твоем примере никакого ComboBox не нашел.
...
Рейтинг: 0 / 0
04.06.2004, 11:57
    #32548246
ЕленаШ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не получается "Сохранение"
пока Combo даже не рискую использовать, а здесь для таблицы shz все нормально, а для otd то два поля отображаются в Grid то одно - последнее
...
Рейтинг: 0 / 0
04.06.2004, 12:11
    #32548279
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не получается "Сохранение"
Для Grid - не надо указывать RecordSourceType = 0 - Table. Это приведет к массе "глюков". Оставь значение по умолчанию RecordSourceType = 1 - Alias

Макроподстановка, конечно, сильная штука, но если все то же самое можно задать явно, то и следует использовать явное указание.

У Grid есть такая коллекция Columns, т.е. все присвоения для столбцов можно делать так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
for i= 1  to m.NmKol
	WITH ThisForm.Grid1.Columns(m.i)
		WITH .Header1
			.Caption=...
			.Alignment=...
		ENDWITH
		.ControlSource=FIELD(m.i+ 1 )
	ENDWITH
endfor
...
Рейтинг: 0 / 0
04.06.2004, 12:46
    #32548378
ЕленаШ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не получается "Сохранение"
Еще раз спасибо, ВладимирМ!
Все стало отлично:)
...
Рейтинг: 0 / 0
05.06.2004, 07:18
    #32549452
ЕленаШ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не получается "Сохранение"
ВладимирМ, со столбцами все нормально, с кнопкой добавить - проблема, не определяет первичный ключ
cprKey=""
nKeyVal=EVAL(m.cprKey) дает ошибку "Missing Expression"
...
Рейтинг: 0 / 0
07.06.2004, 09:54
    #32550178
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не получается "Сохранение"
Не понял, а что ты ожидала получить в результате макроподстановки от пустой строки? Evaluate() - это вариант макроподстановки.

Вообще, идеология формирования нового значения ключевого поля через ПОИСК в существующей таблицы в корне неверна. Пока с твоей программой работает один пользователь - это еще сойдет. Но вот при многопользовательской работе ты очень быстро получишь ситуацию, когда 2 пользователя попытаются присвоить одно и то же значение.

Самое разумное, это использовать служебную таблицу, для хранения последнего использованного (или первого НЕ использованного) значений ключевых полей ВСЕХ таблиц базы данных.

Поищи по этой конференции по ключевому слову "NewID"
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / не получается "Сохранение" / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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