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

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

set deleted on
delete
select view1
tableupdate()

select klient
set deleted on
delete
tableupdate()

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

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

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


так что же делать с set delete on?
...
Рейтинг: 0 / 0
10.05.2010, 22:22
    #36619998
Удаление записи
tim07, в гриде нет никаких записей, он их только отображает. Записи есть в таблице. Если вы выбираете какую-нибудь таблицу в первый раз, то активной становится ее первая запись. Соответственно она и удалится.
...
Рейтинг: 0 / 0
10.05.2010, 22:32
    #36620005
tim07
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записи
это я понимаю. вопрос вот в чем: как мне сделать так, чтоб, если юзер не выбрал ничего в гриде, выдавалось определенное сообщение, а если выбрал, то запись удалялась.
...
Рейтинг: 0 / 0
10.05.2010, 22:33
    #36620008
Fffffffffffffff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записи
Идея выглядит странно. Зачем это нужно?
...
Рейтинг: 0 / 0
10.05.2010, 23:04
    #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
10.05.2010, 23:09
    #36620036
tim07
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записи
В общем если запускаешь в первый раз, ничего не удаляется ни в представлении ни в таблице. Второй и последующие - нормально.
...
Рейтинг: 0 / 0
11.05.2010, 00:24
    #36620077
tim07
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записи
Никак не могу понять! Как можно НОРМАЛЬНО удалить данные (пометить, т.е. не физически) из представления(view1), которое создано на основе таблицы(klient), которая буферизована!!! Ничего не получается. То ничего не удаляется, то удаляется но не то! Подскажите пожалуйста как это правильно сделать!
...
Рейтинг: 0 / 0
11.05.2010, 01:48
    #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
11.05.2010, 14:25
    #36620985
Удаление записи
tim07,
set delete on - настроечная команда. Ее надо давать 1 (один) раз, а не во всех местах. Обычно это где-то в начале программы. Если таки эта настройка сбрасывается, то надо искать это место, а не вопить про физическое удаление записей. И еще не указана версия фокса. В некоторых старых версиях запросы select sql не учитывали указанную настройку и в них приходилось добавлять в условие where проверку на "помеченность" записи с функцией Deleted().
...
Рейтинг: 0 / 0
11.05.2010, 14:42
    #36621042
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записи
tim07, SET DELETE влияет на поиск , а не удаление, т.е. ты хоть и навтыкал SET DELETE но не туда. Надо было перед LOCATE ставить.

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


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