|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
24.08.2008, 00:47 | #1 |
Форумчанин
Регистрация: 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; Подскажите, что за грабли ? |
26.08.2008, 09:59 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
А ты попробуй метод EmptyTable
I'm learning to live...
|
12.09.2008, 17:19 | #3 |
Форумчанин
Регистрация: 12.12.2007
Сообщений: 104
|
что-то не получается ... говорит 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; |
12.09.2008, 18:02 | #4 |
Форумчанин
Регистрация: 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. --------------------------- ОК --------------------------- |
12.09.2008, 19:11 | #5 |
Форумчанин
Регистрация: 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. |
12.09.2008, 19:32 | #6 |
*
Старожил
Регистрация: 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. |
12.09.2008, 19:37 | #7 | |
Форумчанин
Регистрация: 12.12.2007
Сообщений: 104
|
Цитата:
Теперь все программы показыват что файл чист и размер у него как у чистого .. Большое спасибо. |
|
12.09.2008, 21:22 | #8 |
Форумчанин
Регистрация: 12.12.2007
Сообщений: 104
|
Что-то толко иногда глючит после внесения изменения в код программы (в разные места ) начинает ругатся Table is busy закроешь delphi откроеш обратно .. опять работает до первых изменений.. Это у меня Delphi глючит или такое бывает при каких-то еще обстоятельствах ?
|
12.09.2008, 22:23 | #9 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
По-хорошему - все таблицы базы перед компилированием проекта должны быть закрыты, а в проекте предусмотрено их открытие по мере необходимости. И - закрытие их всех при закрытии программы.
Тогда BUSY если и сможет возникнуть, то только после аварийного завершения программы... |
12.09.2008, 22:26 | #10 |
Форумчанин
Регистрация: 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. |
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Не могу сделать цифровые часы | 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 |