Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 проблема с удалению записи  [new]
schemax
Guest
На экшн кнопки клик выполняется следующий код:

IF MESSAGEBOX("Вы действительно хотите отчислить студента?",4+32+256,"Выход")=6 THEN
DELETE FROM учатся WHERE студент = VAL(ThisForm.listStudents.Value)
	IF MESSAGEBOX("Студент отчислен. Хотите ли Вы его удалить из списка студентов?",4+32+256,"Выход")=6 THEN
	DELETE FROM студент WHERE код = VAL(ThisForm.listStudents.Value)
	ENDIF
ENDIF
SET DELETED ON
 
ThisForm.listStudents.RowSource = ""

SELECT студент.фио , студент.код FROM студент WHERE студент.код NOT IN (select учатся.студент from учатся) ORDER BY студент.фио INTO CURSOR &curStud NOFILTER READWRITE
ThisForm.listStudents.RowSourceType= 2
ThisForm.listStudents.RowSource='&curStud'
ThisForm.listStudents.DisplayValue = EVALUATE(curStud + '.фио')

ThisForm.grMainLook.RecordSource = ""

SELECT студент.фио, специаль.название, группа.номер;
FROM студент , специаль , группа , изучать , учатся ;
WHERE ;
(учатся.студент = студент.код ;
AND группа.код = учатся.группа) ;
AND (изучать.группа = группа.код ;
AND специаль.код = изучать.специально);
ORDER BY студент.фио ;
INTO CURSOR &curLook NOFILTER READWRITE

ThisForm.grMainLook.RecordSourceType= 1
ThisForm.grMainLook.RecordSource='&curLook'

	
GO BOTTOM IN &curLook
ThisForm.Refresh()

Когда кликаешь первый раз запись удаляется, кликаешь 2 раз уже на другой записи - она не удаляется.
23 апр 06, 15:10    [2593744]     Ответить | Цитировать Сообщить модератору
 Re: проблема с удалению записи  [new]
schemax
Guest
Никто не подскажет?
23 апр 06, 20:10    [2594007]     Ответить | Цитировать Сообщить модератору
 Re: проблема с удалению записи  [new]
schemax
Guest
Да... забыл уточнить: Когда убераешь и снова восстанавливаешь фокус на форме, опять удаляется только 1 запись.
23 апр 06, 20:37    [2594023]     Ответить | Цитировать Сообщить модератору
 Re: проблема с удалению записи  [new]
_Иван_
Guest
Может я чего не понял в 1-13 ночи, но...
в фоксе вообще записи из таблицы не удаляются,
а помечаются на удаление
(Поиск с контекстом "Максимов удаление записи SET DELETED" рулит)

Удаление записи происходит только при PACK
но эта команда требует экклюзивного открытия таблиц

Вообще хорошие парни не делают установки
SET DELETED ON
а делают офф,
и вообще делают один раз в начале работы приложения.
(опять отправляю к Максимову :-) )

Потом вообще почитай про буферизацию
(удивительно, но опять отправляю к Максимову :-) )
и может быть не надо будет селектовать и тд,
может захочешь вьюшку или курсор адаптер замутить
для удаления нерадивых студентов.
24 апр 06, 01:19    [2594231]     Ответить | Цитировать Сообщить модератору
 Re: проблема с удалению записи  [new]
schemax
Guest
Да я знаю что они помечаются на удаление. Но у меня в form.activate стоит SET DELETED ON поэтому все помеченные записи не должны отображаться. Весь прикол в том, что при первом нажатии кнопки удаления запись помечается, потом же сколько не щёлкай - результат один. Один выход - это убрать фокус с формы и снова перевести фокус на форму, опять помечается только запись при первом клике....
24 апр 06, 11:55    [2595304]     Ответить | Цитировать Сообщить модератору
 Re: проблема с удалению записи  [new]
schemax
Guest
Может порекомендуете какой-нибудь другой код или способ?
24 апр 06, 11:57    [2595315]     Ответить | Цитировать Сообщить модератору
 Re: проблема с удалению записи  [new]
schemax
Guest
Проблему решил. Просто по другому код переписал, всё получилось.

Другой вопрос возник

UPDATE учатся SET учатся.группа = VAL(ThisForm.comGroupe.Value) WHERE учатся.студент = (SELECT студент.код FROM студент WHERE студент.фио = ThisForm.listStudents.DisplayValue)

пишет ошибку Alias COMGROUPE not found , хотя в дебагере показывает нормальное значение ThisForm.comGroupe.Value
24 апр 06, 13:49    [2595996]     Ответить | Цитировать Сообщить модератору
 Re: проблема с удалению записи  [new]
_Иван_
Guest
UPDATE учатся SET учатся.группа = VAL(ThisForm.comGroupe.Value) WHERE учатся.студент = (SELECT студент.код FROM студент WHERE студент.фио = ThisForm.listStudents.DisplayValue)

замени на
local lnGroup, lcStudentsFIO
lnGroup= VAL(ThisForm.comGroupe.Value)
lcStudentsFIO=ThisForm.listStudents.DisplayValue

UPDATE учатся SET учатся.группа = lnGroup WHERE учатся.студент = (SELECT студент.код FROM студент WHERE студент.фио = lcStudentsFIO

|и все у тебя получиться
24 апр 06, 13:55    [2596028]     Ответить | Цитировать Сообщить модератору
 Re: проблема с удалению записи  [new]
schemax
Guest
_Иван_ спасибо =) действительно всё получилось =)
24 апр 06, 14:01    [2596078]     Ответить | Цитировать Сообщить модератору
 Re: проблема с удалению записи  [new]
schemax
Guest
Ещё вопрос:
groupeCode = SELECT группа.код FROM группа WHERE группа.номер = gVal
Выдаёт ошибку syntax error, если
SELECT группа.код FROM группа WHERE группа.номер = gVal
BROWSE
Всё работает...
24 апр 06, 18:39    [2597634]     Ответить | Цитировать Сообщить модератору
 Re: проблема с удалению записи  [new]
Aleksey-K
Member

Откуда: Москва
Сообщений: 3116
schemax
Ещё вопрос:
groupeCode = SELECT группа.код FROM группа WHERE группа.номер = gVal
Выдаёт ошибку syntax error, если
SELECT группа.код FROM группа WHERE группа.номер = gVal
BROWSE
Всё работает...

Попробуйте так и почитайте HELP VFP по команде SELECT - SQL.
SELECT группа.код FROM группа INTO ARRAY groupeCode
WHERE группа.номер = gVal
? groupeCode[1]
С уважением, Алексей.
24 апр 06, 19:00    [2597664]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить