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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2009, 12:09   #1
Tanuska___:)
Пользователь
 
Аватар для Tanuska___:)
 
Регистрация: 22.04.2008
Сообщений: 84
По умолчанию обнуление счетчика в бд

скажите как все же можно обнулить счетчик в базе ..
я тут прописала :
procedure TForm1.CompactAccessDatabase(Databa seName,Password:string);
// сжатие базы данных Access
const
V35='DAO.DBEngine.35';
V36='DAO.DBEngine.36';
var
TempName:array[0..MAX_PATH] of Char; // имя временного файла
TempPath:string; // путь
Name:string;
tmpDAO:_DBEngine;//ругается на тип данных
ClassID:TGUID;
begin
// получим ClassID
try
try
ClassID:=ProgIDToClassID(v35);
except
try
ClassID:=ProgIDToClassID(v36);
except
raise; // что-то неизвестное
end;
end;
// получаем путь для временного файла
TempPath:=ExtractFilePath(DatabaseN ame);
if TempPath='' then TempPath:=GetCurrentDir;
//получаем имя временного файла
GetTempFileName(PChar(TempPath),'md b',0,TempName);
Name:=StrPas(TempName);
DeleteFile(PChar(Name)); // этого файла не должно существовать
if Password<>'' then Password:=';pwd='+Password;
tmpDAO:=CreateComObject(ClassID) as _DBEngine;
tmpDAO.CompactDatabase(DatabaseName ,Name,0,0,Password);
DeleteFile(PChar(DatabaseName)); // удаляем не упакованную базу
RenameFile(Name,DatabaseName); // переименовываем упакованную базу
except
// выдаем сообщение об исключительной ситуации
on E: Exception do
ShowMessage('Ошибка сжатия базы данных'#10#13+e.message);
end;
end;


и в обработчике:
ADOConnection1.Close;
CompactAccessDatabase('Zalob.mdb',' ');
MessageDlg('Сжатие завершено. Перезапустите программу',mtInformation,[mbOk],0);
Application.Terminate;

но у меня ругается еще в разделе
var описания переменных процедуры:
tmpDAO:_DBEngine;
может нужно библиотеку какуюто еще подключить
Tanuska___:) вне форума Ответить с цитированием
Старый 15.01.2009, 09:38   #2
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

От сюда взяли ? :http://www.delphisources.ru/pages/fa...access_db.html

Там вверху в коментариях посмотри зависимости : windows, SysUtils, Dialogs, DAO2000, ComObj ... и еще для работы с MS Access через ADO в самом компиляторе нужно поставить библиотеку :
Project -> Import Type Library ... выбрать в списке Microsoft Jet and Replication Objects .... и нажать Install...

P.S.
переходите на Absolute Database или Accuracer ... и после этого про mdb будешь вспоминать с улыбкой ...
"Заряженному танку в дуло не смотрят" @Dekmer in WoT

Последний раз редактировалось Kotofff; 15.01.2009 в 09:40.
Kotofff вне форума Ответить с цитированием
Старый 22.01.2009, 23:10   #3
Vemer
 
Регистрация: 22.01.2009
Сообщений: 8
По умолчанию

ADO это медленно и печально..

Для маленьких проектов Firebird тоже ниче + он бесплатный.. Первая версия дружит с Дельфи через IBX змечательно..
Vemer вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обнуление катриджа. Xeon332 Компьютерное железо 2 11.05.2009 07:37
Обнуление переменной [MI_nor] Общие вопросы C/C++ 3 05.11.2008 18:01
Эмуляция счетчика tolikman Microsoft Office Access 3 24.10.2008 11:13
Сброс счетчика vldand Microsoft Office Access 1 20.10.2008 18:40
Эмуляция механического счетчика Paul Hindenburg Общие вопросы Delphi 2 20.08.2007 00:20