![]() |
|
|
#1
|
|||
|
|||
|
есть программа...есть функция добавления новой базы и открытие...вроде как не могу правильно закрыть соединение и очистить таблицы...т.к. при закрытии и открытии новой базы продолжаю работать со старой...как правильно очистить???...работаю через 3 ADOTable пробовал:
Код:
ADOTable1.DeleteRecords(arall); Код:
ADOTable1.ClearFields; Код:
ADOTable1.Free; Help!!!!! ![]() |
|
#2
|
|||
|
|||
|
Лучше будет, если выполнить запрос
Код:
Delete From TableName |
|
#3
|
|||
|
|||
|
Угу, ты удаляешь компонент работы с данными, а не сбрасываешь подключение.
Код:
ADOTable1.DeleteRecords(arall); ADOTable1.Active := False; А теперь сюда подробно код и текст ошибок. |
|
#4
|
|||
|
|||
|
Кстати решил проблему вроде делаю ADOTable.Close; тока у меня потом на файловую переменную ругается...из файла пароль к БД как бы подгружаю...до этого не ругалось =(
Код:
try
assignfile(hFile,'pas.txt');
reset(hFile);
read(hFile,pas);
CloseFile(hFile);
Except showmessage('Отсутствует пароль');
end;процедуры на открытие файла Код:
ADOConnection1.Connected:=false;
ADOConnection2.Connected:=false;
ADOTable1.Active:=false;
ADOTable2.Active:=false;
ADOTable3.Active:=false;
pyt:='';
if OpenDialog1.Execute then begin
pyt:='Provider=Microsoft.Jet.OLEDB.4.0;' ;
pyt:=pyt+'Data Source='+OpenDialog1.FileName+';' ;
pyt:=pyt+'Persist Security Info=False;' ;
pyt:=pyt+'Jet OLEDB:Database Password='+pas ;
ADOConnection1.ConnectionString:=pyt;
ADOConnection2.ConnectionString:=pyt;
ADOConnection1.Connected:=true;
ADOConnection2.Connected:=true;
ADOTable1.Active:=true;
ADOTable2.Active:=true;
ADOTable3.Active:=true;
и создание новой базы Код:
ADOConnection1.Connected:=false;
ADOConnection2.Connected:=false;
ADOTable1.Active:=false;
ADOTable2.Active:=false;
ADOTable3.Active:=false;
if not CopyFile('base\db1.mdb','base\dbx',true)then
begin
x1:
if not CopyFile(Pchar('system\db1'), Pchar('base\db'+inttostr(nm)+'.mdb'), true) then
begin
nm:=nm+1;
ShowMessage('Error');
goto x1;
end
else
end
else begin
ADOConnection1.Connected:=true;
pyt:='base\db'+inttostr(nm)+'.mdb';
end;
pyt:='base\db'+inttostr(nm)+'.mdb';
//ADOConnection1.Connected:=true;
ADOConnection1.ConnectionString:=pyt;
ADOConnection2.ConnectionString:=pyt;
ADOConnection2.Connected:=true;
ADOTable1.Active:=true;
ADOTable2.Active:=true;
ADOTable3.Active:=true;
в продуре создания программа зависат(вроде тупо зацикливается) на showmessage (после открытия)...хотя когда первый раз запускаю нормально мб я как-то косячно создаю? как бы там лежит пустая база, у нее номерок смотрю, и увеличиваю на скока надо для новой базы....новая процедура очистки вроде ))) Код:
ADOTable1.ConnectionString:=''; ADOTable1.Active := false; ADOTable1.Close; ADOTable2.ConnectionString:=''; ADOTable2.Active := false; ADOTable2.Close; ADOTable3.ConnectionString:=''; ADOTable3.Active := false; ADOTable3.Close; Последний раз редактировалось ZaaaK, 30.06.2010 в 02:27. |
|
#5
|
|||
|
|||
|
а почему вначале коннект:
Код:
pyt:='Provider=Microsoft.Jet.OLEDB.4.0;' ;
pyt:=pyt+'Data Source='+OpenDialog1.FileName+';' ;
pyt:=pyt+'Persist Security Info=False;' ;
pyt:=pyt+'Jet OLEDB:Database Password='+pas ;
ADOConnection1.ConnectionString:=pyt;
ADOConnection2.ConnectionString:=pyt;а потом: Код:
pyt:='base\db'+inttostr(nm)+'.mdb'; ADOConnection1.ConnectionString:=pyt; может так: Код:
pyt:=pyt+'Data Source=base\db'+inttostr(nm)+'.mdb;' ;
pyt:=pyt+'Persist Security Info=False;' ;
pyt:=pyt+'Jet OLEDB:Database Password='+pas ;
ADOConnection1.ConnectionString:=pyt;
ADOConnection2.ConnectionString:=pyt; |
|
#6
|
|||
|
|||
|
да в припципе там коннект при создании нужно ниже поставить,но кусок вы какой-то не тот линканули....а что во втором куске не нравится??? в третьем куске- у меня на новую базу нету пароля и в коннекшене он ене создается...да вообще при создании новой базы по else не уходит...
(после открытия и закрытия существующей базы) |
|
#7
|
|||
|
|||
|
ну не то что не нравится... просто в первом случае коннект через АДО второй вариант... хмм... даже не знаю... поэтому и предложил что б формировать коннект так же как и первый.
ПС. а зачем тут else? Код:
if not CopyFile('base\db1.mdb','base\dbx',true)then
begin
x1:
if not CopyFile(Pchar('system\db1'), Pchar('base\db'+inttostr(nm)+'.mdb'), true) then
begin
nm:=nm+1;
ShowMessage('Error');
goto x1;
end
else
end
else begin
ADOConnection1.Connected:=true;
pyt:='base\db'+inttostr(nm)+'.mdb';
end; |
|
#8
|
|||
|
|||
|
не знаю зачем
лишний видно)Последний раз редактировалось ZaaaK, 30.06.2010 в 11:08. |