Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 29.06.2010, 20:48
ZaaaK ZaaaK вне форума
Прохожий
 
Регистрация: 23.06.2010
Сообщения: 16
Репутация: 10
По умолчанию обнулить таблицы

есть программа...есть функция добавления новой базы и открытие...вроде как не могу правильно закрыть соединение и очистить таблицы...т.к. при закрытии и открытии новой базы продолжаю работать со старой...как правильно очистить???...работаю через 3 ADOTable пробовал:
Код:
ADOTable1.DeleteRecords(arall);
Код:
ADOTable1.ClearFields;
Код:
ADOTable1.Free;
вылетают ошибки
Help!!!!!
Ответить с цитированием
  #2  
Старый 29.06.2010, 23:30
Kapitoshka438 Kapitoshka438 вне форума
Начинающий
 
Регистрация: 09.11.2009
Сообщения: 145
Репутация: 238
По умолчанию

Лучше будет, если выполнить запрос
Код:
Delete From TableName
Ответить с цитированием
  #3  
Старый 29.06.2010, 23:31
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,035
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Угу, ты удаляешь компонент работы с данными, а не сбрасываешь подключение.

Код:
ADOTable1.DeleteRecords(arall);
ADOTable1.Active := False;

А теперь сюда подробно код и текст ошибок.
Ответить с цитированием
  #4  
Старый 30.06.2010, 02:22
ZaaaK ZaaaK вне форума
Прохожий
 
Регистрация: 23.06.2010
Сообщения: 16
Репутация: 10
По умолчанию sdf

Кстати решил проблему вроде делаю ADOTable.Close; тока у меня потом на файловую переменную ругается...из файла пароль к БД как бы подгружаю...до этого не ругалось =(
Код:
    try
      assignfile(hFile,'pas.txt');
      reset(hFile);
       read(hFile,pas);
      CloseFile(hFile);
     Except showmessage('Отсутствует пароль');
  end;
вылетает косяк после reset(hFile); переменая не считывается...и блин все равно новую базу не создает после такой чистки, раньше вроде хотя бы в старую дописывал,а теперь вообще висит...

процедуры на открытие файла
Код:
 
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  
Старый 30.06.2010, 08:23
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

а почему вначале коннект:

Код:
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  
Старый 30.06.2010, 09:38
ZaaaK ZaaaK вне форума
Прохожий
 
Регистрация: 23.06.2010
Сообщения: 16
Репутация: 10
По умолчанию ыва

да в припципе там коннект при создании нужно ниже поставить,но кусок вы какой-то не тот линканули....а что во втором куске не нравится??? в третьем куске- у меня на новую базу нету пароля и в коннекшене он ене создается...да вообще при создании новой базы по else не уходит... (после открытия и закрытия существующей базы)
Ответить с цитированием
  #7  
Старый 30.06.2010, 10:41
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

ну не то что не нравится... просто в первом случае коннект через АДО второй вариант... хмм... даже не знаю... поэтому и предложил что б формировать коннект так же как и первый.

ПС. а зачем тут 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  
Старый 30.06.2010, 10:57
ZaaaK ZaaaK вне форума
Прохожий
 
Регистрация: 23.06.2010
Сообщения: 16
Репутация: 10
По умолчанию

не знаю зачем лишний видно)

Последний раз редактировалось ZaaaK, 30.06.2010 в 11:08.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:44.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter