Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите с refresh / 16 сообщений из 16, страница 1 из 1
30.04.2010, 01:54
    #36606486
tim07
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с refresh
Доброго времени суток!
Мне нужно чтоб на форме, куда вводятся данные о клиенте, были пустые поля для заполнения. Но когда я запускаю форму, то у меня все время в полях значения, которые были введены в последний раз. Как это исправить?
...
Рейтинг: 0 / 0
30.04.2010, 06:12
    #36606530
Dag
Dag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с refresh
А какой ControSource у этих полей?
...
Рейтинг: 0 / 0
30.04.2010, 12:38
    #36607202
tim07
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с refresh
тип - текстовое поле
ControlSource - клиент.фамилия
ControlSource - клиент.имя
и т.д.
...
Рейтинг: 0 / 0
30.04.2010, 13:24
    #36607340
З.Ы.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с refresh
tim07тип - текстовое поле
ControlSource - клиент.фамилия
ControlSource - клиент.имя
и т.д.
append blank или insert (SQL)
для "клиент", затем по необходимости tableupdate,tablerevert
...
Рейтинг: 0 / 0
30.04.2010, 16:16
    #36607818
tim07
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с refresh
А как использовать tableupdate и tablerevert? Чтобы после добавления записей поля очищались, и во время следующего запуска были пустыми?
...
Рейтинг: 0 / 0
01.05.2010, 15:22
    #36608504
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с refresh
Если в качестве источника данных (ControlSource) указаны поля таблицы, то это означает, что редактирование данных напрямую изменяет содержимое текущей записи таблицы. Как следствие, всегда должна существовать запись, поля которой будут редактироваться.

Если хотите заполнять поля новой записи, то эта новая запись должна быть создана до начала редактирования. Физически. Как и было сказано, командой

APPEND BLANK

Эту команду надо дать в init-формы

Но прямое и непосредственное редактирование записей таблицы - не есть хорошо. По многим причинам. Поэтому, необходимо разделить процесс ввода/модификации данных от собственно записи внесенных изменений в таблицу. Для этой цели используется технология буферизации.

Существует 4 типа буферизации. Наложить их можно разными способами. Наиболее простой - это в форме открыть DataEnvironment, выделить нужную таблицу и в окне Properties установить свойство

BufferModeOverride = 5 -Optimistic table buffering

В результате, "поверх" табличных данных как бы накладывается прозрачная "калька". Пользователю кажется, что запись идет напрямую в таблицы, однако на практике, запись идет именно на эту прозрачную "кальку".

По окончании процесса ввода изменений пользователь либо принимает все внесенные модификации (дает команду TableUpdate()) и изменения переносятся с кальки в собственно таблицу, либо отвергает все изменения (дает команду TableRevert()) и калька просто уничтожается, ничего не перенося в исходную таблицу.

Если вы дали команду APPEND BLANK в буферизированной таблицы, то TableRevert() автоматически "откатит" создание новой записи. Т.е. физически, новая запись создана не будет.
...
Рейтинг: 0 / 0
03.05.2010, 01:23
    #36609360
tim07
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с refresh
Вставил append blank в инит формы, и выбрал тип буферизации в dataenvironment -5. Но все равно при запуске формы поля заполнены данными из первой записи. Может нужно создать локальное представление, и уже с ним работать?
...
Рейтинг: 0 / 0
03.05.2010, 05:12
    #36609388
Dag
Dag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с refresh
А ты уверен, что Append blank кошерный? В смысле , в правильную ли таблицу вставляется запись? Сделай так
APPEND BLANK IN Моя_таблица
...
Рейтинг: 0 / 0
03.05.2010, 10:50
    #36609475
tim07
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с refresh
Dag, спасибо! Теперь запись добавляется при запуске формы, но вот как использовать tableupdate() и tablerevert() для меня непонятно. Попытался вот так -

IF messagebox("Ñîõðàíèòü äàííûå?",1+32+0,"Ñîõðàíåíèå")=1
TABLEUPDATE()
ELSE
TABLEREVERT()
endif

Но выдает ошибку - Function requires row or table buffering mode (Error 1586)
Хотя я в DataEnvironment добавил эту таблицу и поставил buffering mod = 5.
...
Рейтинг: 0 / 0
03.05.2010, 11:25
    #36609502
Dag
Dag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с refresh
Возможно, эта та же ошибка - не выбрана нужная таблица в качестве текущей. Предварительно
можно дать команду

select моя_таблица
...
Рейтинг: 0 / 0
03.05.2010, 13:33
    #36609603
tim07
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с refresh
Да, действительно! Спасибо, Dag!!!

Еще одна проблема -- есть календарь (ActiveX control), в нем нужно выбрать дату, и, нажав на определенную кнопку, проверить - существует ли такая дата в таблице и, если есть, вывести на форму в какой-нибудь контейнер? Формат даты в таблице -- datetime. "Время" выбирать не нужно, только дату.
...
Рейтинг: 0 / 0
03.05.2010, 13:49
    #36609615
Fffffffffffffffffff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с refresh
Календарь ActiveX control не входит в число стандартных контролов FoxPro. Если со стандартными еще
работать не научился, не берись за ActiveX.
...
Рейтинг: 0 / 0
03.05.2010, 13:51
    #36609616
Dag
Dag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с refresh
Календарь вернет дату , например m.MyDate
тогда
LOCATE FOR DTOS(моя_таблица.нужное_поле_даты_времени)==DTOS(m.MyDate)

IF FOUND()
*нашли
else
* не нашли
endif
...
Рейтинг: 0 / 0
03.05.2010, 18:27
    #36609817
tim07
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с refresh
Спасибо огромное! Dag! Все получилось без проблем!=)))
...
Рейтинг: 0 / 0
04.05.2010, 13:25
    #36610884
tim07
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с refresh
Снова проблема! Значение из календаря сравнивается только с одной записью из таблицы!
Вот мой код:

a_date=ThisForm.Text1.Value
LOCATE FOR DTOS(rejs.time_otpr)==DTOS(a_date)
IF FOUND()
IF MESSAGEBOX("Åñòü ðåéñû â óêàçàííûé äåíü. Ïðîäîëæèòü îôîðìëåíèå áèëåòîâ?",1+32+0,"Óñïåøíî!")=1
thisformset.form6.Hide
thisformset.form7.Show
ENDIF
ELSE
messagebox("Íåò ðåéñîâ â óêàçàííûé äåíü!",1+32+0,"Îøèáêà!")
ENDif

text1 это значение из календаря!
Помогите пожалуйста!
...
Рейтинг: 0 / 0
04.05.2010, 13:45
    #36610934
tim07
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с refresh
Извиняюсь, решил сам! Там надо поставить просто select!
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите с refresh / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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