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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 19.05.2009, 14:40
bragol bragol вне форума
Прохожий
 
Регистрация: 25.03.2008
Сообщения: 14
Репутация: 10
По умолчанию как указать путь к базе dataBase

Всем привет!
Пишу программу, использующую собственно базу данных database.
Использую такие компоненты как Table и Query, по началу все было хорошо программа почти завершена, но тут задумался о том, что поменяв свое место расположения путь к базе в свойсвах DatabaseName поменяются, добавил в проект новую форму, для того чтобы перед запуком основной указать путь к файлу базы данных, ниже код:

Цитата:
procedure TForm2.Button1Click(Sender: TObject);
begin
OpenDialog1.FileName := Edit1.Text;//обращаемся сперва к предыдущему файлу

if OpenDialog1.Execute then //открываем окно выбора файла и если он выбран
begin
if not(OpenDialog1.FileName = Edit1.Text) then
Edit1.Text := OpenDialog1.FileName;//запоминаем его
end;

end;

procedure TForm2.Button2Click(Sender: TObject);
begin
if FileExists(Edit1.Text) then //если файл существует
begin
Form1.Table1.DatabaseName:=edit1.Text;

Form1.Query1.DatabaseName:=edit1.Text;
Form1.Query1.Active:=true;
Form1.Table1.Active:=true;
form2.Hide;
form1.Show;
end;
end;
после компиляции натыкался на ряд ошибок меняющихся в зависимости от неких моих действий, но все они были однотипные:
Цитата:
Table1: Cannot perform this operation on an open dataset

Может кто-нибудь подсказать в чем моя ошибка и как лучше реализовать мое желание

ЗЫ Заранее благодарен

Последний раз редактировалось bragol, 19.05.2009 в 15:18.
Ответить с цитированием
  #2  
Старый 19.05.2009, 15:32
Аватар для TOJluK
TOJluK TOJluK вне форума
Местный
 
Регистрация: 25.02.2009
Адрес: Минск
Сообщения: 551
Версия Delphi: 2007
Репутация: 110
По умолчанию

Перед изменением имени таблицы:
Код:
Table1.Active:=False;
имени базы:
Код:
DB.Connected:=False;
потом указывай имя и переводи все обратно в True
Ответить с цитированием
  #3  
Старый 19.05.2009, 16:22
bragol bragol вне форума
Прохожий
 
Регистрация: 25.03.2008
Сообщения: 14
Репутация: 10
По умолчанию

вот это
Цитата:
DB.Connected:=False;
судя по всему лишнее, а первый совет нужен, осталось только в edit1.text с конца удалить имя таблицы, т.к. оно лишнее
Ответить с цитированием
  #4  
Старый 19.05.2009, 17:01
bragol bragol вне форума
Прохожий
 
Регистрация: 25.03.2008
Сообщения: 14
Репутация: 10
По умолчанию

все работает большое спасибо, моя ошибка была в том, что я form1.Table1.Active:=False; устанавливал в ручную и думал, что это достаточно, а сейчас добавил
Цитата:
GetStr := Edit1.Text;
for i:=1 to 9 do Delete (GetStr, Length(GetStr),1);
form1.Table1.Active:=False;
Form1.Query1.Active:=false;
Form1.Table1.DatabaseName:=GetStr;
Form1.Query1.DatabaseName:=GetStr;
Form1.Query1.Active:=true;
Form1.Table1.Active:=true;

и все заработало
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter