:: Visual Foxpro, Foxpro for DOS
удаление записей
axeum
Автор

Сообщений: 107
Дата регистрации: 07.07.2020
Доброго дня
как можно удалить из всех таблиц в проекте все записи?
пробовал через DELETE ALL но это удаление всех записей в текущей таблицу а вот как перейти на след таблицу не знаю или может есть какая то команда на удаление всех записей во всех таблицах проекта(все таблицы free tables)



Исправлено 1 раз(а). Последнее : axeum, 16.03.21 20:44
Ratings: 0 negative/0 positive
Re: удаление записей
Taran

Сообщений: 13623
Откуда: Красноярск
Дата регистрации: 16.01.2008
Нет такого.
Надо цикл делать.
Если эти таблицы открыты, то aused() смотри.
Либо adir(), открывай поштучно и удаляй.

Только скорее всего тебе надо не delete all, а zap.
Ratings: 0 negative/0 positive
Re: удаление записей
axeum
Автор

Сообщений: 107
Дата регистрации: 07.07.2020
а разве delete all и pack не тоже самое сделают что и zap?
Ratings: 0 negative/0 positive
Re: удаление записей
Божья_коровка

Сообщений: 25720
Дата регистрации: 23.08.2001
Прежде чем паковать или запать все записи во всех таблицах рабочего проекта, копию сделай, а то мало ли что


------------------
Жись, она как зёбра, полоса белая, полоса черная, а мне всегда задница достается...
Ratings: 0 negative/0 positive
Re: удаление записей
Taran

Сообщений: 13623
Откуда: Красноярск
Дата регистрации: 16.01.2008
axeum
а разве delete all и pack не тоже самое сделают что и zap?

Результат тот же, только значительно медленнее.
Ratings: 0 negative/0 positive
Re: удаление записей
axeum
Автор

Сообщений: 107
Дата регистрации: 07.07.2020
Кстати я в хелпе так и не нашёл, а в курсоре есть какой то лимит на кол-во записей?
Ratings: 0 negative/0 positive
Re: удаление записей
Taran

Сообщений: 13623
Откуда: Красноярск
Дата регистрации: 16.01.2008
axeum
Кстати я в хелпе так и не нашёл, а в курсоре есть какой то лимит на кол-во записей?

Однако как и в таблице. Никогда не было вопросов.
Ratings: 0 negative/0 positive
Re: удаление записей
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
> далить из всех таблиц в проекте все записи

В проекте может быть и не "все" таблицы, и лишние
В рантайме проги прога должна знать, где есть список "всех" таблиц, например фоксовый контейнер БД, или просто самопальный перечень таблиц программы. Если он есть, то согласно перечню удалить несложно
Если таблицы находятся в проекте, то... руками их ZAP-ни )

() Не могу представить, чтобы потребовалось ZAP-нуть исключительно все таблица рабочей проги
Ratings: 0 negative/0 positive
Re: удаление записей
Taran

Сообщений: 13623
Откуда: Красноярск
Дата регистрации: 16.01.2008
Олег, да ладно ты.
Я так понимаю человек в начале пути и обнуление таблиц нужно именно на этапе разработки.
Ratings: 0 negative/0 positive
Re: удаление записей
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Я и посоветовал - руками ZAP-ни
Ratings: 0 negative/0 positive
Re: удаление записей
Taran

Сообщений: 13623
Откуда: Красноярск
Дата регистрации: 16.01.2008
of63
Я и посоветовал - руками ZAP-ни

Да по хорошему если, то и удалить файлы.
Прога должна уметь пересоздать с нуля.
Ratings: 0 negative/1 positive
Re: удаление записей
axeum
Автор

Сообщений: 107
Дата регистрации: 07.07.2020
если бы таблиц было 20-30 то да руками пройтись не проблема, а их около 500

вот что то подобное у меня получается, но возникла проблема при & скан проходит только 1 таблицу очищает ее но дальше останавливается
ADIR(la,"c:\jkx\data\*.dbf")
USE arraytable
APPEND FROM ARRAY la
SELECT arrayTable
GOTO top
x=1
SCAN
use_n='use ' +arrayTable.name_f
sel_n='select ' + "'" +arrayTable.name_f+ "'"
&use_n
&sel_n
*!* IF x=10
*!* exit
*!* ENDIF
*!* x=x+1
zap
*!* DELETE ALL
*!* pack
ENDSCAN



