Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как указать путь к базе данных? 
:(
    Опции темы
BrAgOl
Дата 19.5.2009, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 6.3.2005
Где: М.О.

Репутация: нет
Всего: нет



Всем привет!
Пишу программу, использующую собственно базу данных 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

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

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

PM MAIL   Вверх
Akella
Дата 19.5.2009, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Цитата(BrAgOl @  19.5.2009,  14:41 Найти цитируемый пост)
ишу программу, использующую собственно базу данных database.

Ты написал собственную СУБД? Или что значит собственная база данных?

Добавлено через 26 секунд
Цитата(BrAgOl @  19.5.2009,  14:41 Найти цитируемый пост)
Использую такие компоненты как Table и Query

BDE+Paradox?

Добавлено через 1 минуту и 22 секунды
Цитата(BrAgOl @  19.5.2009,  14:41 Найти цитируемый пост)
Table1: Cannot perform this operation on an open dataset

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

закрывай таблицу, меняй путь, а потом опять открывай
PM MAIL   Вверх
BrAgOl
Дата 19.5.2009, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 6.3.2005
Где: М.О.

Репутация: нет
Всего: нет



Цитата

Ты написал собственную СУБД? Или что значит собственная база данных?

я написал не СОБСТВЕННУЮ, а собственно, это оборот речевой такой)) (типа, собственно, вот....)
Цитата

BDE+Paradox?


именно они самые


осталось только в edit1.text с конца удалить имя таблицы, т.к. оно лишнее

PM MAIL   Вверх
insoft
Дата 19.5.2009, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 196
Регистрация: 14.2.2007
Где: Тюменская область , г.Тобольск

Репутация: 3
Всего: 3



если у тебя база локальная (а она у тебя локальная) и прогу таскаешь вместе с базой, то с самый лучший вариант это 
Код

var
  StringPath:string;
begin
  StringPath := ExtractFilePath(Application.ExeName)+'data' + '\NameDatabase.db';
end;

data - это папка где лежит БД
PM MAIL WWW   Вверх
BrAgOl
Дата 19.5.2009, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 6.3.2005
Где: М.О.

Репутация: нет
Всего: нет



все работает большое спасибо, моя ошибка была в том, что я 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;


и все заработало
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0527 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.