powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Удаление записи
18 сообщений из 18, страница 1 из 1
Удаление записи
    #36619877
tim07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Существует представление выведенное в грид. Поля взяты из одной таблицы, с добавлением 2 вычисляемых полей. Мне нужно было, чтобы при удалении записи из представления, удалялась запись и в самой таблице. Это я сделал. Но если закрыть бд, то при новом открытии все удаленные записи оказываются на месте. Таблица и представление имеют buffermode=5.

код кнопки удаления:

set deleted on
delete
select view1
tableupdate()

select klient
set deleted on
delete
tableupdate()

помогите, пожалуйста, разобраться в этой проблеме!
...
Рейтинг: 0 / 0
Удаление записи
    #36619930
igorbik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tim07при новом открытии все удаленные записи оказываются на месте.set dele on перед открытием (например, в load формы)
...
Рейтинг: 0 / 0
Удаление записи
    #36619932
tim07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И еще хотел узнать: какое свойство грида отвечает за то, что "выбрана какая-либо запись" в данный момент или нет! а то будет удалять первую попавшуюся запись без выбора!
...
Рейтинг: 0 / 0
Удаление записи
    #36619933
igorbik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tim07И еще хотел узнать: какое свойство грида отвечает за то, что "выбрана какая-либо запись" в данный момент или нет! а то будет удалять первую попавшуюся запись без выбора!Грид тут ни при чем. Это в таблице под гридом все можно найти. Например, номер записи или определенное значение определенного поля.

select table1
delete next 1 && удалит запись в таблице table1, которая лежит под гридом и на которой стоит маркер.
...
Рейтинг: 0 / 0
Удаление записи
    #36619935
tim07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
поставил set delete on в лод формы не помогло, потом засунул его в инит pageframe, то же самое. записи восстанавливаются после перезапуска.

а если в гриде не выбрана запись, то что будет удаляться?
...
Рейтинг: 0 / 0
Удаление записи
    #36619972
igorbik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tim07а если в гриде не выбрана запись, то что будет удаляться?
...
Рейтинг: 0 / 0
Удаление записи
    #36619976
igorbik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
igorbiktim07а если в гриде не выбрана запись, то что будет удаляться?Случайно на кнопку нажал.
А самому слабО сообразить? Проверить?
...
Рейтинг: 0 / 0
Удаление записи
    #36619994
tim07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
проверил, если в гриде не выбрана запись, все равно удаляется. а мне нужно чтоб не удалялось.
может быть есть свойство у грида такое, которое принимает определенное значение, если запись выбрана, и другое, если не выбрана?


так что же делать с set delete on?
...
Рейтинг: 0 / 0
Удаление записи
    #36619998
tim07, в гриде нет никаких записей, он их только отображает. Записи есть в таблице. Если вы выбираете какую-нибудь таблицу в первый раз, то активной становится ее первая запись. Соответственно она и удалится.
...
Рейтинг: 0 / 0
Удаление записи
    #36620005
tim07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
это я понимаю. вопрос вот в чем: как мне сделать так, чтоб, если юзер не выбрал ничего в гриде, выдавалось определенное сообщение, а если выбрал, то запись удалялась.
...
Рейтинг: 0 / 0
Удаление записи
    #36620008
Fffffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Идея выглядит странно. Зачем это нужно?
...
Рейтинг: 0 / 0
Удаление записи
    #36620030
tim07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ладно, уже сделал что хотел - просто в кнопке удаления сет фокус на грид и все. теперь хочешь не хочешь придется выбирать что удалять.

только теперь другая проблема. удаляю записи и из представления и из таблицы, а они удаляются только в таблице. но если перезапустить то, все нормально и там удаляются и тут. код кнопки удаление:
SELECT view1
Set Deleted On
DELETE
IF !EOF()
Skip 1
EndIF
IF EOF() .AND. !BOF()
Skip -1
ENDIF
TABLEUPDATE()

SELECT klient
Set Deleted On
DELETE
IF !EOF()
Skip 1
EndIF
IF EOF() .AND. !BOF()
Skip -1
ENDIF
TABLEUPDATE()

thisform.pageframe1.page1.grid1.SetFocus
...
Рейтинг: 0 / 0
Удаление записи
    #36620036
tim07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем если запускаешь в первый раз, ничего не удаляется ни в представлении ни в таблице. Второй и последующие - нормально.
...
Рейтинг: 0 / 0
Удаление записи
    #36620077
tim07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Никак не могу понять! Как можно НОРМАЛЬНО удалить данные (пометить, т.е. не физически) из представления(view1), которое создано на основе таблицы(klient), которая буферизована!!! Ничего не получается. То ничего не удаляется, то удаляется но не то! Подскажите пожалуйста как это правильно сделать!
...
Рейтинг: 0 / 0
Удаление записи
    #36620130
tim07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вроде сделал, правда коряво, но это не так важно! Целый день отняло! Остался только один глюк -- если вы запустили форму в первый раз, то записи не удаляться, как ни крути, а во второй раз -- все нормально! Что такое? Кажется нигде ничего не писал лишнего...
вот код кнопки удаление:

*удаляем из таблицы
LOCAL rem
select view1
rem=view1.id_pass
SELECT klient
LOCATE FOR rem==klient.id_pass
IF FOUND()
Set Deleted On
DELETE
IF !EOF()
Skip 1
EndIF
IF EOF() .AND. !BOF()
Skip -1
ENDIF
TABLEUPDATE()
ENDIF

*удаляем из вьюхи
SELECT view1
Set Deleted On
DELETE
IF !EOF()
Skip 1
EndIF
IF EOF() .AND. !BOF()
Skip -1
EndIF
TABLEUPDATE()

thisform.pageframe1.page1.grid1.SetFocus
...
Рейтинг: 0 / 0
Удаление записи
    #36620985
tim07,
set delete on - настроечная команда. Ее надо давать 1 (один) раз, а не во всех местах. Обычно это где-то в начале программы. Если таки эта настройка сбрасывается, то надо искать это место, а не вопить про физическое удаление записей. И еще не указана версия фокса. В некоторых старых версиях запросы select sql не учитывали указанную настройку и в них приходилось добавлять в условие where проверку на "помеченность" записи с функцией Deleted().
...
Рейтинг: 0 / 0
Удаление записи
    #36621042
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tim07, SET DELETE влияет на поиск , а не удаление, т.е. ты хоть и навтыкал SET DELETE но не туда. Надо было перед LOCATE ставить.

А по-хорошему надо в начало программы и DataEnvironment.BeforeOpenTables() если форма с PrivateDataSession.
Т.к. часть SETов сбрасывается для формы (или отчета) с PrivateDataSession. В т.ч. SET DELETE
Лично я собираю все SETы в один PRG и вызываю его из DataEnvironment.BeforeOpenTables() формы
...
Рейтинг: 0 / 0
Удаление записи
    #36621832
tim07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за помощь! Учту при выполнении! Версия fox - 9.0
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Удаление записи
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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