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

Откуда: Днепропетровск
Сообщений: 15
Доброго всем дня.
После отработки формы, темповая таблица куда заносятся данные для работы из основной таблицы почему то удаляется.

Есть форма, в init которой
IF NOT USED("table_tmp")
	USE "table_tmp" exclusiv IN 0
ENDIF
SELE table_tmp
DELETE ALL
PACK
SELE table_tmp

на форме кнопка поиска по гриду и check для конкретизации условия поиска:

IF NOT USED("table_tmp")
	USE "table_tmp" excl IN 0
ENDIF
sele table_tmp
	DELETE ALL
	PACK
form1.Grid1.RecordSourceType=1
form1.Grid1.RecordSource="table_tmp"
form1.Grid1.Column1.ControlSource="table_tmp.nomer"
thisform.refresh

IF NOT USED("table")
	USE "table" excl IN 0
ENDIF
sele table
dat_vd=alltrim(ThisForm.Text1.value)
per_vd=len(alltrim(dat_vd)) 
if per_vd>0 				
  sele table
DO WHILE !EOF()
  ff_k1=alltrim(table.nomer)
  ff_k2=alltrim(table.znachenie)
 if thisform.check1.value=1  
  dat_od=alltrim(counttable.nomer)
  per_od=len(alltrim(dat_od)) 
  sh_ptp=per_od-(per_vd-1)    
  add_df=sh_ptp
  ik=1
  dd=len(alltrim(dat_vd))
  do whil ik=<sh_ptp
       if UPPER(substr(alltrim(dat_od),ik,dd))=UPPER(alltrim(dat_vd))
          sele table_tmp
           append blank
            repl table_tmp.idc with ff_k1
	 repl table_tmp.ncount with ff_k2
thisform.refresh
       endif
    ik=ik+1
   enddo
 endif

sele table
skip
	ENDDO
	ENDIF
GO top
thisform.refresh

проблема в том что table_tmp после отработки поиска перестает существовать...
14 апр 08, 12:33    [5541882]     Ответить | Цитировать Сообщить модератору
 Re: удаление таблицы после отработки формы  [new]
Dima T
Member

Откуда:
Сообщений: 15282
Вместо этого
SELE table_tmp
DELETE ALL
PACK
SELE table_tmp
можно написать
zap in table_tmp

Timofey781
После отработки формы, темповая таблица куда заносятся данные для работы из основной таблицы почему то удаляется.

Удаляется или закрывается? Если закрывается, то наверно где-то есть USE ... а IN 0 поставить забыл.
поставь SET STEP ON в код поиска и смотри отладчиком где USED('table_tmp') в .F. переключится
14 апр 08, 12:51    [5542001]     Ответить | Цитировать Сообщить модератору
 Re: удаление таблицы после отработки формы  [new]
Timofey781
Member

Откуда: Днепропетровск
Сообщений: 15
именно физически удаляется с диска.
14 апр 08, 12:59    [5542073]     Ответить | Цитировать Сообщить модератору
 Re: удаление таблицы после отработки формы  [new]
Timofey781
Member

Откуда: Днепропетровск
Сообщений: 15
zap не помог.
если коментарю
DELETE ALL
PACK
в кнопке, то не удаляет, но дублирует записи..
14 апр 08, 13:04    [5542095]     Ответить | Цитировать Сообщить модератору
 Re: удаление таблицы после отработки формы  [new]
проходящий.
Guest
Timofey781
zap не помог.

Не помог в чем? В нахождении пропавшей таблицы? Так и не должен. Это более короткая и намного более быстрая замена delete all и pack.
14 апр 08, 13:08    [5542125]     Ответить | Цитировать Сообщить модератору
 Re: удаление таблицы после отработки формы  [new]
Dima T
Member

Откуда:
Сообщений: 15282
Timofey781
именно физически удаляется с диска.

Все равно перед удалением таблица закрывается, иначе ее не удалить.
Ищи пошагово отладчиком как я написал.
В том коде который ты привел это не происходит. Вероятно ошибка в коде который отрабатывает после поиска или перед следующим действием.
14 апр 08, 13:13    [5542170]     Ответить | Цитировать Сообщить модератору
 Re: удаление таблицы после отработки формы  [new]
MiklS
Member

Откуда: Владивосток
Сообщений: 131
Нет необходимости паковать временную таблицу.
Просто удаляем все записи и при добавлении новой делаем следующее
SET DELETED OFF
LOCATE FOR DELETED()
IF FOUND()
   RECALL NEXT 1
