C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Удаление, Не удаляется толком запись
** avtoritet
Отправлено: 14.05.2005, 23:15


Не зарегистрирован







У меня dbase IV базы подключены к приложению( индексные файлы .MDX). Альянса нет, а дерижирует базами TTable(Т1). Значит, делаю так:
T1->Delete(); — вроде все удаляет, но по сути то лишь удаленная запись помечается как "помеченная на удаление"(что-то вроде 1С:предпр.), и Т1 с нею не работает.
Вопрос таков, как мне удалить навсегда?
** avtoritet
Отправлено: 15.05.2005, 14:54


Не зарегистрирован







Ну парни, мжет я вопрос задал некоректно? Или просто никто не хочет поделиться своими знаниями?
sunower
Отправлено: 15.05.2005, 15:12


Не зарегистрирован







да это и мне интересно, помогите парни
** avtoritet
Отправлено: 15.05.2005, 18:09


Не зарегистрирован







Нас таких уже двое(я и суновер)! Разве никто больше не замечал как у них ДБэйсы толстеют?
Откликнитесь, пожалуйста кто-нибудь!
Vlad
Отправлено: 16.05.2005, 07:47


Машинист паровоза

Группа: Участник
Сообщений: 231



Для баз DBF принято сразу неудалять запись, а только помечать,что она удаленная. Для физического удаления используется pack() и всю базу грохнуть zap().
Vlad
Отправлено: 16.05.2005, 07:50


Машинист паровоза

Группа: Участник
Сообщений: 231



В догонку : открываешь help и читаешь.....
Delphi syntax

function DbiPackTable (hDb: hDBIDb; hCursor: hDBICur; pszTableName: PChar; pszDriverType: PChar; bRegenIdxs: Bool): DBIResult stdcall;
function DbiDeleteRecord (hCursor: hDBICur; pRecBuf: Pointer): DBIResult stdcall;
и так далее..........
** avtoritet
Отправлено: 16.05.2005, 13:02


Не зарегистрирован







Спасибо Влад!
Попробую ...
** avtoritet
Отправлено: 16.05.2005, 14:28


Не зарегистрирован







to Vlad.
Я наверное немного туп. Но у меня нечерта не получается!
Работаю в БСБ 6. Методов pack() and zap() вообщее нету.
Не знаю ...
Может подкинешь кусочик кода?
Vlad
Отправлено: 16.05.2005, 16:56


Машинист паровоза

Группа: Участник
Сообщений: 231



Естественно что нету, если работаешь через bde, то читаешь хелп bde и юзаешь функции bde. Help называется -Borland Database engine online reference.
p.s. Код завтра кину. у меня на работе только x++; sad.gif biggrin.gif
Guest
Отправлено: 16.05.2005, 17:13


Не зарегистрирован







CODE

//---------------------------------------------------------------------------
// Добавление метода Pack
//---------------------------------------------------------------------------

bool __fastcall TFoxTable::Pack (void)
{
bool ret;

if (!DbUseLock()) return false; // Блокировать Active = false; Exclusive = true; Active = true;

ret = true;
try { Check (DbiPackTable (DBHandle, Handle, NULL, NULL, false)); }
catch (Exception &exep)
{ ret = false;
   ShowMessage (AnsiString("FoxTable->DbPACK ERROR\n") + exep.Message);
}

return ret;
}

Vlad
Отправлено: 17.05.2005, 07:45


Машинист паровоза

Группа: Участник
Сообщений: 231



Как обещал, но не забудь подключить bde.hpp
Для работы с dbf лучше Apollo,чем bde

void __fastcall TPackForm::Button1Click(TObject *Sender)
{
int i=0;
CURProps Props;

//****
покоцано

//*****
DbiGetCursorProps(Table1->Handle, Props);
/*
*/
DbiPackTable(Table1->DBHandle, Table1->Handle, NULL, NULL, TRUE);
/* покоцано */

}
Pan-SQL
Отправлено: 18.05.2005, 07:37


Не зарегистрирован







Попробуй выполнить запрос SQL на удаление:
** avtoritet
Отправлено: 19.05.2005, 03:30


Не зарегистрирован







to pan-sql.
Запрос запросом! Обычный штоли? Дак, так тоже не катит. Может я твою мыслю не подхвватил?
Vlad
Отправлено: 19.05.2005, 07:48


Машинист паровоза

Группа: Участник
Сообщений: 231



Какие SQL запросы, ?! , чего муть всякую гнать если dbf база под bde, вызвал функцию в монопольном режиме и паканул таблицу. А у кого не получается , да откройте вы dbe.hpp и посмотрите сколько там всяких функций....при минимальном знании английского и то можно догадаться какие что делают.
Удаление записей в dbe на dbf талице:
1. Помечается записись на удаление.
2. Затем таблица открывается в монопольном режиме и пакуется
выше приведенными функциями...

Вернуться в Работа с базами данных в C++Builder