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

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

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

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

или что-то в этом роде.
...
Рейтинг: 0 / 0
не получается "Сохранение"
    #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
не получается "Сохранение"
    #32548180
ЕленаШ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо.
ВладимирМ, трудно мне дается справочник и ComboBox.
Не можешь посмотреть где у меня ошибка, если есть время конечно.
...
Рейтинг: 0 / 0
не получается "Сохранение"
    #32548219
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в чем проблема-то? Что-то я в твоем примере никакого ComboBox не нашел.
...
Рейтинг: 0 / 0
не получается "Сохранение"
    #32548246
ЕленаШ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пока Combo даже не рискую использовать, а здесь для таблицы shz все нормально, а для otd то два поля отображаются в Grid то одно - последнее
...
Рейтинг: 0 / 0
не получается "Сохранение"
    #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
не получается "Сохранение"
    #32548378
ЕленаШ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще раз спасибо, ВладимирМ!
Все стало отлично:)
...
Рейтинг: 0 / 0
не получается "Сохранение"
    #32549452
ЕленаШ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ, со столбцами все нормально, с кнопкой добавить - проблема, не определяет первичный ключ
cprKey=""
nKeyVal=EVAL(m.cprKey) дает ошибку "Missing Expression"
...
Рейтинг: 0 / 0
не получается "Сохранение"
    #32550178
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не понял, а что ты ожидала получить в результате макроподстановки от пустой строки? Evaluate() - это вариант макроподстановки.

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

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

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


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