powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Обновление grid
61 сообщений из 61, показаны все 3 страниц
Обновление grid
    #34410256
StQFox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Народ, подскажи, как решить следующую проблему:
есть форма с grid-ом, запускаю обработку (по кнопке на форме), после завершения обработки
grid пропадает.
Таблицы в процессе выполнения не закрываются, а значит ссылки живые.
Метод grid.refresh не помогает.
Заранее всем спасибо!
...
Рейтинг: 0 / 0
Обновление grid
    #34410329
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Что значит "пропадает" ?
2. Если не "пропадает", а белый квадрат, то все-таки источник данных "слетает" у GRID:
Вот несколько причин ()
a) SELECT ... INTO ... в источник данных для GRID
b) SQLEXEC в таблицу с источником данных GRID
с) PACK
d) меняетя DataSession у формы командой SET DATASESSION TO...
...
Если все не то, то приведите ваш код обработки.
С уважением, Алексей
...
Рейтинг: 0 / 0
Обновление grid
    #34410345
StQFox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aleksey-K1. Что значит "пропадает" ?
2. Если не "пропадает", а белый квадрат, то все-таки источник данных "слетает" у GRID:
Вот несколько причин ()
a) SELECT ... INTO ... в источник данных для GRID
b) SQLEXEC в таблицу с источником данных GRID
с) PACK
d) меняетя DataSession у формы командой SET DATASESSION TO...
...
Если все не то, то приведите ваш код обработки.
С уважением, Алексей

Вы правы - белый квадрат. Но с таблицей данных (например,bBase), которая используется в качестве источника данных для grid, действий никаких не выполняется (pack и тому подобное). Жмем кнопку на форме, запускается prg, выполняется обработка данных в других таблицей, затем возвращаемся RETURN-ом. Ставлю SELE на область, в которой открыта bBase - белый квадрат.
Как в таком случае восстановить источник данных?
...
Рейтинг: 0 / 0
Обновление grid
    #34410359
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сначал разберитесь почему пропадает и когда!
Чудес не бывает!
Проверьте в пошаговом режиме от момента нажатия кнопки на форме и до "белого квадрата".
С уважением, Алексей
...
Рейтинг: 0 / 0
Обновление grid
    #34410387
StQFox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aleksey-KСначал разберитесь почему пропадает и когда!
Чудес не бывает!
Проверьте в пошаговом режиме от момента нажатия кнопки на форме и до "белого квадрата".
С уважением, Алексей

Оригинальный ответ :)
ПОЧЕМУ и КОГДА ))))
КОГДА и так понятно.
я бы понял, если выполнялись действия над таблицей (grid). В prg нет нигде ссылок на грид. Выполняются действия над сторонними таблицами, затем сообщение "Выполнено". Уже перед появлением сообщения - появляется белый квадрат. Вот и резонно спросить ПОЧЕМУ?
Область, в которой открыта таблица работает (проверял, используя Browse - там данные доступны). Т.е., если вызвать browse после RETURN из prg, все работает.
Нужна команда, которая восстанавливает ссылку или проверяет ее
...
Рейтинг: 0 / 0
Обновление grid
    #34410460
StQFox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разобрался в чем причина:
в запускаемой процедуре есть команда: DO CPZERO.PRG WITH "base_r.dbf",866
Если закомментировать, grid работает.
Во всяком случае причина понятна, обойти можно. Хотелось бы услышать мнение на этот счет.
Всем спасибо!
...
Рейтинг: 0 / 0
Обновление grid
    #34410516
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StQFoxОригинальный ответ :)
ПОЧЕМУ и КОГДА ))))
КОГДА и так понятно.

Так все таки не все понятно :)
StQFox
в запускаемой процедуре есть команда: DO CPZERO.PRG WITH "base_r.dbf",866

А чего тут комментировать!!!
Утилита CPZERO перезаписывает заголовок DBF. Разумеется, закрывает DBF как таблицу и открывает через FOPEN.
С уважением, Алексей
...
Рейтинг: 0 / 0
Обновление grid
    #34410548
