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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.04.2011, 08:35   #1
detalik
Форумчанин
 
Регистрация: 05.04.2011
Сообщений: 115
По умолчанию

Здравствуйте, есть программка, суть которой заключается в том, с помощью элемента ADO.Connection привязывается БД, в которой хранятся имена компьютеров,их ip. Все в принципе работает, но обнаружился один косяк-если я выкладываю программу в сетевую папку, то поскольку в ADO.Connection прописан четкий путь к БД, то ничего работать не будет. Собственно вопрос- как написать процедуру для кнопки, чтобы можно было указать , где лежит необходимая БД. Прилагаю скрин проги для удобства . Спасибо.

Я попробовал так:
Цитата:
begin
If OpenDialog1.Execute then ADOConnection2.Open;
Процедура для кнопки button
Это правильно?

Видимо неправильно, т.к не работает...

Последний раз редактировалось Stilet; 13.04.2011 в 12:22.
detalik вне форума Ответить с цитированием
Старый 12.04.2011, 11:28   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

http://programmersforum.ru/showthread.php?t=145498
Здесь это решили.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 13.04.2011, 08:10   #3
detalik
Форумчанин
 
Регистрация: 05.04.2011
Сообщений: 115
По умолчанию

Цитата:
Получение пути к MDB файлу:
Код:


if Form1.dlgOpen1.Execute then
begin
Form4.sStatusBar2.Panels[1].Text:=Form1.dlgOpen1.FileName;
end;

Подключение к выбранной БД:
Код:


Form2.con1.Close;
Form2.con1.ConnectionString:='Provi der=VFPOLEDB.1;Data Source=' + Form4.sStatusBar2.Panels[1].Text + ';Mode=Share Deny None;User ID="";Mask Password=False;Cache Authentication=False;Encrypt Password=False;Collating Sequence=MACHINE;DSN="";DELETED=Tru e;CODEPAGE=1251;MVCOUNT=16384;ENGIN EBEHAVIOR=90;TABLEVALIDATE=3;REFRES H=5;VARCHARMAPPING=False;ANSI=True; ';
Form2.con1.Open;
А что это такое и где это писать?...не подскажите?

Это нужно создать еще дополнительные формы?

Последний раз редактировалось Stilet; 13.04.2011 в 12:24.
detalik вне форума Ответить с цитированием
Старый 13.04.2011, 11:32   #4
OlegVE
Форумчанин
 
Регистрация: 27.09.2010
Сообщений: 376
По умолчанию

Здравствуйте
Перетянул из ранее указанной Вам ссылки
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  openDialog1 := TOpenDialog.Create(self);
  openDialog1.InitialDir := GetCurrentDir;
  openDialog1.Options := [ofFileMustExist];
  openDialog1.Filter :=     'MS Access files|*.mdb';

  if openDialog1.Execute
  then //ShowMessage('File : '+openDialog.FileName)
   begin
    adoconnection1.connected:=false;
    adoconnection1.connectionstring:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ opendialog1.filename+  ';Persist Security Info=False';
    adoconnection1.connected:=true;
//    adoconnection1.GetTableNames(ListBox1.Items, False); // Здесь выводится список всех таблиц в БД   
   end
  else ShowMessage('Ошибка подключения');

  // Освобождаем
  openDialog1.Free;
end;
Не забудьте кинуть на форму TOpenDialog и TADOConnection (или подправьте что нужно для adoconnection1).
До свидания

Последний раз редактировалось OlegVE; 13.04.2011 в 11:35.
OlegVE вне форума Ответить с цитированием
Старый 13.04.2011, 12:56   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

OlegVE, пример Ваш мне понравился.

единственное, я бы рекомендовал openDialog1 описать там же, где она и используется (т.е. в процедуре Button1Click). Это и нагляднее, да и надёжнее (и не будет конфликтовать, если на форме уже есть Button1Click )
Цитата:
Сообщение от OlegVE
Код:
procedure TForm1.Button1Click(Sender: TObject);
var openDialog1 : TOpenDialog;
begin
  openDialog1 := TOpenDialog.Create(self);
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.04.2011, 13:18   #6
detalik
Форумчанин
 
Регистрация: 05.04.2011
Сообщений: 115
По умолчанию

огромнейшее спасибо!!! все работает.
detalik вне форума Ответить с цитированием
Старый 21.04.2011, 12:58   #7
detalik
Форумчанин
 
Регистрация: 05.04.2011
Сообщений: 115
По умолчанию

Здравствуйте, еще раз, а как использовать эту процедуру, если на форме два компонента DBGrid и выводят они разные таблицы одной БД, соответственно для вывода этих двух таблиц я разместил на форме 2 компонета ADOQUery, Adoconnection. Или можно это реализовать как то иначе?
Вообщем нужно вывести две таблицы одной БД. Спасибо.
detalik вне форума Ответить с цитированием
Старый 21.04.2011, 13:00   #8
detalik
Форумчанин
 
Регистрация: 05.04.2011
Сообщений: 115
По умолчанию

Вот процедура для наглядности
Код:
procedure TForm1.N2Click(Sender: TObject);
begin
  openDialog1 := TOpenDialog.Create(self);
  openDialog1.InitialDir := GetCurrentDir;
  openDialog1.Options := [ofFileMustExist];
  openDialog1.Filter :=     'MS Access files|*.mdb';

  if openDialog1.Execute
  then //ShowMessage('File : '+openDialog.FileName)
   begin
    adoconnection2.connected:=false;
    adoconnection1.Connected:=false;
    adoconnection2.connectionstring:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ opendialog1.filename+  ';Persist Security Info=False';
    adoconnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ opendialog1.filename+  ';Persist Security Info=False';
    adoconnection2.connected:=true;
    adoconnection1.Connected:=true;
//    adoconnection1.GetTableNames(ListBox1.Items, False); // Çäåñü âûâîäèòñÿ ñïèñîê âñåõ òàáëèö â ÁÄ   
   end
  else ShowMessage('Îøèáêà ïîäêëþ÷åíèÿ');

  // Îñâîáîæäàåì
  openDialog1.Free;
end;


end.
detalik вне форума Ответить с цитированием
Старый 21.04.2011, 13:31   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ADOConnection нужен всего один!! И все ADOQuery (сколько бы их не было!) подключайте через него!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.04.2011, 14:08   #10
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

учите матчасть сначала, а потом задавайте вопросы
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Метод для удержания button мышкой Сергей089 Помощь студентам 5 26.03.2010 21:11
Событие для динамически созданной Button Dogmat Помощь студентам 8 24.07.2008 12:44