Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Foxpro/Clipper/Dbase > С редактированием разобратся бы помогли! :smile


Автор: Ved 18.8.2007, 09:18
Первым делом объясню Уважаемые,
 к программированию на FOX pro ни какого отношения не имею

Работаю с программой которая разработана на нем!
Дело в том что мне надо в кротчайшие сроки исправить реестры, программно долго очень!
 
Вопрос:
Есть таблица допустим примерно 6000 строк мне надо из этой таблице допустим 2000 строк удалить удаляю я их так 
есть калонка p_nom в ней указаны порядковые номера этих строк я их выстраиваю от 1 до .... 
Код

index on p_nom to ff

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


Буду очень признателен smile 

Цитата

P.S.
Да модераторы не ругайте пожалуста меня, в раздел помощи надо было я знаю, просто мне надо то может малюсенький код, а потом бы она там просто на долгое время утонула бы

Автор: Ved 19.8.2007, 14:17
Чота молчок, может я что то хочу на грани фантастики?
Просто я думаю что там можно какието условия поставить, ну что с такого по такое например числа становится задествованы!
Думаю что то та с масивом или же нет? smile 

Не в тему дайте хоть ссылку на книгу ну такую для начинающих, просто хочу эту проблему как можно скорее решить!

Автор: utyf1982 28.8.2007, 12:23
как вариант

Код

DELETE from (тут надо указать имя таблицы без скобок ) WHERE p_nom in (1,2,3,4,56,78)


то есть в скобках после in через запятую указываются номера строк 
только , по моему , за раз в скобках можно указывать не более 25 значений
хотя на счет количества могу ошибатся

Автор: Cashey 28.8.2007, 21:21
Цитата(utyf1982 @  28.8.2007,  13:23 Найти цитируемый пост)
как варианткод FoxPro1:DELETE from (тут надо указать имя таблицы без скобок ) WHERE p_nom in (1,2,3,4,56,78)highlightSyntax('foxpro_YTBjZG','foxpro');highlightSyntax('foxpro_YTBjZG','foxpro');то есть в скобках после in через запятую указываются номера строк только , по моему , за раз в скобках можно указывать не более 25 значенийхотя на счет количества могу ошибатся

и получить синтаксическую ошибку, классный вариант )))))
-1

правильно будет так:
Код

DELETE from (тут надо указать имя таблицы без скобок ) WHERE recno("таблица") > 2000

ну это если нет никаких иных условий для удаления

Автор: utyf1982 31.8.2007, 10:09
Цитата Cashey    Дата 28.8.2007, 21:21
Цитата

правильно будет так:
Выделить всёкод FoxPro
1:
    
DELETE from (тут надо указать имя таблицы без скобок ) WHERE recno("таблица") > 2000

ну это если нет никаких иных условий для удаления 


Не могу сказать где сдесь будет ошибка если тип p_nom -numeric а вот ваш вариант судя по всему удалит все записи с порядковым номром по индексу больше 2000 ,что автору совершшенно не нужно ему нужно удалить около 2000 записей с номерами заданными им самим.

Добавлено через 9 минут и 18 секунд
to Ved 
как вариант того что вам нужно 
1 создаете таблицу с 1 полем по структуре идеентичным полю  p_nom пусть это будет t1
2 заполняете его номерами которые вам нужно удалить
3 тот же запрос только (щас выругаюсь) коррелированный

Код

DELETE from (тут надо указать имя таблицы без скобок ) WHERE p_nom in (select t1.p_nom from t1)



Автор: utyf1982 31.8.2007, 10:25
совсем забыл если вам нужно их СОВСЕМ удалить то после все этой процедуры упаковываете вашу базу
Код

SET EXCLUSIVE ON 
use ? &&вибираете свою  таблицу
pack


Автор: Cashey 6.9.2007, 00:06
Цитата(utyf1982 @  31.8.2007,  11:09 Найти цитируемый пост)
Не могу сказать где сдесь будет ошибка если тип p_nom -numeric

FoxPro не поддерживает такой синтаксис.

Из вопроса не очевидно, что требуется удалить какие-то конкретные записи, а не просто заданное их число.

Если нужно удалить записи по диапозону значения необходимо использовать ф-цию BETWEEN, если конкретные значения, то через ф-цию INLIST, но помня об ограниченном количестве параметров

Автор: Ved 12.9.2007, 17:23
Cashey, 
utyf1982, 
Обоим особое спасибо за помощь вроде работает все тока многа цифр не проходят но все равно ништяк извините за долгую тишину, чота замаялся обоим ПЛЮСА за помощь благодарность для тебя большая Cashey, Тока я обоим плюса ставлю просто Кащей друг пытался помочь а ты его в минуса загнал! Так у него хоть ровно будет!
Тему пока решённой ставлю так как некогда но у меня остались пару вопросиков которые  надо обязательно задать! smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)