StQFox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А чего тут комментировать!!!
Утилита CPZERO перезаписывает заголовок DBF. Разумеется, закрывает DBF как таблицу и открывает через FOPEN.
С уважением, Алексей[/quot]

Так грид использует другую таблицу данных. Вот и непонятно.
Комментарий помог выявить проблему.
Установку метки код.страницы можно перетащить в UnLoad формы
...
Рейтинг: 0 / 0
Обновление grid
    #34410706
-=AlexiS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтобы было понятно стоит заглянуть в исходник CpZero
там вы увидите чуждную
команду- CLOSE DATABASES
т.е.
сначала CpZero запоминает что было открыто - потом ВСЕ закрывает делает своё "грязное" дело
и открывает все обратно.
...
Рейтинг: 0 / 0
Обновление grid
    #34942614
Larkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу прощения что поднимаю старую тему, но, все-таки, если приходится делать pack, то что нужно сделать чтобы вместо грида не появлялся белый прямоугольник? Что-то не могу найти ничего.
...
Рейтинг: 0 / 0
Обновление grid
    #34942646
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LarkinПрошу прощения что поднимаю старую тему, но, все-таки, если приходится делать pack, то что нужно сделать чтобы вместо грида не появлялся белый прямоугольник? Что-то не могу найти ничего.
Заполнить свойства грида программно.

По хорошему все операции требующие монопольного доступа (PACK, INDEX, REINDEX) собираются в отдельную процедуру.

чтобы скрыть помеченные на удаление записи: SET DELETED ON
...
Рейтинг: 0 / 0
Обновление grid
    #34942713
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LarkinПрошу прощения что поднимаю старую тему, но, все-таки, если приходится делать pack, то что нужно сделать чтобы вместо грида не появлялся белый прямоугольник? Что-то не могу найти ничего.
1. "Отвязать" GRID от источника: RecordSource = ''
2. Сделать все, что надо с источником
3. "Привязать" GRID к источнику: RecordSource = 'MyTable'
4. "Привязать" все колонки GRID к источнику:
Column1.ControlSource = 'MyTable.MyFiled1'
Column2.ControlSource = 'MyTable.MyFiled2'
...
Для автоматизации этого процесса можно создать свой класс GRID и дабавить в него пару методов, которые будет этим заниматься.
С уважением, Алексей.
...
Рейтинг: 0 / 0
Обновление grid
    #34942741
Larkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большое, теперь понятно!
...
Рейтинг: 0 / 0
Обновление grid
    #35329800
Звег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Народ !Уже не первый раз вижу совет - отвязать источник сделать все что нужно с источником и привязать его обратно ! у меня вопросы :
1)Если у меня в RecordSourse указана таблица а в RowSourse каждого столбца - столбец ! то мне надо убивать иточник только для таблицы или для всех столбцов и потом перепрявязывать не только таблицу к источнику но и столбцы ? или достаточно убрать RecordSourse таблицы ?
2) 1.Убираю источник
2.delete
3.close tables all
4.pack dbf моя таблица
5. - как открыть таблицы опять потом что после того как я их закрываю то у меня же все итпо слетает во всех грида ! причем после того как я оопять перерпривязываю источник то у меня в гриде начинает отображаться таблица но все настройки грида слетают - разме столбцов цвет строк шрифт итак далее ! как открывать таблицы опять что бы их можно было привязать к гриду ?
с коммандой USE у меня чет не лды как тО !
...
Рейтинг: 0 / 0
Обновление grid
    #35329810
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЗвегНарод !Уже не первый раз вижу совет - отвязать источник сделать все что нужно с источником и привязать его обратно !
Не менее часто здесь говорят - не надо паковать таблицы во время работы юзера, не надо. Для этого должен быть отдельный режим/пункт/тулза. И если следовать этому совету, то поставленный вопрос и не возникнет.
...
Рейтинг: 0 / 0
Обновление grid
    #35330076
