powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Обновление grid
25 сообщений из 61, страница 2 из 3
Обновление 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
25 сообщений из 61, страница 2 из 3
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Обновление grid
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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