Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Удаление строки с переспросом / 18 сообщений из 18, страница 1 из 1
06.11.2013, 22:00
    #38455238
AHaPXuST
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление строки с переспросом
Нужно удалить строку в таблице отображаемой в гриде. По нажатии клавиши удаления должна открываться форма с переспросом "Действительно хотите удалить?" - да/нет. Как сослаться на выделенные строки в таблице? Обычную кнопку без переспроса сделал через обычный делет.
...
Рейтинг: 0 / 0
06.11.2013, 22:14
    #38455246
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление строки с переспросом
Сначала
AHaPXuSTНужно удалить строку в таблице отображаемой в гриде. Потом:Как сослаться на выделенные строки в таблице?Так что надо?
Кстати, а выделены то они как? Обычную кнопку без переспроса сделал через обычный делет.А что, есть еще какой-то особенный, необычный?
...
Рейтинг: 0 / 0
06.11.2013, 22:27
    #38455256
Razmalevich
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление строки с переспросом
Sergey Sizov,
насколько я понял, та же проблема.

Нужно удалить строку из таблицы в гриде. Строку помечаю просто кликом мыши либо на нее саму, либо на столбец слева (Deletemark).

После нажатия кнопки на форме, открывается новая форма с требованием подтвердить удаление. На ней кнопка "да". Если в нее просто записать delete, нужная строка не удалится, потому что находится на другой форме в гриде.

Или нужно запоминать номер строки в переменную, чтобы в кнопке "да" на него ссылаться?
lnrec=recno()
delete for recno()=lnrec
...
Рейтинг: 0 / 0
06.11.2013, 22:42
    #38455261
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление строки с переспросом
RazmalevichSergey Sizov,
насколько я понял, та же проблема.Хм, еще и одной то проблемы не описали, а тут уже еще какая-то всплыла. Какая "та же"?
Нужно удалить строку из таблицы в гриде.Таблицы в гриде нет. Есть грид, показывающий таблицу. Потому строку из грида удалить нельзя. Можно из таблицы. Строку помечаю просто кликом мыши либо на нее саму, либо на столбец слева (Deletemark).Ну, и в чем проблема?
После нажатия кнопки на форме, открывается новая форма с требованием подтвердить удаление. На ней кнопка "да". Если в нее просто записать delete, нужная строка не удалится, потому что находится на другой форме в гриде.Кто Вам сказал такую чушь? Строки на форме нет! Она есть в таблице. Показываемой через грид. В гриде тоже нет строк. Он всего лишь сетка, через которую смотрят на таблицу. И если в форме с кнопками нет изменений текущей записи нужной таблицы, то ничто не мешает ей удалиться.
Или нужно запоминать номер строки в переменную, чтобы в кнопке "да" на него ссылаться?
lnrec=recno()
delete for recno()=lnrecНафига? Если уже своим Deletemark или delete на выделенной строке уже все сделано? Или удалением Вы называете таки исчезновение строки с экрана? А что для этого сделано?
...
Рейтинг: 0 / 0
06.11.2013, 23:04
    #38455268
AHaPXuST
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление строки с переспросом
Sergey Sizov А что, есть еще какой-то особенный, необычный?
Есть ведь просто удаление, по нажатии кнопки например строка исчезает и все.

Sergey Sizov Строки на форме нет! Она есть в таблице. Показываемой через грид.
Да, удаляем строку в таблице, но именно ту, которую выделили в гриде основной формы.

Итак, требуется чтобы по нажатию на кнопку "Удалить", на основной форме, строка из таблицы только запоминалась, а в новой открытой форме с подтверждением уже шло либо удаление, либо отмена.
...
Рейтинг: 0 / 0
06.11.2013, 23:13
    #38455274
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление строки с переспросом
AHaPXuSTSergey Sizov А что, есть еще какой-то особенный, необычный?
Есть ведь просто удаление, по нажатии кнопки например строка исчезает и все.Еще раз - что Вы сделали для этого? Для исчезновения?
Другого нет. Есть просто позаботившиеся об визуальном отображении сего действия. И написавшие для этого соответствующий код.
Sergey Sizov Строки на форме нет! Она есть в таблице. Показываемой через грид.
Да, удаляем строку в таблице, но именно ту, которую выделили в гриде основной формы.А если Вы не дали соответствующей команды, то только эта выделенная строка и может быть удалена.
Итак, требуется чтобы по нажатию на кнопку "Удалить", на основной форме, строка из таблицы только запоминалась,Зачем? Зачем ей запоминаться? Если она и так уже запомнена? а в новой открытой форме с подтверждением уже шло либо удаление, либо отмена.Напишите соответствующий код в этой форме. То есть delete только при нажатии на кнопку "Да". Есть какие-то сложности?
...
Рейтинг: 0 / 0
06.11.2013, 23:40
    #38455295
AHaPXuST
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление строки с переспросом
Sergey Sizov,

Сел в итоге на курсорах. В гриде отображается при инициализации таблица, после нескольких действий с сортировкой, которые выполнены с помощью курсоров, в гриде уже отображаются именно они. Соответственно не получается удалить строку из курсора. Хотя если делать кнопку удаления без доп формы вопроса да/нет, все удаляется прекрасно.
...
Рейтинг: 0 / 0
07.11.2013, 00:03
    #38455315
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление строки с переспросом
AHaPXuSTSergey Sizov,