Звег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я пишу простейшую курсовую работу - это не то случай когда надо делать дополнительную тулзу =) просто хочеться то бы все было красиво =)
...
Рейтинг: 0 / 0
Обновление grid
    #35330329
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЗвегЯ пишу простейшую курсовую работу - это не то случай когда надо делать дополнительную тулзу =) просто хочеться то бы все было красиво =)
И для простейшей работы сами себе создаем трудности? Интересный подход...
...
Рейтинг: 0 / 0
Обновление grid
    #35334839
Звег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну а какой подход вы посоветуете ? просто впервые открыл фокс недельку назад ! Лазию в нем тока на работе - раз в 4 дня ! В первый день сдела все что нужно - Пэйдж фрэйм в каждой странице по гриду подсчет данным все на кнопки привязал все работате вот тока теперь проблема с таблицами! Как добавлять и удалять данные из них что бы с гридом траблов не возникло ! Ребята посоветовали set deleted on и удялять данные чисто визуально а pack делать когда закрываю приложение что бы не приходилось потом таблицы по новой открывать !
Буду рад любому совету !
...
Рейтинг: 0 / 0
Обновление grid
    #35334847
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЗвегРебята посоветовали set deleted on и удялять данные чисто визуально а pack делать когда закрываю приложение что бы не приходилось потом таблицы по новой открывать !

Вот и следуйте этому совету.
...
Рейтинг: 0 / 0
Обновление grid
    #35335873
Звег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А в случае добавление записи в таблицу или ее редактирования ? Тут то мне надо будет получить моментальный результат сразу без перезапуска приложения !
...
Рейтинг: 0 / 0
Обновление grid
    #35335897
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЗвегА в случае добавление записи в таблицу или ее редактирования ? Тут то мне надо будет получить моментальный результат сразу без перезапуска приложения !
И что Вам мешает это сделать? Кстати, что именно понимается под моментальным результатом? А какие еще есть результаты? Вам чем-то помеченные на удаление записи мешают?
...
Рейтинг: 0 / 0
Обновление grid
    #35335916
Звег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если я удаляю запиь из таблицы и делаю pack то грид ругеться так как для этго я закрываю таблицы ! Было предложенно делать set deleted on и удалять записи чисто визуально а потом при выходе из приложения автоматом делать пак и все остальное ! А как поступать когда нужно добавить запись или отредактировать ! Выходит из приложения и опять его запускать - не вариант ! Вот что я имелл вииду !
...
Рейтинг: 0 / 0
Обновление grid
    #35335917
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЗвегЕсли я удаляю запиь из таблицы и делаю pack то грид ругеться так как для этго я закрываю таблицы ! Было предложенно делать set deleted on и удалять записи чисто визуально а потом при выходе из приложения автоматом делать пак и все остальное ! А как поступать когда нужно добавить запись или отредактировать ! Выходит из приложения и опять его запускать - не вариант ! Вот что я имелл вииду !
Так что мешает добавлять и изменять? В чем проблема-то?
...
Рейтинг: 0 / 0
Обновление grid
    #35335921
Звег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если я добавляю запись с таблицу то для ее отображения в гриде я должен выполнить pack ! Чуть выше мы пришли к выводу что его приемлимо выполнять только при выходе из приложения ! Перезапускать приложение каждый раз после добавления или редактиования записи - не очень то удобно !
...
Рейтинг: 0 / 0
Обновление grid
    #35335928
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЗвегЕсли я добавляю запись с таблицу то для ее отображения в гриде я должен выполнить pack !
ЧТО?! Кто Вам такую чушь сказал? И самому проверить это трудно?
...
Рейтинг: 0 / 0
Обновление grid
    #35335937
Звег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Начальство еще на работе не могу достать домашний ноутбук ! простите если заставил нервничать ! спасибо !
...
Рейтинг: 0 / 0
Обновление grid
    #35335946
Звег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Начальство еще на работе не могу достать домашний ноутбук ! простите если заставил нервничать ! спасибо !
...
Рейтинг: 0 / 0
Обновление grid
    #35335976
