|
|
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
Народ, подскажи, как решить следующую проблему: есть форма с grid-ом, запускаю обработку (по кнопке на форме), после завершения обработки grid пропадает. Таблицы в процессе выполнения не закрываются, а значит ссылки живые. Метод grid.refresh не помогает. Заранее всем спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2007, 03:40 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
1. Что значит "пропадает" ? 2. Если не "пропадает", а белый квадрат, то все-таки источник данных "слетает" у GRID: Вот несколько причин () a) SELECT ... INTO ... в источник данных для GRID b) SQLEXEC в таблицу с источником данных GRID с) PACK d) меняетя DataSession у формы командой SET DATASESSION TO... ... Если все не то, то приведите ваш код обработки. С уважением, Алексей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2007, 07:36 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
Aleksey-K1. Что значит "пропадает" ? 2. Если не "пропадает", а белый квадрат, то все-таки источник данных "слетает" у GRID: Вот несколько причин () a) SELECT ... INTO ... в источник данных для GRID b) SQLEXEC в таблицу с источником данных GRID с) PACK d) меняетя DataSession у формы командой SET DATASESSION TO... ... Если все не то, то приведите ваш код обработки. С уважением, Алексей Вы правы - белый квадрат. Но с таблицей данных (например,bBase), которая используется в качестве источника данных для grid, действий никаких не выполняется (pack и тому подобное). Жмем кнопку на форме, запускается prg, выполняется обработка данных в других таблицей, затем возвращаемся RETURN-ом. Ставлю SELE на область, в которой открыта bBase - белый квадрат. Как в таком случае восстановить источник данных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2007, 08:02 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
Сначал разберитесь почему пропадает и когда! Чудес не бывает! Проверьте в пошаговом режиме от момента нажатия кнопки на форме и до "белого квадрата". С уважением, Алексей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2007, 08:22 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
Aleksey-KСначал разберитесь почему пропадает и когда! Чудес не бывает! Проверьте в пошаговом режиме от момента нажатия кнопки на форме и до "белого квадрата". С уважением, Алексей Оригинальный ответ :) ПОЧЕМУ и КОГДА )))) КОГДА и так понятно. я бы понял, если выполнялись действия над таблицей (grid). В prg нет нигде ссылок на грид. Выполняются действия над сторонними таблицами, затем сообщение "Выполнено". Уже перед появлением сообщения - появляется белый квадрат. Вот и резонно спросить ПОЧЕМУ? Область, в которой открыта таблица работает (проверял, используя Browse - там данные доступны). Т.е., если вызвать browse после RETURN из prg, все работает. Нужна команда, которая восстанавливает ссылку или проверяет ее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2007, 08:57 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
Разобрался в чем причина: в запускаемой процедуре есть команда: DO CPZERO.PRG WITH "base_r.dbf",866 Если закомментировать, grid работает. Во всяком случае причина понятна, обойти можно. Хотелось бы услышать мнение на этот счет. Всем спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2007, 09:32 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
StQFoxОригинальный ответ :) ПОЧЕМУ и КОГДА )))) КОГДА и так понятно. Так все таки не все понятно :) StQFox в запускаемой процедуре есть команда: DO CPZERO.PRG WITH "base_r.dbf",866 А чего тут комментировать!!! Утилита CPZERO перезаписывает заголовок DBF. Разумеется, закрывает DBF как таблицу и открывает через FOPEN. С уважением, Алексей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2007, 09:50 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
А чего тут комментировать!!! Утилита CPZERO перезаписывает заголовок DBF. Разумеется, закрывает DBF как таблицу и открывает через FOPEN. С уважением, Алексей[/quot] Так грид использует другую таблицу данных. Вот и непонятно. Комментарий помог выявить проблему. Установку метки код.страницы можно перетащить в UnLoad формы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2007, 10:01 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
Чтобы было понятно стоит заглянуть в исходник CpZero там вы увидите чуждную команду- CLOSE DATABASES т.е. сначала CpZero запоминает что было открыто - потом ВСЕ закрывает делает своё "грязное" дело и открывает все обратно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2007, 10:42 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
Прошу прощения что поднимаю старую тему, но, все-таки, если приходится делать pack, то что нужно сделать чтобы вместо грида не появлялся белый прямоугольник? Что-то не могу найти ничего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2007, 16:11 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
LarkinПрошу прощения что поднимаю старую тему, но, все-таки, если приходится делать pack, то что нужно сделать чтобы вместо грида не появлялся белый прямоугольник? Что-то не могу найти ничего. Заполнить свойства грида программно. По хорошему все операции требующие монопольного доступа (PACK, INDEX, REINDEX) собираются в отдельную процедуру. чтобы скрыть помеченные на удаление записи: SET DELETED ON ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2007, 16:16 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
LarkinПрошу прощения что поднимаю старую тему, но, все-таки, если приходится делать pack, то что нужно сделать чтобы вместо грида не появлялся белый прямоугольник? Что-то не могу найти ничего. 1. "Отвязать" GRID от источника: RecordSource = '' 2. Сделать все, что надо с источником 3. "Привязать" GRID к источнику: RecordSource = 'MyTable' 4. "Привязать" все колонки GRID к источнику: Column1.ControlSource = 'MyTable.MyFiled1' Column2.ControlSource = 'MyTable.MyFiled2' ... Для автоматизации этого процесса можно создать свой класс GRID и дабавить в него пару методов, которые будет этим заниматься. С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2007, 16:30 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
Спасибо большое, теперь понятно! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2007, 16:35 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
Народ !Уже не первый раз вижу совет - отвязать источник сделать все что нужно с источником и привязать его обратно ! у меня вопросы : 1)Если у меня в RecordSourse указана таблица а в RowSourse каждого столбца - столбец ! то мне надо убивать иточник только для таблицы или для всех столбцов и потом перепрявязывать не только таблицу к источнику но и столбцы ? или достаточно убрать RecordSourse таблицы ? 2) 1.Убираю источник 2.delete 3.close tables all 4.pack dbf моя таблица 5. - как открыть таблицы опять потом что после того как я их закрываю то у меня же все итпо слетает во всех грида ! причем после того как я оопять перерпривязываю источник то у меня в гриде начинает отображаться таблица но все настройки грида слетают - разме столбцов цвет строк шрифт итак далее ! как открывать таблицы опять что бы их можно было привязать к гриду ? с коммандой USE у меня чет не лды как тО ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2008, 19:50 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
ЗвегНарод !Уже не первый раз вижу совет - отвязать источник сделать все что нужно с источником и привязать его обратно ! Не менее часто здесь говорят - не надо паковать таблицы во время работы юзера, не надо. Для этого должен быть отдельный режим/пункт/тулза. И если следовать этому совету, то поставленный вопрос и не возникнет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2008, 19:55 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
Я пишу простейшую курсовую работу - это не то случай когда надо делать дополнительную тулзу =) просто хочеться то бы все было красиво =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2008, 00:11 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
ЗвегЯ пишу простейшую курсовую работу - это не то случай когда надо делать дополнительную тулзу =) просто хочеться то бы все было красиво =) И для простейшей работы сами себе создаем трудности? Интересный подход... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2008, 09:29 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
Ну а какой подход вы посоветуете ? просто впервые открыл фокс недельку назад ! Лазию в нем тока на работе - раз в 4 дня ! В первый день сдела все что нужно - Пэйдж фрэйм в каждой странице по гриду подсчет данным все на кнопки привязал все работате вот тока теперь проблема с таблицами! Как добавлять и удалять данные из них что бы с гридом траблов не возникло ! Ребята посоветовали set deleted on и удялять данные чисто визуально а pack делать когда закрываю приложение что бы не приходилось потом таблицы по новой открывать ! Буду рад любому совету ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2008, 12:38 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
ЗвегРебята посоветовали set deleted on и удялять данные чисто визуально а pack делать когда закрываю приложение что бы не приходилось потом таблицы по новой открывать ! Вот и следуйте этому совету. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2008, 12:39 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
А в случае добавление записи в таблицу или ее редактирования ? Тут то мне надо будет получить моментальный результат сразу без перезапуска приложения ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2008, 18:53 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
ЗвегА в случае добавление записи в таблицу или ее редактирования ? Тут то мне надо будет получить моментальный результат сразу без перезапуска приложения ! И что Вам мешает это сделать? Кстати, что именно понимается под моментальным результатом? А какие еще есть результаты? Вам чем-то помеченные на удаление записи мешают? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2008, 19:08 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
Если я удаляю запиь из таблицы и делаю pack то грид ругеться так как для этго я закрываю таблицы ! Было предложенно делать set deleted on и удалять записи чисто визуально а потом при выходе из приложения автоматом делать пак и все остальное ! А как поступать когда нужно добавить запись или отредактировать ! Выходит из приложения и опять его запускать - не вариант ! Вот что я имелл вииду ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2008, 19:27 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
ЗвегЕсли я удаляю запиь из таблицы и делаю pack то грид ругеться так как для этго я закрываю таблицы ! Было предложенно делать set deleted on и удалять записи чисто визуально а потом при выходе из приложения автоматом делать пак и все остальное ! А как поступать когда нужно добавить запись или отредактировать ! Выходит из приложения и опять его запускать - не вариант ! Вот что я имелл вииду ! Так что мешает добавлять и изменять? В чем проблема-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2008, 19:29 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
Если я добавляю запись с таблицу то для ее отображения в гриде я должен выполнить pack ! Чуть выше мы пришли к выводу что его приемлимо выполнять только при выходе из приложения ! Перезапускать приложение каждый раз после добавления или редактиования записи - не очень то удобно ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2008, 19:33 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
ЗвегЕсли я добавляю запись с таблицу то для ее отображения в гриде я должен выполнить pack ! ЧТО?! Кто Вам такую чушь сказал? И самому проверить это трудно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2008, 19:36 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
Начальство еще на работе не могу достать домашний ноутбук ! простите если заставил нервничать ! спасибо ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2008, 19:41 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
Начальство еще на работе не могу достать домашний ноутбук ! простите если заставил нервничать ! спасибо ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2008, 19:47 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
Для того, чтобы грид переотобразил данные используй ThisForm.Grid1.Refresh() А покавать таблицы при многопользовательском доступе в принципе невозможно (нужно заюзать таблицы эксклюзивно). В рабочих приложениях команда pakc выполняется как осмысленная упаковка таблиц и то только админом. PS Более чем за семь лет (учитывая период написания программы) так и не написал процедуру упаковки таблиц, т.к. иногда прибегают дикие пользователи и просят востановить некоторую запись, которую они удалили, скажем месяц назад. Мне проще сделать recall, чем доставать диски с бэкапами. Тем более, что в таблицах заполняются дополнительные поля: кто удалил, когда удалил - очень удобно при разборе полетов. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2008, 20:25 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
DO FORM formdd IF .NOT. USED ('dopden') USE dopden IN 0 ENDIF SELECT dopden ThisForm.Grid1.Refresh() в форме formdd вноситься запись в таблицу dopden, после перхода в форму с гридом, в гриде белое поле ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2008, 15:24 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
tipadub... USE dopden IN 0 ... Это зачем? Если таблица (источник грида) закрывается, то грид становится белым квадратом, после USE ... надо грид программно восстанавливать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2008, 22:11 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
> 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2008, 06:28 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
Aleksey-K1. "Отвязать" GRID от источника: RecordSource = '' Лучше так: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2008, 17:27 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
bodrox Aleksey-K1. "Отвязать" GRID от источника: RecordSource = '' Лучше так: Код: plaintext А в чем собственно разница? Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2008, 17:36 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
Dima T bodrox Aleksey-K1. "Отвязать" GRID от источника: RecordSource = '' Лучше так: Код: plaintext А в чем собственно разница? Код: plaintext Странно, но когда '' то настройки грида слетают... А когда 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2008, 17:43 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
Выше не то сцитировал :( -------------- Новичок в VFOX ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2008, 17:45 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
опять я. Существует форма с гридом 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() данный кусман я взял с форума но он не работает. Кто поможет разобраться. За ранее благодарен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2008, 08:34 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
После манипуляций с рекордсоурсом делаю так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. -------------- Новичок в VFOX ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2008, 12:11 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
А что такое dopusk в строке thisform.Grid1.RecordSource = dopusk ? Это переменная? А какое в ней значение???? И вообще, тебе вот этот кусок что дает? USE IN dopden select 0 USE dopden EXCLUSIVE PACK in dopden Исходя из этого куска могу сказать одно - прога не реальная. Т.е. использование ее не предполагается. Совсем. Вообще. Тогда следующий вопрос - если проге жить изначально не суждено, зачем такие заморочки? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2008, 13:14 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
dopusk это таблица из которой данные идут в грид (сделано по совету) USE IN dopden select 0 USE dopden EXCLUSIVE PACK in dopden так же совет, puck используеться для того чтобы данные были удалены из таблицы сразу P.S. Я не просил рецензии, я просил помощи. Это курсач. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2008, 20:27 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
Так то нибуть реально поможет или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2008, 23:24 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
> Так то нибуть реально поможет или нет? Тебе ночью помогать чтоли??? Работающие люди (а знают в основном только они) по ночам спят, ну или занимаются более приятными вещами ;) Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2008, 05:56 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
> так же совет, 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2008, 05:59 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
И почему dopusk написано без кавычек? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2008, 06:50 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
авторТак то нибуть реально поможет или нет? редактировать можно и в отдельной форме, если это необходимо, то грид сделайте риадонли и допишите форму редактирования записи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2008, 16:46 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
dopden - это таблица dopusk - атрибут этого отношения (dopden) pack не производился, так как таблица dopden использовалась, по этому мне предложили данный текст USE IN dopden select 0 USE dopden EXCLUSIVE PACK in dopden хотя я так и не понял зачем её отключать и подключать снова Puck мне нужен для того что бы удалять записи безвозвратно, сразу. Зачем? ситуация: есть предмет А с кодом В, где В уникальный ключ при вводе данных был внесён неправильно код В, запись с этим предметом была помечена на удаление, но фактически осталась в таблице. вводиться предмет С, код которого как раз таки и являеться В. Но так как он до сих пор остался в таблице, происходит запрет записи. Вот в принципе и всё. Советами я пользуюсь. Некоторые не действуют. А некоторые мне непонятны: типа вставь это и всё ок. а куда вставить, фиг его знает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2008, 19:54 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
tipadub ситуация: есть предмет А с кодом В, где В уникальный ключ при вводе данных был внесён неправильно код В, запись с этим предметом была помечена на удаление, но фактически осталась в таблице. вводиться предмет С, код которого как раз таки и являеться В. Но так как он до сих пор остался в таблице, происходит запрет записи. Вот в принципе и всё. Код B для предмета А можно подменить фиктивным уникальным значением, а затем пометить на удаление. А паковать уже в отдельной процедуре по мере надобности. хотя я так и не понял зачем её отключать и подключать снова Команда Pack проходит только при монопольном открытии таблицы-для этого ее, открытую в разделяемом режиме нужно закрыть и заново открыть EXCLUSIVE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2008, 20:07 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
> Автор: tipadub > dopden - это таблица > dopusk - атрибут этого отношения (dopden) Какого отношения??? Какой атрибут??? dopusk - это символьная переменная??? Если нет, то почему без кавычек??? > pack не производился, так как таблица dopden использовалась, по этому > мне предложили данный текст Тебе его предложили именно потому, что не производится PACK, хотя надо. А вот теперь вопрос, а надо ли??? > хотя я так и не понял зачем её отключать и подключать снова Ну если это чисто курсовой, который гарантированно будет запущен всего один раз, можно сразу открыть таблицу exclusive и работать с ней, хотя при PACK все равно recordsource надо переопределить > есть предмет А с кодом В, где В уникальный ключ > при вводе данных был внесён неправильно код В, запись с этим > предметом была помечена на удаление, но фактически осталась в таблице. Если под фразой "уникальный ключ", подразумевается ПЕРВИЧНЫЙ ключ таблицы, то ввод таких ключей руками - это очень непраильно. Во первых негарантируется уникальность, во вторых это ВНУРЕННИЕ дела программы, про которые пользователю знать не нужно. Ну и в третьих, предположим, пришел человек в паспортный стол - прописываться. Его данные заносят в картотеку, номер паспорта. А тут бац, выясняется что паспорт такой уже есть (серия/номер паспорта уникальны) в базе, но с другой фамилией, и прочими реквизитами. Внимание вопрос, что делать? Отказать человеку в прописке? Удалить ту запись которая уже была в таблице или другое??? Этому отказать - неправильно. Удалить ту запись которая была - тоже не правильно, т.к. тогда потеряется инфа о том, чтотот человек был где-то прописан. И т.д. Иными словами, отдавать ПЕРВИЧНЫЙ КЛЮЧ на откуп пользователя - это обрекать систему на подобные непонятки. > вводиться предмет С, код которого как раз таки и являеться В. Но так > как он до сих пор остался в таблице, происходит запрет записи. Т.е. у тебя ругается на нарушения уникальности индекса??? Тогда поставь условие for !dele() для самого индека >А некоторые мне непонятны: типа вставь это и всё ок. а куда вставить, фиг >его знает Спрашивай, читай форумы, книжки. Выясняй. А иначе, пока не поймешь - нифига не научишься. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2008, 05:28 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
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, данные из столбца с ключами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2008, 07:04 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
Rinat спасибо за помощь! Я начинающий и в действительности очень многое не понятно. По поводу первичного ключа: ситуация такова, есть личный номер, который даёться не мной. чтото вроде номера паспорта его уникальность проверяеться при вводе данных. я просто не вижу смысла использования первичного ключа, созданного программно, если есть уникальный ключ. А если юзер при вводе видит что такой личный номер уже существует, то нужно разбираться или с записью уже имеющую такой номер, или с вводомым номером. Но два одинаковых номера в базе не должно быть dopden.dopusk - тип данных character, не пойму зачем нужны '', всё работает и без них ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2008, 07:15 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
Rinat, ещё вопрос не касающийся темы, если открыта база данных, всегда нужно использовать use имя таблицы ? Или же хватает select имя таблицы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2008, 07:20 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
>если открыта база данных, всегда нужно использовать use имя таблицы? Или же хватает select имя таблицы Если база одна то хватит и просто имени таблицы. Если их несколько то без имени базы ищется таблица в текущей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2008, 09:01 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
>если открыта база данных, всегда нужно использовать use имя таблицы? Или же хватает select имя таблицы Если база одна то хватит и просто имени таблицы. Если их несколько то без имени базы ищется таблица в текущей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2008, 09:01 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
Burn, я наверное не правильно выразился при открытой базе, в которой находиться таблиться dopden use dopden select dopden; или же хватит просто select dopden ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2008, 09:21 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
> Rinat, ещё вопрос не касающийся темы, если открыта база данных, > всегда нужно использовать use имя таблицы? Или же хватает select имя > таблицы use - открывает таблицу select - выбирает ее как используемую по умолчанию. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2008, 09:37 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
> Burn, я наверное не правильно выразился > при открытой базе, в которой находиться таблиться dopden > use dopden > select dopden; Сначал use (один раз на сессию, т.е. если форма имеет private data session, то в ней надо заного открыть таблицу), а потом select`а хватит Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2008, 09:39 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
> Я начинающий и в действительности очень многое не понятно. > > По поводу первичного ключа: Ситуацию с уникальным паспортом я тебе привел. Данные по человеку нужно занести и отпустить его с миром, а потом уже разбираться, почему номер неуникальный. А первичный ключ - это первичный ключ. он нужен для внутринних связей и смысловую нагрузку на него нефиг возлогать!!! > dopden.dopusk - тип данных character, не пойму зачем нужны '', всё > работает и без них Я вижу как оно у тебя работает. В одном месте ты пишешь: прога на кнопке добавить: .... thisform.Grid1.RecordSource = 'dopden' thisform.Grid1.Refresh() Т.е. говоришь гриду, отображать таблицу "dopden" В другом пытаешься заставить грид отображать таблицу, название которой находится в поле dopusk. PS Ты бы все таки чуток почитал книжек, а? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2008, 09:43 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
select MyTable для смены текущего алиаса можно не использовать в большинстве случаев. Многие команды понимают явное указание алиаса Код: plaintext 1. Galyamov Rinat > Я начинающий и в действительности очень многое не понятно. ... PS Ты бы все таки чуток почитал книжек, а? +1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2008, 09:54 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
всем спасибо! Заработало благодаря совету 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 и если нет открывал её (совет одного хорошего программиста, что при открытии новых форм лучьше проверить) Но после высказываний типа а зачем это? я усомнился, я всё таки не асс, может их действительно не надо открывать... Ещё раз всем спасибо! Кто ещё хочет поглумиться До встречи в запросах и отчётах! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2008, 10:58 |
|
||
|
Обновление grid
|
|||
|---|---|---|---|
|
#18+
tipadub по поводу use IF .NOT. USED ('dopden') USE dopden IN 0 ENDIF этим я проверял открыта ли таблица dopden и если нет открывал её (совет одного хорошего программиста, что при открытии новых форм лучьше проверить) ... Совет хороший, тоже всегда так делаю. Т.к. таблица может быть открыта не только с использованием USE и отследить все места ее открытия сложно. При явном закрытии тоже подобную проверку делать не помешает. tipadubКнижки почитываю... Поищи М.Базияна "Использование Visual VoxPro 6" - хорошая книга. Книги с кучей скриншотов фоксовых визардов не бери, визарды в фоксе практически не используются разработчиками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2008, 11:22 |
|
||
|
|

start [/forum/topic.php?all=1&fid=41&tid=1587682]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
78ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 374ms |

| 0 / 0 |