ELSE
   APPEND BLANK
ENDIF
SET DELETED ON
И табличка будет целой!
14 апр 08, 13:18    [5542214]     Ответить | Цитировать Сообщить модератору
 Re: удаление таблицы после отработки формы  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
А какой смысл в использовании именно постоянной таблицы? Может, проще использовать курсор и не мучится с постоянной очисткой?

CREATE CURSOR table_tmp (nomer C(10))

Использование PACK и ZAP в процессе работы приложения "дурной тон". В том смысле, что проблем больше, чем преимуществ. Просто нет смысла в их использовании.

Кстати, что именно Вы вкладываете в понятие "таблица перестает существовать"? Как именно определяется факт отсутствия таблицы?
14 апр 08, 13:40    [5542379]     Ответить | Цитировать Сообщить модератору
 Re: удаление таблицы после отработки формы  [new]
Dima T
Member

Откуда:
Сообщений: 15282
MiklS, ВладимирМ у автора проблема что где-то в коде таблица закрывается и удаляется с диска, а так я тоже за курсор вместо временной таблицы.
14 апр 08, 13:46    [5542429]     Ответить | Цитировать Сообщить модератору
 Re: удаление таблицы после отработки формы  [new]
Timofey781
Member

Откуда: Днепропетровск
Сообщений: 15
ВладимирМ
А какой смысл в использовании именно постоянной таблицы? Может, проще использовать курсор и не мучится с постоянной очисткой?

CREATE CURSOR table_tmp (nomer C(10))

Использование PACK и ZAP в процессе работы приложения "дурной тон". В том смысле, что проблем больше, чем преимуществ. Просто нет смысла в их использовании.

Кстати, что именно Вы вкладываете в понятие "таблица перестает существовать"? Как именно определяется факт отсутствия таблицы?


Таблица ФИЗИЧЕСКИ УДАЛЯЕТСЯ. с курсором не работал вообще. сейчас буду пробовать
14 апр 08, 14:49    [5543015]     Ответить | Цитировать Сообщить модератору
 Re: удаление таблицы после отработки формы  [new]
Dima T
Member

Откуда:
Сообщений: 15282
Timofey781
Таблица ФИЗИЧЕСКИ УДАЛЯЕТСЯ. с курсором не работал вообще. сейчас буду пробовать


Курсор, ZAP - это отступление от темы, попутный совет по показанному коду. Проблему с удалением это не решит. Смотри отладчиком что реально происходит, где какой код отрабатывает.

удалить файл можно только командой DELETE FILE ... само ничего не происходит
14 апр 08, 15:30    [5543341]     Ответить | Цитировать Сообщить модератору
 Re: удаление таблицы после отработки формы  [new]
Dima T
Member

Откуда:
Сообщений: 15282
Dima T
удалить файл можно только командой DELETE FILE ... само ничего не происходит

Поторопился. Есть еще ERASE и REMOVE TABLE

Можешь поставить SET SAFETY ON и тогда при выполнении одной из этих команд сообщение будет с вопросом "Удалить? Да/Нет"
14 апр 08, 15:42    [5543439]     Ответить | Цитировать Сообщить модератору
 Re: удаление таблицы после отработки формы  [new]
Timofey781
Member

Откуда: Днепропетровск
Сообщений: 15
Dima T
Dima T
удалить файл можно только командой DELETE FILE ... само ничего не происходит

Поторопился. Есть еще ERASE и REMOVE TABLE

Можешь поставить SET SAFETY ON и тогда при выполнении одной из этих команд сообщение будет с вопросом "Удалить? Да/Нет"


в том то и дело что нет у меня ни ERASE ни REMOVE TABLE. Вот приаттачил листинг. Есть форма, грид, text1 и чекбокс один с кнопкой. Единственное что еще прописано это init формы. Больше кода вообще нету.

К сообщению приложен файл (listing.txt - 1Kb) cкачать
14 апр 08, 16:04    [5543646]     Ответить | Цитировать Сообщить модератору
 Re: удаление таблицы после отработки формы  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Timofey781
Таблица ФИЗИЧЕСКИ УДАЛЯЕТСЯ. с курсором не работал вообще. сейчас буду пробовать

Как Вы это проверили? Почему считаете, что удаление произошло именно после выполнения приведенного кода?
14 апр 08, 18:57    [5544787]     Ответить | Цитировать Сообщить модератору
 Re: удаление таблицы после отработки формы  [new]