Galyamov Rinat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для того, чтобы грид переотобразил данные используй ThisForm.Grid1.Refresh()

А покавать таблицы при многопользовательском доступе в принципе невозможно
(нужно заюзать таблицы эксклюзивно). В рабочих приложениях команда pakc
выполняется как осмысленная упаковка таблиц и то только админом.

PS Более чем за семь лет (учитывая период написания программы) так и не
написал процедуру упаковки таблиц, т.к. иногда прибегают дикие пользователи
и просят востановить некоторую запись, которую они удалили, скажем месяц
назад.
Мне проще сделать recall, чем доставать диски с бэкапами.
Тем более, что в таблицах заполняются дополнительные поля: кто удалил, когда
удалил - очень удобно при разборе полетов.


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Обновление grid
    #35354321
tipadub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DO FORM formdd
IF .NOT. USED ('dopden')
USE dopden IN 0
ENDIF
SELECT dopden
ThisForm.Grid1.Refresh()

в форме formdd вноситься запись в таблицу dopden, после перхода в форму с гридом, в гриде белое поле
...
Рейтинг: 0 / 0
Обновление grid
    #35355166
tipadub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что делать?
...
Рейтинг: 0 / 0
Обновление grid
    #35355232
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tipadub...
USE dopden IN 0
...
Это зачем? Если таблица (источник грида) закрывается, то грид становится белым квадратом, после USE ... надо грид программно восстанавливать
...
Рейтинг: 0 / 0
Обновление grid
    #35355510
Galyamov Rinat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> USE dopden IN 0
> ThisForm.Grid1.Refresh()

И что он тебе должен переотобразить????

Ты лишил грид ИСТОЧНИКА данных. Кто тебе сказал, что он начнет использовать
первые попавшиеся данные для отображения?

USE dopden IN 0

ThisForm.Grid1.RecordSource = 'dopden'
ThisForm.Grid1.Refresh()


А перед тем как лишить грид источника правильнее сделать


ThisForm.Grid1.RecordSource = ''
USE in dopden

USE dopden IN 0
ThisForm.Grid1.RecordSource = 'dopden'
ThisForm.Grid1.Refresh()


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Обновление grid
    #35355946
tipadub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо! Помогло
...
Рейтинг: 0 / 0
Обновление grid
    #35357484
bodrox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksey-K1. "Отвязать" GRID от источника: RecordSource = ''
Лучше так:
Код: plaintext
RecordSource = SPACE( 0 )
...
Рейтинг: 0 / 0
Обновление grid
    #35357512
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bodrox Aleksey-K1. "Отвязать" GRID от источника: RecordSource = ''
Лучше так:
Код: plaintext
RecordSource = SPACE( 0 )

А в чем собственно разница?
Код: plaintext
? '' == space( 0 )
...
Рейтинг: 0 / 0
Обновление grid
    #35357540
bodrox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T bodrox Aleksey-K1. "Отвязать" GRID от источника: RecordSource = ''
Лучше так:
Код: plaintext
RecordSource = SPACE( 0 )

А в чем собственно разница?
Код: plaintext
? '' == space( 0 )

Странно, но когда '' то настройки грида слетают... А когда space(0), то потом при RecordSource = OldSource настройки грида восстанавливаются.
VFoxHelpUsing SPACE(0) might not preserve all the grid settings that you want. You might need to reset some settings in code after setting the RecordSource property.
...
Рейтинг: 0 / 0
Обновление grid
    #35357549
