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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2009, 23:53   #1
DennerV
Пользователь
 
Регистрация: 14.05.2009
Сообщений: 44
Вопрос В адо изменить путь после кампиляции

Всем здрасте! Есть такая проблема: аксесовская база, может находиться в любом месте, при первом запуске указывается её местоположение и записывается в реестр, при следующем запуске путь берется из реестра.
Внимание вопрос : надо сделать так чтобы подключалась по этому пути, до этого было статично все работало. Есть: ADOConnection1 (Тут надо сделать путь), DataSource1, ADOTable1. Что можно сделать? Зарание благодарен.
DennerV вне форума Ответить с цитированием
Старый 06.06.2009, 00:02   #2
Evgeniy26
Форумчанин
 
Аватар для Evgeniy26
 
Регистрация: 29.05.2009
Сообщений: 384
По умолчанию

AdoConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;D ataSource=<путь>;Persist Security Info=False';

Последний раз редактировалось Evgeniy26; 06.06.2009 в 00:49.
Evgeniy26 вне форума Ответить с цитированием
Старый 06.06.2009, 08:13   #3
DennerV
Пользователь
 
Регистрация: 14.05.2009
Сообщений: 44
По умолчанию

Я пробывал всю строку, ругается, что болше 255 символов. Попробую так.
DennerV вне форума Ответить с цитированием
Старый 06.06.2009, 09:20   #4
DennerV
Пользователь
 
Регистрация: 14.05.2009
Сообщений: 44
По умолчанию

Не работает, ругается "Операция не допускается, если объект открыт"
DennerV вне форума Ответить с цитированием
Старый 06.06.2009, 09:30   #5
S@fer
Форумчанин
 
Аватар для S@fer
 
Регистрация: 29.01.2009
Сообщений: 411
По умолчанию

А перед выбором БД у вас ADOConnection.Connected:=False?
Покажите код.
S@fer вне форума Ответить с цитированием
Старый 06.06.2009, 09:46   #6
DennerV
Пользователь
 
Регистрация: 14.05.2009
Сообщений: 44
Вопрос

Это я сделал. Стала другая ошибка - "Невозможно найти устанавливаемый ISAM".Кто знает что за ISAM?
Код:
ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;DataSource='+Directory+'\Data\Base.mdb;Persist Security Info=False';
ADOConnection1.Connected:=True;
ADOTable1.Active:=True;
ADOTable2.Active:=True;
ADOTable3.Active:=True;
У меня была такая строка:
Код:
Provider=Microsoft.Jet.OLEDB.4.0;Password="";
User ID=Admin;Data Source=Data\Base.mdb;Mode=Share Deny None;
Extended Properties="";Jet OLEDB:System database="";
Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";
Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;
Jet OLEDB:Global Partial Bulk Ops=2;
Jet OLEDB:Global Bulk Transactions=1;
Jet OLEDB:New Database Password="";
Jet OLEDB:Create System Database=False;
Jet OLEDB:Encrypt Database=False;
Jet OLEDB:Don''t Copy Locale on Compact=False;
Jet OLEDB:Compact Without Replica Repair=False;
Jet OLEDB:SFP=False
DennerV вне форума Ответить с цитированием
Старый 06.06.2009, 09:53   #7
DennerV
Пользователь
 
Регистрация: 14.05.2009
Сообщений: 44
Сообщение

Весь код
Код:
procedure TMainForm.FormCreate(Sender: TObject);
  var Roogt :TTreeNode;
  i:Integer;
begin
ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;DataSource='+Directory+'\Data\Base.mdb;Persist Security Info=False';
ADOConnection1.Connected:=True;
ADOTable1.Active:=True;
ADOTable2.Active:=True;
ADOTable3.Active:=True;

For i:=1 to 200 do
TrackList[i]:='';
i:=0;

  While ADOTable1.Eof=False do
   Begin
     If ADOTable1CompanyID.AsInteger=ADOTable1ParentID.AsInteger Then
        Roogt := TreeView1.Items.Add(nil,ADOTable1Name.AsString)
       else TreeView1.Items.AddChild(Roogt,ADOTable1Name.AsString);
     TrackList[i]:=ADOTable1Track.AsString;
     i:=i+1;
     ADOTable1.Next;
    end;

For i:=1 to 200 do
LabsList[i]:='';
i:=0;

  While ADOTable2.Eof=False do
   Begin
     If ADOTable2CompanyID.AsInteger=ADOTable2ParentID.AsInteger Then
        Roogt := TreeView2.Items.Add(nil,ADOTable2Name.AsString)
       else TreeView1.Items.AddChild(Roogt,ADOTable2Name.AsString);
     LabsList[i]:=ADOTable2Track.AsString;
     i:=i+1;
     ADOTable2.Next;
    end;
    
end;

procedure TMainForm.TreeView1Change(Sender: TObject; Node: TTreeNode);
var  i:Integer;
begin
i:=0;
   While TrackList[i]<>'' Do
    Begin
      If TreeView1.Items.Item[i].Selected=True Then
        WebBrowser1.Navigate(Directory + TrackList[i]);
      i:=i+1;
    end;
end;


procedure TMainForm.TreeView2Change(Sender: TObject; Node: TTreeNode);
var //Roogt :TTreeNode;
    i:Integer;
begin
i:=0;
   While LabsList[i]<>'' Do
    Begin
      If TreeView2.Items.Item[i].Selected=True Then
        WebBrowser1.Navigate(Directory + LabsList[i]);
      i:=i+1;
    end;

end;
Ругается при создании формы
DennerV вне форума Ответить с цитированием
Старый 06.06.2009, 10:02   #8
S@fer
Форумчанин
 
Аватар для S@fer
 
Регистрация: 29.01.2009
Сообщений: 411
По умолчанию

ISAM — англоязычный акроним для Индексно-Последовательный Метода Доступа (Indexed Sequential Access Method), способ хранения данных для быстрого доступа к ним. В ISAM отдельно хранятся записи с данными и индексы (служебные данные), служащие для быстрого доступа к записям.

Попробуй так
Код:
ADOConnection1.Connected:=False;
ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+Directory+'\Data\Base.mdb;Persist Security Info=False';
ADOConnection1.Connected:=True;
и в свойстве LoginPrompt поставь значение False

Цитата:
Невозможно найти устанавливаемый ISAM
возникает если строка подключения написана не правильно (может где-то вместо ангийской буквы стоит русская!!!)

Последний раз редактировалось S@fer; 06.06.2009 в 10:19. Причина: Добавил описание возможной ошибки
S@fer вне форума Ответить с цитированием
Старый 06.06.2009, 10:53   #9
DennerV
Пользователь
 
Регистрация: 14.05.2009
Сообщений: 44
Хорошо

Так:
Код:
ADOConnection1.Connected:=False;
ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+Directory+'\Data\Base.mdb;Persist Security Info=False';
ADOConnection1.Connected:=True;
работает
и свойство LoginPrompt прошло с True.
Бальшое спасыбо!!
DennerV вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как в делфи работая с бд используя технологию адо показать диаграммы со статистикой Antik® Помощь студентам 3 01.06.2009 17:55
Путь StartMis Общие вопросы Delphi 3 03.10.2008 14:45
Компоненты АДО Небесный Общие вопросы Delphi 3 20.09.2008 10:30
Путь к файлу Баламут Win Api 12 14.05.2008 13:27
TQuery - путь Nati БД в Delphi 8 18.07.2007 12:33