Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.08.2008, 00:47   #1
sergey113
Форумчанин
 
Регистрация: 12.12.2007
Сообщений: 104
По умолчанию Не могу сделать очистку строк в таблице

Есть форма в которой заношу по нажатию кнопки в таблицу massiv.dbf, вот процедура:
Form3.Table1.Append;
Form3.Table1.FieldByName('pug').Val ue:=Form3.ComboBox1.Text;
Form3.Table1.FieldByName('tech').Va lue:=Form3.ComboBox2.Text;
Form3.Table1.FieldByName('podkom'). Value:=Form3.ComboBox3.Text;
Form3.Table1.Post;

Это делаю для того чтобы в последствии сделать из строк в таблице massiv.dbf ряд вставок в други таблицы по определенному алгоритму. Но это все вступление А не получается сделать очистку всех строк в таблице при загрузке формы.... Форма загружется, а старые строки там есть. Вот код который по моему мнению долже это делать...

Form3.Table1.Active:=False;
Form3.Table1.DatabaseName:='yantary ';
Form3.Table1.TableName:='massiv.dbf ';
Form3.Table1.Active:=true;
strvl:=form3.Table1.RecordCount;
Form3.Table1.First ;
Form3.Table1.Edit;
for i:=0 to strvl-1 do begin
Form3.Table1.ClearFields;
end;
Form3.Table1.Post;

Подскажите, что за грабли ?
sergey113 вне форума Ответить с цитированием
Старый 26.08.2008, 09:59   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А ты попробуй метод EmptyTable
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.09.2008, 17:19   #3
sergey113
Форумчанин
 
Регистрация: 12.12.2007
Сообщений: 104
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А ты попробуй метод EmptyTable
что-то не получается ... говорит table cannot be opened for exllusive use
почему не понимаю, вот что пишу в коде:


Form3.Table1.Active:=False;
Form3.Table1.DatabaseName:='yantary ';
Form3.Table1.TableName:='massiv.dbf ';
Form3.Table1.Active:=true;
strvl:=form3.Table1.RecordCount;
Form3.Table1.First ;
//Form3.Table1.Edit;
for i:=0 to strvl-1 do begin
Form3.Table1.EmptyTable;
end;
sergey113 вне форума Ответить с цитированием
Старый 12.09.2008, 18:02   #4
sergey113
Форумчанин
 
Регистрация: 12.12.2007
Сообщений: 104
По умолчанию

решил сделать очистку таким образом
Form3.Table1.Active:=False;
Form3.Table1.DatabaseName:='yantary ';
Form3.Table1.TableName:='massiv.dbf ';
Form3.Table1.Active:=true;
strvl:=form3.Table1.RecordCount;
Form3.Table1.First ;
Form3.Table1.Edit;
for i:=0 to strvl-1 do begin
Form3.Table1.Delete;
end;
Form3.Table1.Post;
form3.show;
но почему-то через раз выскакивает ошибка
---------------------------
Project1
---------------------------
Table1: Dataset not in edit or insert mode.
---------------------------
ОК
---------------------------
sergey113 вне форума Ответить с цитированием
Старый 12.09.2008, 19:11   #5
sergey113
Форумчанин
 
Регистрация: 12.12.2007
Сообщений: 104
По умолчанию

поменял код на :

Form3.Table1.Active:=False;
Form3.Table1.DatabaseName:='yantary ';
Form3.Table1.TableName:='massiv.dbf ';
Form3.Table1.Active:=true;
strvl:=form3.Table1.RecordCount;
Form3.Table1.First ;
//Form3.Table1.Edit;
for i:=0 to strvl-1 do begin
Form3.Table1.Edit;
Form3.Table1.Delete;
Form3.Table1.Post;
end;

form3.show;
end;

и ошибка выскакивает столько раз сколько строк требуется очистить ... те ошибка выскакивает при вызове delete .. но почему ? ведь я открыл набор данных на редактироание..
но что для меня самое странное что access показывает что записей после удаления нет.. а вот некоторые други е проги показывают что все раннее добавленные строки там есть .. почему так случается ?

Последний раз редактировалось sergey113; 12.09.2008 в 19:22.
sergey113 вне форума Ответить с цитированием
Старый 12.09.2008, 19:32   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

А причем тут редактирование-то?!
1 способ (был уже указан Стилетом):
Form3.Table1.Close;
Form3.Table1.EmptyTable;
Form3.Table1.Open;

2 способ (если уж приспичило именно так):
Form3.Table1.Open;
while Form3.Table1.RecordCount>0 do
Form3.Table1.Delete;

Последний раз редактировалось mihali4; 12.09.2008 в 19:41.
mihali4 вне форума Ответить с цитированием
Старый 12.09.2008, 19:37   #7
sergey113
Форумчанин
 
Регистрация: 12.12.2007
Сообщений: 104
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
А причем тут редактирование-то?!
1 способ:
Form3.Table1.Close;
Form3.Table1.EmptyTable;
Form3.Table1.Open;
Работает ... большое спасибо, а делал так как написанно в учебнике Хомоненко Delphi 7 наиболее полное руководство.

Теперь все программы показыват что файл чист и размер у него как у чистого .. Большое спасибо.
sergey113 вне форума Ответить с цитированием
Старый 12.09.2008, 21:22   #8
sergey113
Форумчанин
 
Регистрация: 12.12.2007
Сообщений: 104
По умолчанию

Что-то толко иногда глючит после внесения изменения в код программы (в разные места ) начинает ругатся Table is busy закроешь delphi откроеш обратно .. опять работает до первых изменений.. Это у меня Delphi глючит или такое бывает при каких-то еще обстоятельствах ?
sergey113 вне форума Ответить с цитированием
Старый 12.09.2008, 22:23   #9
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

По-хорошему - все таблицы базы перед компилированием проекта должны быть закрыты, а в проекте предусмотрено их открытие по мере необходимости. И - закрытие их всех при закрытии программы.
Тогда BUSY если и сможет возникнуть, то только после аварийного завершения программы...
mihali4 вне форума Ответить с цитированием
Старый 12.09.2008, 22:26   #10
sergey113
Форумчанин
 
Регистрация: 12.12.2007
Сообщений: 104
По умолчанию

спасибо... поправлю код
но ошибка возникает сразу после
Form3.Table1.EmptyTable;
даже если я пишу так
Form3.Table1.Close;
Form3.Table1.EmptyTable;
Form3.Table1.Close;
Form3.Table1.Open;

Что-то не так ...

Последний раз редактировалось sergey113; 13.09.2008 в 00:00.
sergey113 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу сделать цифровые часы sid Общие вопросы Delphi 25 16.12.2009 05:06
Не могу сделать выборку с нужными полями, помогите чайнику! kadet.rus Microsoft Office Access 2 26.04.2008 14:12
Excel max 256 строк VS user надо 300 строк Exo Microsoft Office Excel 3 10.01.2008 17:14
Сортировка в таблице... Gektor Паскаль, Turbo Pascal, PascalABC.NET 2 23.09.2007 12:10
Как сделать, чтобы один элемент списка в ComboBox писался в несколько строк? Andr Общие вопросы Delphi 5 15.08.2007 22:24