bodrox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выше не то сцитировал :(
--------------
Новичок в VFOX
...
Рейтинг: 0 / 0
Обновление grid
    #35358286
tipadub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
опять я.
Существует форма с гридом grid1

на кнопке добавить:
IF .NOT. USED ('dopden')
USE dopden IN 0
ENDIF
SELECT dopden
SCATTER MEMVAR BLANK
DO FORM formdd
GO bottom
thisform.Grid1.RecordSource = dopusk
thisform.Grid1.Refresh()

На кнопке удалить:
lnMsgResult=MESSAGEBOX('Внимание! Запись будет удалена!'+'Подтвердите удаление!',52,'Удаление!')
IF lnMsgResult=6
* Удаление в основной базе
SELECT dopden
DELETE
thisform.grid1.RecordSource=.null.
USE IN dopden
select 0
USE dopden EXCLUSIVE
PACK in dopden
thisform.Grid1.RecordSource = dopusk
thisform.Grid1.Refresh()
ENDIF


в форме formdd на кнопке сохранить:
IF EMPTY(THISFORM.Text1.Value)
DO ERORRFORM
ELSE
cText=ALLTRIM(thisform.Text1.Value)
IF ! USED('dopden')
USE dopden in 0
ENDIF
SELECT dopden
LOCATE FOR dopden.dopusk = cText
IF !FOUND()
APPEND BLANK
GATHER memvar
THISFORM.RELEASE
MESSAGEBOX ('Запись добавлена!',0)
ELSE
DO ERORRZAP
THISFORM.REFRESH
ENDIF
ENDIF

Данные сохраняються, удаляються в таблицах, но не обновляються в гриде
thisform.grid1.RecordSource=.null.
thisform.Grid1.RecordSource = dopusk
thisform.Grid1.Refresh()
данный кусман я взял с форума но он не работает.
Кто поможет разобраться.
За ранее благодарен
...
Рейтинг: 0 / 0
Обновление grid
    #35358896
bodrox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
После манипуляций с рекордсоурсом делаю так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
WITH THISFORM.GRID1
	.COLUMN1.WIDTH =  100 
	.COLUMN1.HEADER1.CAPTION = 'Бла-бла-бла'
	.setfocus()
	.click()
ENDWITH

thisform.refresh()
Т.е. я не делаю отключение рекордсоурса с обратным включением. Столбцы-то не меняются, меняются только данные.
--------------
Новичок в VFOX
...
Рейтинг: 0 / 0
Обновление grid
    #35359163
Galyamov Rinat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что такое dopusk в строке
thisform.Grid1.RecordSource = dopusk ?

Это переменная? А какое в ней значение????


И вообще, тебе вот этот кусок что дает?
USE IN dopden
select 0
USE dopden EXCLUSIVE
PACK in dopden

Исходя из этого куска могу сказать одно - прога не реальная. Т.е.
использование ее не предполагается. Совсем. Вообще.
Тогда следующий вопрос - если проге жить изначально не суждено, зачем такие
заморочки?


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Обновление grid
    #35360726
tipadub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dopusk это таблица из которой данные идут в грид (сделано по совету)



USE IN dopden
select 0
USE dopden EXCLUSIVE
PACK in dopden

так же совет, puck используеться для того чтобы данные были удалены из таблицы сразу

P.S. Я не просил рецензии, я просил помощи. Это курсач.
...
Рейтинг: 0 / 0
Обновление grid
    #35360907
tipadub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так то нибуть реально поможет или нет?
...
Рейтинг: 0 / 0
Обновление grid
    #35361003
Galyamov Rinat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Так то нибуть реально поможет или нет?

Тебе ночью помогать чтоли???

Работающие люди (а знают в основном только они) по ночам спят, ну или
занимаются более приятными вещами ;)


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Обновление grid
    #35361008
Galyamov Rinat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> так же совет, puck используеться для того чтобы данные были удалены из
> таблицы сразу
>
> P.S. Я не просил рецензии, я просил помощи. Это курсач.

Ну так а почему ты прислушиваешься к одним советм и не прислушиваешься к
другим? Я считаю - слушать надо всех, анализировать что тебе советуют, и
принимать самостоятельные решения относительно ТВОЕЙ ситуации.

PACK применяется реальных таблицах КРАЙНЕ редко и то только в тех случаях,
когда кол-во удаленных записей превышает некоторые разумные пределы.


> dopusk это таблица из которой данные идут в грид (сделано по совету)

> USE IN dopden
> select 0
> USE dopden EXCLUSIVE
> PACK in dopden