Dima T
Member

Откуда:
Сообщений: 15282
Timofey781
Вот приаттачил листинг...

Аттачь весь проект (форму как минимум) с тестовыми табличками, запакуй только.
И что давить чтобы ошибка повторилась напиши.

Нету в твоем листинге никаких удалений.
14 апр 08, 21:17    [5545134]     Ответить | Цитировать Сообщить модератору
 Re: удаление таблицы после отработки формы  [new]
Timofey781
Member

Откуда: Днепропетровск
Сообщений: 15
Dima T
Timofey781
Вот приаттачил листинг...

Аттачь весь проект (форму как минимум) с тестовыми табличками, запакуй только.
И что давить чтобы ошибка повторилась напиши.

Нету в твоем листинге никаких удалений.


Все.. Я окончательно запутался. Короче говоря, создаю проджект в 6ке - все почти работает, в 9ке - удаляет таблицу с диска. Либо я что то не так делаю либо 9ка глючит. Пробовал переустановить, почистил реестр. Проджект на 6ке приаттачил.

К сообщению приложен файл (proj.exe - 56Kb) cкачать
15 апр 08, 11:05    [5546520]     Ответить | Цитировать Сообщить модератору
 Re: удаление таблицы после отработки формы  [new]
leaf
Member [заблокирован]

Откуда: Ростов-на-Дону --> Москва
Сообщений: 2661
может просто ищите в одном месте а сохраняете в другом?
15 апр 08, 11:21    [5546679]     Ответить | Цитировать Сообщить модератору
 Re: удаление таблицы после отработки формы  [new]
Timofey781
Member

Откуда: Днепропетровск
Сообщений: 15
leaf
может просто ищите в одном месте а сохраняете в другом?


все пути проверил неоднократно.
15 апр 08, 11:29    [5546752]     Ответить | Цитировать Сообщить модератору
 Re: удаление таблицы после отработки формы  [new]
Dima T
Member

Откуда:
Сообщений: 15282
Timofey781
Проджект на 6ке приаттачил.

Запустил в 9-ке, все пусто, подавил на кнопку, галочку поставил, ошибок нет, таблица на месте.
Как ошибку повторить? Что в какой последовательности нажимать?

Windows какой?
15 апр 08, 13:03    [5547781]     Ответить | Цитировать Сообщить модератору
 Re: удаление таблицы после отработки формы  [new]
Timofey781
Member

Откуда: Днепропетровск
Сообщений: 15
Dima T
Timofey781
Проджект на 6ке приаттачил.

Запустил в 9-ке, все пусто, подавил на кнопку, галочку поставил, ошибок нет, таблица на месте.
Как ошибку повторить? Что в какой последовательности нажимать?

Windows какой?


ну даже и не знаю...
1. winxp sp1
visual foxpro 9.0 sp1

2. запускаю форму
3. в текстбокс при галочке на чекбоксе вбиваю например 100
4. поиск проходит успешно но после этого таблица исчезает, при попытке ее просмотра вываливается окно кнопкой loдщсфеую

Я начинаю подозревать что у меня глюкавая 9ка.. попробую вытянуть и поставить другой дистр.
15 апр 08, 15:18    [5549084]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: удаление таблицы после отработки формы  [new]
Oksana_Solo
Member

Откуда:
Сообщений: 2
Помогите пожалуйста, можно ли восстановить случайно удаленную таблицу? REMOVE TABLE () DELETE
29 июн 15, 12:02    [17827561]     Ответить | Цитировать Сообщить модератору
 Re: удаление таблицы после отработки формы  [new]
Dima T
Member

Откуда:
Сообщений: 15282
Oksana_Solo
Помогите пожалуйста, можно ли восстановить случайно удаленную таблицу? REMOVE TABLE () DELETE

Нельзя. Файл удален.

Теоретически, если сразу после удаления спохватится, можно вырубить комп как можно быстрее (из розетки выдернуть или кнопку "вкл" держать), загрузится с флэшки или достать жесткий диск и к другому компу прицепить, затем пробовать различный софт восстановления удаленных файлов. 100% гарантии нет, если сразу спохватиться, то можно успеть. За подробностями в форум в админам виндовса.

PS Не надо в чужие топики писать свои вопросы. Заводи новый топик.
29 июн 15, 12:14    [17827612]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить