Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблема с формой / 3 сообщений из 3, страница 1 из 1
14.11.2005, 20:41:09
    #33377672
Проблема с формой
Суть проблемы в том, что:
при введении имени, по которму должна удаляться запись в таблице удаление не происходит, а происходит замена данных в первом столбце таблицы, на те что были введены.
пишу примерно так:

set safety off
q=form1.pageframe1.txtDelete.value
use table1 exclusive
index on field1 to tmp1
seek q
delete
pack
close database
прошу не смеяться, я ведь не волшебник, а только учусь >:-)
...
Рейтинг: 0 / 0
15.11.2005, 09:27:52
    #33378018
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с формой
Ну, в общем, ты сделал все самые распространенные ошибки, какие только можно было сделать. Хотя, если подумать, то можно сделать еще несколько ошибок

Вкратце, суть ошибок:

Динамическое создание индексов (команда INDEX) - это то, чего следует, по возможности, избегать. Индексы создаются при создании структуры таблицы и в процессе работы обычно не пересоздаются

Упаковка таблицы (команда PACK) - это то, чего следует, по возможности, избегать. Упаковка происходит периодически из служебных процедур. Для того, чтобы скрыть записи, помеченные как удаленные используют настройку SET DELETED ON

Ссылка на форму по ее имени - это действие, которое можно выполнить только при сопутствующем выполнении ряда условий. Обычно используют относительные ссылки типа ThisForm.

Есть еще некоторые стилистические ошибки, но это проще показать на примере.

Итак, у тебя есть таблица Table1 у которой есть структурный индексный файл, созданный в дизайнере таблицы. И в этом структурном индексном файле есть индексный тег по полю Field1.

В DataEnvironmetn форы ты включил эту таблицу (В дизайнере формы пункт системного меню View - Data Environment - правой кнопкой мыши на пустом месте - Add)

В событии INIT (или LOAD) формы делаешь все необходимые настройки

Код: plaintext
1.
2.
SET DELETED ON
SET TALK OFF

Если предположить, что поле Field1 символьного типа, в объекте txtDelete введено символьное значение и приведенный код - это метод той самой формы, где расположен объект txtDelete, то теперь твой код выглядит так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
LOCAL lcValue
lcValue = AllTrim(ThisForm.PageFrame1.txtDelete.Value)
IF SEEK(m.lcValue,"Table1","Field1") = .T.
	DELETE
ELSE
	MessageBox("Записи со значением поля Field1 равным ["+m.lcValue+"] не найдено"+;
		CHR( 13 )+"Удалять нечего. Измените условия поиска.")
ENDIF
...
Рейтинг: 0 / 0
15.11.2005, 20:47:42
    #33380119
Проблема с формой
большое спасибо, попробую так сделать
*-----------------------
я ведь не волшебник, а только учусь
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблема с формой / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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