чего-то я непойму. dopusk - это то что надо, а тогда dopden здесь при чем?


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Обновление grid
    #35361043
Galyamov Rinat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И почему dopusk написано без кавычек?


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Обновление grid
    #35362325
авторТак то нибуть реально поможет или нет?

редактировать можно и в отдельной форме,
если это необходимо,
то грид сделайте риадонли и допишите форму редактирования записи
...
Рейтинг: 0 / 0
Обновление grid
    #35363197
tipadub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dopden - это таблица
dopusk - атрибут этого отношения (dopden)
pack не производился, так как таблица dopden использовалась, по этому мне предложили данный текст
USE IN dopden
select 0
USE dopden EXCLUSIVE
PACK in dopden
хотя я так и не понял зачем её отключать и подключать снова
Puck мне нужен для того что бы удалять записи безвозвратно, сразу.
Зачем?
ситуация:
есть предмет А с кодом В, где В уникальный ключ
при вводе данных был внесён неправильно код В, запись с этим предметом была помечена на удаление, но фактически осталась в таблице.
вводиться предмет С, код которого как раз таки и являеться В. Но так как он до сих пор остался в таблице, происходит запрет записи. Вот в принципе и всё.
Советами я пользуюсь. Некоторые не действуют. А некоторые мне непонятны: типа вставь это и всё ок. а куда вставить, фиг его знает
...
Рейтинг: 0 / 0
Обновление grid
    #35363206
Dag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tipadub
ситуация:
есть предмет А с кодом В, где В уникальный ключ
при вводе данных был внесён неправильно код В, запись с этим предметом была помечена на удаление, но фактически осталась в таблице.
вводиться предмет С, код которого как раз таки и являеться В. Но так как он до сих пор остался в таблице, происходит запрет записи. Вот в принципе и всё.


Код B для предмета А можно подменить фиктивным уникальным значением, а затем пометить на удаление. А паковать уже в отдельной процедуре по мере надобности.

хотя я так и не понял зачем её отключать и подключать снова
Команда Pack проходит только при монопольном открытии таблицы-для этого ее, открытую в разделяемом режиме нужно закрыть и заново открыть EXCLUSIVE.
...
Рейтинг: 0 / 0
Обновление grid
    #35363413
Galyamov Rinat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: tipadub
> dopden - это таблица
> dopusk - атрибут этого отношения (dopden)

Какого отношения??? Какой атрибут??? dopusk - это символьная переменная???
Если нет, то почему без кавычек???


> pack не производился, так как таблица dopden использовалась, по этому
> мне предложили данный текст
Тебе его предложили именно потому, что не производится PACK, хотя надо.
А вот теперь вопрос, а надо ли???


> хотя я так и не понял зачем её отключать и подключать снова
Ну если это чисто курсовой, который гарантированно будет запущен всего один
раз, можно сразу открыть таблицу exclusive и работать с ней, хотя при PACK
все равно recordsource надо переопределить


> есть предмет А с кодом В, где В уникальный ключ
> при вводе данных был внесён неправильно код В, запись с этим
> предметом была помечена на удаление, но фактически осталась в таблице.

Если под фразой "уникальный ключ", подразумевается ПЕРВИЧНЫЙ ключ таблицы,
то ввод таких ключей руками - это очень непраильно. Во первых
негарантируется уникальность, во вторых это ВНУРЕННИЕ дела программы, про
которые пользователю знать не нужно.

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

Внимание вопрос, что делать? Отказать человеку в прописке? Удалить ту
запись которая уже была в таблице или другое???
Этому отказать - неправильно. Удалить ту запись которая была - тоже не
правильно, т.к. тогда потеряется инфа о том, чтотот человек был где-то
прописан. И т.д.

Иными словами, отдавать ПЕРВИЧНЫЙ КЛЮЧ на откуп пользователя - это обрекать
систему на подобные непонятки.

> вводиться предмет С, код которого как раз таки и являеться В. Но так
> как он до сих пор остался в таблице, происходит запрет записи.
Т.е. у тебя ругается на нарушения уникальности индекса???
Тогда поставь условие for !dele() для самого индека

