Текущий архив: 2006.04.02;
Скачать: CL | DM;
ВнизPassword on DB MS Access Найти похожие ветки
← →
kblc © (2006-02-07 13:10) [0]Уважаемые мастера, помогите плз решить проблему. Пытаюсь сменить пароль на файл БД MS Access;
Но это исключение меня уже достало :( . На данный момент пароль стоит пустой, т.е. пароля нет.
исключение:
при выполнении строкиDB:=DAO.OpenDatabase(AFileName,VOptions,VReadOnly,VConnect);
попадаю в CheckAutoResult а оттуда уже в SafeCallError(). Там и вызываетсяraise
var
LAST_DATABASE_ERROR: string = "";
//....
function Database_ChgPassword(const ALPassword, ANPassword: string): BOOLEAN;
var
DAO: _DBEngine;
DB: Database;
ClassID: TGUID;
VOptions, VReadOnly, VConnect: OLEVariant;
AFileName, LPassword, NPassword: WideString;
const
V35 = "DAO.DBEngine.35";
V36 = "DAO.DBEngine.36";
begin
Result:=FALSE;
try
/////////////////////////////
try
try
ClassID := ProgIDToClassID(v36);
except
ClassID := ProgIDToClassID(v35);
end;
if ALPassword<="" then LPassword:=#0 else LPassword:=WideString(ALPassword);
if ANPassword<="" then NPassword:=#0 else NPassword:=WideString(ANPassword);
AFileName:=WideString("C:\123.mdb"); //файл точно не открыт никакой другой программой
VOptions:=dbDriverCompleteRequired; // либо любые другие возможные (в т.ч. TRUE - как указано во многих примерах)
VReadOnly:=WORDBOOL(FALSE);
VConnect:=WideString(";Pwd=" + LPassword); //VConnect:="" тоже не помогает
DAO:=CreateComObject(ClassID) as _DBEngine;
DB:=DAO.OpenDatabase(AFileName,VOptions,VReadOnly,VConnect); // в этом месте получаю исключение (т.е. при выполнении этой строки). "Ошибочный аргумент"
with DB do
begin
NewPassword(LPassword, NPassword);
Close;
end;
Result:=TRUE;
except
on E: Exception do
begin
LAST_DATABASE_ERROR:=E.Message;
end;
end;
finally
DAO:=nil;
DB:=nil;
/////////////////////////////
end;
end;
П.С.
Может это и не важно, но я использую Delphi 2005
← →
sniknik © (2006-02-07 13:47) [1]ALTER DATABASE PASSWORD
← →
sniknik © (2006-02-07 13:49) [2]p.s. открыто должно быть экслюзивно(монопольно)
← →
kblc © (2006-02-07 21:32) [3]Можно поподробнее:
Как в строке соединения (ConnectionString [ADOConnection]) указать монопольный доступ?
← →
sniknik © (2006-02-07 22:22) [4]там галочка есть... на третьей закладке мастера составляющего строку, так и называется exclusive, ее поставь, остальные сними при той же строке что была.
Страницы: 1 вся ветка
Текущий архив: 2006.04.02;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.054 c