Сел в итоге на курсорах.Не надо на них сидеть, с ними надо работать. :) В гриде отображается при инициализации таблица, после нескольких действий с сортировкой, которые выполнены с помощью курсоров, в гриде уже отображаются именно они. Ну и кто тут злобный Буратина? :) И зачем для сортировок курсоры?Соответственно не получается удалить строку из курсора.Боже, да какие проблемы то? Хотя если делать кнопку удаления без доп формы вопроса да/нет, все удаляется прекрасно.Из курсора? Или из таблицы? Или Вы не можете увязать курсор с таблицей?
...
Рейтинг: 0 / 0
07.11.2013, 00:09
    #38455320
sg12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление строки с переспросом
AHaPXuST

По определению каждый суслик агроном.
Зачем вам обязательно нужна доп. форма, а не функция MESSAGEBOX("Действительно хотите удалить?",4+32+256,"Вопрос") = 6
...
Рейтинг: 0 / 0
07.11.2013, 00:16
    #38455332
AHaPXuST
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление строки с переспросом
Код: plaintext
1.
2.
3.
4.
5.
6.
IF thisform.combo1.Value='Ïî êîäó âóçà' then
 thisform.grid1.RecordSource=''
 SELECT z2, rnw, f6, f7, f18, f10, f1, f2, codvuz FROM tp_nir ORDER BY codvuz INTO CURSOR mycur
 thisform.Grid1.RecordSource="mycur"
 thisform.Grid1.AutoFit
 thisform.grid1.RecordSourceType= 1
ENDIF
через селекты в курсор и в грид уходит. Если удалять без сортировки, то все нормально, а если выполнить сортировку, то создался курсор и уже менять его я не могу: "Cannot update the cursor mycur, since it is read-only". Делаю из чего могу, знания ооочень поверхностные.
...
Рейтинг: 0 / 0
07.11.2013, 00:23
    #38455337
AHaPXuST
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление строки с переспросом
sg12,

и ведь действительно суслик :D А форму делал т.к. не знал элементарно синтаксис)
...
Рейтинг: 0 / 0
07.11.2013, 00:39
    #38455353
AHaPXuST
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление строки с переспросом
Но селекты все равно не пускают на удаление. Без формы стало проще и еще одна команда пополнила синтаксис, спасибо.
...
Рейтинг: 0 / 0
07.11.2013, 01:03
    #38455376
AHaPXuST
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление строки с переспросом
Вопрос решил. Ушел от использования курсоров и вел все модификации и преобразования только с таблицей.
...
Рейтинг: 0 / 0
07.11.2013, 12:17
    #38455829
SoftwareBoy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление строки с переспросом
AHaPXuST"Cannot update the cursor mycur, since it is read-only".
Откройте для себя опцию READWRITE в SELECT.
AHaPXuSTУшел от использования курсоров и вел все модификации и преобразования только с таблицей.
Предсказываю: в многопользовательском режиме эта программа скажет "КРЯ!" :)
...
Рейтинг: 0 / 0
07.11.2013, 12:28
    #38455855
AHaPXuST
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление строки с переспросом
SoftwareBoy,

Да, уже начинаю сталкиваться с тем, что курсоры все равно должны возникать. Например после фильтрации по нескольким параметрам через комбобоксы все собираю в курсоры и должен выдать отфильтрованную информацию на основной форме. И опять же данные должны быть доступны для редактирования.
А изменения в курсорах разве влияет на основную таблицу и которой взяты данные?
...
Рейтинг: 0 / 0
07.11.2013, 15:23
    #38456340
Удаление строки с переспросом
AHaPXuST,
Ну и каша же у Вас в голове... Отвлекитесь от "позиционности" (№ записей) и посмотрите на таблицы с точки зрения неупорядоченных множеств (так идет выборка данных с серверов БД)

В общем как должна быть организована работа.
Каждая запись (строка) в таблице должна быть идентифицируема по ключу. В момент нажатия кнопки "удалить" (или сканируя удаленные записи в кусоре) Вы запоминаете ключ записи (ключи записей) и командами SQL (см. мануалы по delete-SQL, Update-SQL) удаляете/модифицируете соответствующие данные в таблице. Редактировать таблицу "напрямую" не есть хорошо...
...
Рейтинг: 0 / 0
07.11.2013, 20:20
    #38456939
AHaPXuST
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление строки с переспросом
Станислав С...кий,

А можно направить в степь, где можно почитать про идентификацию по ключу? А то все еще кручусь на месте. Сначала ушел от проблемы используя основную таблицу как данные, а теперь при дальнейших изменениях (фильтрации), где в грид возвращается курсор с частичной информацией из основной таблицы. И соответственно удалив/отредактировав запись в отфильтрованом курсоре изменения должны затронуть и основную таблицу.
...
Рейтинг: 0 / 0
08.11.2013, 05:41
    #38457296
Удаление строки с переспросом
AHaPXuST,
Теорию про первичные и суррогатные ключи смотрите у Дейта (если не ошибаюсь, то книга называется "Введение в проектирование баз данных")
А практика Фокса (без использования SQL-команд) заключается в следующих командах:
index on ... to ...
reindex
set index to...
seek()
locate [for]
found()

При работе с "серьезными" серверами баз данных или с SQL-командами Фокса получится так:

Update .... set a = <new value> where a=<old value> and b=<old value> and ...,

где в предложении where записывается условие отбора записей, то что способно их уникально идентифицировать. Если уникально идентифицировать запись не получится, то изменения будут проведены над всеми записями, которые удовлетворяют условию...
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Удаление строки с переспросом / 18 сообщений из 18, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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