>А некоторые мне непонятны: типа вставь это и всё ок. а куда вставить, фиг
>его знает
Спрашивай, читай форумы, книжки. Выясняй. А иначе, пока не поймешь - нифига
не научишься.


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Обновление grid
    #35363446
tipadub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dag Спасибо! Очень интересное предложение. В будущем попробую
Сделал проще

lnMsgResult=MESSAGEBOX('Внимание! Запись будет удалена!'+'Подтвердите удаление!',52,'Удаление!')
IF lnMsgResult=6
* Удаление в основной базе
SELECT dopden
DELETE
thisform.Grid1.Refresh()
ENDIF

в основной процедуре
SET DELETED ON.
обработка записей на удаление не происходит. Сам недоучил.
пока решил оставить так. Т.е. без использования Pack.

Вопрос обнавления грида при вводе новых записей остаёться открытым
таблица dopden: примари ключ и атрибут dopusk/
оснавная форма содержит грид

прога на кнопке добавить:
IF .NOT. USED ('dopden')
USE dopden IN 0
ENDIF
SELECT dopden
SCATTER MEMVAR BLANK
DO FORM formdd
GO bottom
thisform.Grid1.RecordSource = 'dopden'
thisform.Grid1.Refresh()

переходит в форму formdd в которой вносяться вводимые данные,
кнопка сохранить:

IF EMPTY(THISFORM.Text1.Value)
DO ERORRFORM
ELSE
cText=ALLTRIM(thisform.Text1.Value)
IF ! USED('dopden')
USE dopden in 0
ENDIF
SELECT dopden
LOCATE FOR dopden.dopusk = cText
IF !FOUND()
APPEND BLANK
GATHER memvar
THISFORM.RELEASE
MESSAGEBOX ('Запись добавлена!',0)
ELSE
DO ERORRZAP
THISFORM.REFRESH
ENDIF
ENDIF

результат: закрываеться форма formdd
запись в таблицу вноситься,
в гриде вместо данных из столбца dopusk, данные из столбца с ключами
...
Рейтинг: 0 / 0
Обновление grid
    #35363449
tipadub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Rinat спасибо за помощь!
Я начинающий и в действительности очень многое не понятно.

По поводу первичного ключа:
ситуация такова, есть личный номер, который даёться не мной. чтото вроде номера паспорта
его уникальность проверяеться при вводе данных. я просто не вижу смысла использования первичного ключа, созданного программно, если есть уникальный ключ.
А если юзер при вводе видит что такой личный номер уже существует, то нужно разбираться или с записью уже имеющую такой номер, или с вводомым номером. Но два одинаковых номера в базе не должно быть

dopden.dopusk - тип данных character, не пойму зачем нужны '', всё работает и без них
...
Рейтинг: 0 / 0
Обновление grid
    #35363452
tipadub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Rinat, ещё вопрос не касающийся темы, если открыта база данных, всегда нужно использовать use имя таблицы ? Или же хватает select имя таблицы
...
Рейтинг: 0 / 0
Обновление grid
    #35363535
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>если открыта база данных, всегда нужно использовать use имя таблицы? Или же хватает select имя таблицы
Если база одна то хватит и просто имени таблицы. Если их несколько то без имени базы ищется таблица в текущей
...
Рейтинг: 0 / 0
Обновление grid
    #35363536
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>если открыта база данных, всегда нужно использовать use имя таблицы? Или же хватает select имя таблицы
Если база одна то хватит и просто имени таблицы. Если их несколько то без имени базы ищется таблица в текущей
...
Рейтинг: 0 / 0
Обновление grid
    #35363580
tipadub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Burn, я наверное не правильно выразился
при открытой базе, в которой находиться таблиться dopden
use dopden
select dopden;

или же хватит просто select dopden
...
Рейтинг: 0 / 0
Обновление grid
    #35363603
Galyamov Rinat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Rinat, ещё вопрос не касающийся темы, если открыта база данных,
> всегда нужно использовать use имя таблицы? Или же хватает select имя
> таблицы


