powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите обновить Grid
8 сообщений из 8, страница 1 из 1
Помогите обновить Grid
    #37000209
Amilman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема в том что после заполнения строк и нажатия на кнопку "Добавить" Grid становится белым и аналогично если нажать на Иконку корзины в моей форме.

Вот Код кнопки "Добавить" - USE "data\Debtors.dbf"
DO case
CASE EMPTY(thisform.Text1.Value)=.f.
APPEND BLANK
replace Debtors.fio WITH thisform.Text1.Value
thisform.Text1.Value=""
replace Debtors.money WITH thisform.Text2.Value
thisform.Text2.Value=""
replace Debtors.subject WITH thisform.Text3.Value
thisform.Text3.Value=""
thisform.refresh()
ENDCASE
use

А это код "Корзины" - USE "data/Debtors"
pr=0
SCAN FOR DELETED()=.t.
pr=pr+1
ENDSCAN

IF pr<>0
IF MESSAGEBOX("Удалить запись?",4+48+0,"Удаление")=6
DELETE
PACK
ELSE recall all
ENDIF
ELSE
WAIT WINDOW AT 22,30"Нет записей к удалению";
TIMEOUT 16
ENDIF
use

Прикрепил картинку своей формы.
...
Рейтинг: 0 / 0
Помогите обновить Grid
    #37000231
...
Рейтинг: 0 / 0
Помогите обновить Grid
    #37000514
reware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Amilman,
Надо знать, как работает PACK. Эта команда (в двух словах) вначале переписывает записи без метки DELETED из пакуемой таблицы во временный файл, потом ЗАКРЫВАЕТ и удаляет пакуемый файл и переименовывает временный файл именем исходного. Т.е. на какое-то время ваш грид остаётся без источника данных. Отсюда и белый экран. Поставьте после PACK что-нибудь вроде
Код: plaintext
1.
thisform.grid1.RecordSource="MyOldTable" && имя пакуемой таблицы
а для каждой колонки грида заново обьявите их ControlSource.
...
Рейтинг: 0 / 0
Помогите обновить Grid
    #37000591
Amilman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
reware,
Попробовал но чёто не получается (
Теперь вот так выглядит USE "data/Debtors"
pr=0
SCAN FOR DELETED()=.t.
pr=pr+1
ENDSCAN

IF pr<>0
IF MESSAGEBOX("Удалить запись?",4+48+0,"Удаление")=6
DELETE
PACK
thisform.Grid1.RecordSource="Debtors"
ThisForm.Grid1.Column1.ControlSource = "Debtors.fio"
ThisForm.Grid1.Column2.ControlSource = "Debtors.money"
ThisForm.Grid1.Column3.ControlSource = "Debtors.subject"
ELSE recall all
ENDIF
ELSE
WAIT WINDOW AT 22,30"Нет записей к удалению";
TIMEOUT 16
ENDIF
use
...
Рейтинг: 0 / 0
Помогите обновить Grid
    #37000629
Amilman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Но он ругается теперь на Column
...
Рейтинг: 0 / 0
Помогите обновить Grid
    #37000820
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Amilmanreware,
Попробовал но чёто не получается (
И не получится.

Grid - это "окно" через которое Вы смотрите на предварительно открытую таблицу . Нет открытой таблицы - нечего отображать.

Обратите внимание, что таблица должна быть открыта . FoxPro в принципе не может работать с закрытыми таблицами. Команда USE открывает таблицу. Но та же самая команда USE, но уже без параметров - закрывает ранее открытую таблицу

Т.е. Вы сделали следующее:

Вероятно, Ваша таблица добавлена в DataEnvironment формы, как следствие, таблица открывается автоматически в момент открытия формы. Поэтому при открытии формы Grid отображает то, что сейчас открыто. Далее Вы нажимаете кнопку "Добавить". Первая же команда

Код: plaintext
USE "data\Debtors.dbf"

Для начала закроет ранее открытую таблицу, что сразу же разрушит Grid. Тем не менее, Вы сможете добавить запись. А вот завершающая команда USE без параметров закроет таблицу "с концами". Все! Работа с формой завершена. Grid просто нечего отображать. Не осталось ни одной открытой таблицы.

Это, так сказать, "принципиальная" ошибка. Далее идут менее принципиальные, но, тоже существенные ошибки.

Во-первых, в процессе работы делать упаковку (давать команду PACK) таблиц - глупо. "Накладные" расходы большие (во всех смыслах), а результат незначительный. Гораздо проще записи, помеченные как удаленные скрывать настройкой

Код: plaintext
SET DELETED ON

Во-вторых, чтобы сохранить структуру Grid при закрытии таблицы источника необходимо ПЕРЕД закрытием таблицы "отключить" Grid от таблицы. Еще раз напомню, что PACK пере открывает таблицу. Т.е. закрывает ее и снова открывает.

Как сделать отключение Grid от таблицы показано по приведенной выше ссылке (подчеркнутый текст в сообщении проходящий. - это ссылка. Надо навести на нее указатель мыши и щелкнуть левой клавишей мыши). Пример reware - не полный. В том числе и поэтому, работать не будет.
...
Рейтинг: 0 / 0
Помогите обновить Grid
    #37002037
Amilman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ,
Спасибо больше вы расписали что ещё сделать и теперь всё работает :D
И всем остальным спасибо кто решил мне помочь )
...
Рейтинг: 0 / 0
Помогите обновить Grid
    #37002647
reware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМПример reware - не полный. В том числе и поэтому, работать не будет.
Да я что, я ничего, примус починяю. Я хотел человека подтолкнуть к чтению чего-либо.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите обновить Grid
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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