Исправлено 3 раз(а). Последнее : axeum, 17.03.21 07:07
Ratings: 0 negative/0 positive
Re: удаление записей
akvvohinc

Сообщений: 4203
Откуда: Москва
Дата регистрации: 11.11.2008
axeum
как можно удалить из всех таблиц в проекте все записи?
Это смотря что вы называете проектом.

axeum
если бы таблиц было 20-30 то да руками пройтись не проблема, а их около 500
Если вы смогли их посчитать, значит, вам известно, в каких местах (дисках, папках) они находятся и как называются.

Переложите эти знания в алгоритм поиска этих файлов (например, это все файлы с расширением DBF в такой-то папке), а как ZAP-овать, вы уже знаете.

Если же имена всех нужных таблиц только у вас в голове (автоматически не вычисляются), то запишите их полную спецификацию в какой-то справочник (таблицу).

Ну и, наконец, если проектом вы называете проектный файл (*.pjx), а удалить записи вам требуется из всех таблиц, включенных в него, то можете открыть его командой USE. А далее пробежаться по записям нужного типа (например, TYPE = 'D' для свободных таблиц), открывать таблицу, имя которой находится в поле NAME и т.д. и т.п.
Кроме свободных таблиц там могут быть описания баз данных (их пока опущу).
Ratings: 0 negative/0 positive
Re: удаление записей
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
> но возникла проблема при & скан проходит только 1 таблицу очищает ее но дальше останавливается

Потому что
'use ' +arrayTable.name_f
открывает в рабочей области arrayTable
надо SELECT 0 добавить перед use
Ratings: 0 negative/1 positive
Re: удаление записей
akvvohinc

Сообщений: 4203
Откуда: Москва
Дата регистрации: 11.11.2008
axeum
возникла проблема при & скан проходит только 1 таблицу очищает ее но дальше останавливается
ADIR(atables,'*.dbf')
FOR i=1 TO ALEN(atables,1)
USE (atables[i,1])
ZAP
ENDFOR
USE



Исправлено 1 раз(а). Последнее : akvvohinc, 17.03.21 07:23
Ratings: 0 negative/1 positive
Re: удаление записей
axeum
Автор

Сообщений: 107
Дата регистрации: 07.07.2020
спасибо за советы, в итоге сделал через do while

эх если б я увидел чуть раньше это сообщение, но тут действительно быстрее и проще чем у меня
akvvohinc
ADIR(atables,'*.dbf')
FOR i=1 TO ALEN(atables,1)
USE (atables[i,1])
ZAP
ENDFOR
USE
Ratings: 0 negative/0 positive
Re: удаление записей
akvvohinc

Сообщений: 4203
Откуда: Москва
Дата регистрации: 11.11.2008
Вам бы научиться избавляться от таких наворотов, которые не нужны в 99% случаев:
use_n='use ' +arrayTable.name_f
sel_n='select ' + "'" +arrayTable.name_f+ "'"
&use_n
&sel_n
Заменяя их на нормальные
use (arrayTable.name_f)
select (arrayTable.name_f) && хотя здесь SELECT вообще не нужен, вы и так находитесь на нужном алиасе
Ratings: 0 negative/0 positive
Re: удаление записей
LUCIAN

Сообщений: 343
Откуда: Лида Беларусь
Дата регистрации: 25.03.2008
Для таблиц из DBC такой код:

CLOSE TABL ALL
CLOSE DATABASES all
OPEN DATA (nam_dbc) EXCL
LNTABLES=ADBOBJECTS(LATABLES,'TABLE')
FOR LNX=1 TO LNTABLES
LCTABLENAME=LATABLES(LNX)
WAIT WINDOW LCTABLENAME NOWAIT
USE (LCTABLENAME)
ZAP
USE
ENDFOR
WAIT WIND " ФИНИШ " NOWAIT
Ratings: 0 negative/0 positive
Re: удаление записей
axeum
Автор

Сообщений: 107
Дата регистрации: 07.07.2020
вот смотрю я на свой код и на код решений которые предлагают и думаю как мне вообще доверяют писать отчеты,даже если они формируются и считают все правильно



Исправлено 1 раз(а). Последнее : axeum, 18.03.21 07:01
Ratings: 0 negative/0 positive
Re: удаление записей
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Все самоучки так начинают
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 27 Burn akvvohinc  (Гостей: 25)

© 2000-2024 Fox Club 
Яндекс.Метрика