use - открывает таблицу
select - выбирает ее как используемую по умолчанию.


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Обновление grid
    #35363605
Galyamov Rinat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Burn, я наверное не правильно выразился
> при открытой базе, в которой находиться таблиться dopden
> use dopden
> select dopden;

Сначал use (один раз на сессию, т.е. если форма имеет private data session,
то в ней надо заного открыть таблицу), а потом select`а хватит


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Обновление grid
    #35363617
Galyamov Rinat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Я начинающий и в действительности очень многое не понятно.
>
> По поводу первичного ключа:
Ситуацию с уникальным паспортом я тебе привел. Данные по человеку нужно
занести и отпустить его с миром, а потом уже разбираться, почему номер
неуникальный. А первичный ключ - это первичный ключ. он нужен для внутринних
связей и смысловую нагрузку на него нефиг возлогать!!!


> dopden.dopusk - тип данных character, не пойму зачем нужны '', всё
> работает и без них
Я вижу как оно у тебя работает.


В одном месте ты пишешь:

прога на кнопке добавить:
....
thisform.Grid1.RecordSource = 'dopden'
thisform.Grid1.Refresh()

Т.е. говоришь гриду, отображать таблицу "dopden"

В другом пытаешься заставить грид отображать таблицу, название которой
находится в поле dopusk.



PS Ты бы все таки чуток почитал книжек, а?


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Обновление grid
    #35363645
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select MyTable для смены текущего алиаса можно не использовать в большинстве случаев. Многие команды понимают явное указание алиаса
Код: plaintext
1.
replace in MyTable ...
skip in MyTable

Galyamov Rinat
> Я начинающий и в действительности очень многое не понятно.
...
PS Ты бы все таки чуток почитал книжек, а?
+1
...
Рейтинг: 0 / 0
Обновление grid
    #35363797
tipadub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
всем спасибо!
Заработало благодаря совету Alexsey-K

Конечный вариант:
IF .NOT. USED ('dopden')
USE dopden IN 0
ENDIF
SELECT dopden
thisform.grid1.RecordSource = ''
SCATTER MEMVAR BLANK
DO FORM formdd
thisform.Grid1.RecordSource = 'dopden'
thisform.Grid1.column1.ControlSource='dopden.dopusk'

По поводу всех эпититов:
Книжки почитываю - но не всегда найдёшь ответ в них. в книжках авторов Гурвица и Шапорева все на примерах простенньких баз и однотабличных запросов. Всё сделано на мастерах, или просто написан листинг без объяснений что к чему. Книги Омельченко и Мусиной я у нас в продаже не нашёл. По сему легче обратиться на форум.

по поводу use
IF .NOT. USED ('dopden')
USE dopden IN 0
ENDIF
этим я проверял открыта ли таблица dopden и если нет открывал её (совет одного хорошего программиста, что при открытии новых форм лучьше проверить) Но после высказываний типа а зачем это? я усомнился, я всё таки не асс, может их действительно не надо открывать...
Ещё раз всем спасибо! Кто ещё хочет поглумиться До встречи в запросах и отчётах!
...
Рейтинг: 0 / 0
Обновление grid
    #35363857
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tipadub
по поводу use
IF .NOT. USED ('dopden')
USE dopden IN 0
ENDIF
этим я проверял открыта ли таблица dopden и если нет открывал её (совет одного хорошего программиста, что при открытии новых форм лучьше проверить) ...
Совет хороший, тоже всегда так делаю. Т.к. таблица может быть открыта не только с использованием USE и отследить все места ее открытия сложно.
При явном закрытии тоже подобную проверку делать не помешает.

tipadubКнижки почитываю... Поищи М.Базияна "Использование Visual VoxPro 6" - хорошая книга.
Книги с кучей скриншотов фоксовых визардов не бери, визарды в фоксе практически не используются разработчиками.
...
Рейтинг: 0 / 0
61 сообщений из 61, показаны все 3 страниц
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Обновление grid
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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