Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Динамическое подключение БД  [new]
_Тимур_
Member

Откуда:
Сообщений: 32
Подскажите, как можно сделать так, чтобы можно было динамически подключать к форме разные базы, чтобы для каждой БД не рисовать свою форму
31 авг 07, 10:23    [4601958]     Ответить | Цитировать Сообщить модератору
 Re: Динамическое подключение БД  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Если под термином "база данных" понимаются таблицы DBF, то брось эту затею. Она того не стоит. Даже если сейчас обработка разных таблиц совершенно одинаковая, то с течением времени обязательно появятся какие-либо отличия. И сопровождение сильно навороченной универсальной формы выльется в большие проблемы.


Если же под термином "база данных" понимается контейнер базы данных (файл DBC) при том, что таблицы DBF будут иметь те же имена и структуры, то возникает ряд дополнительных вопросов:

- будет ли "другой" контейнер базы данных иметь то же самое имя
- предполагается ли одновременная работа с несколькими контейнерами базы данных (одна форма с одинм, а другая с другим)
31 авг 07, 10:37    [4602083]     Ответить | Цитировать Сообщить модератору
 Re: Динамическое подключение БД  [new]
_Тимур_
Member

Откуда:
Сообщений: 32
Как раз первый вариант, так что будем искать другой подход
31 авг 07, 10:43    [4602152]     Ответить | Цитировать Сообщить модератору
 Re: Динамическое подключение БД  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Как правило, многие формы имеют почти одинаковый внешний интерфейс и, иногда, общие методы обработки. Как следствие, такие общие части оформляются в виде класса или иерархии классов.

А собственно форма (привязка к данным) - это экземпляр этого класса.

В результате, создание новых форм - это не "тупое" копирование, а создание нового экземпляра класса с указанием конкретных источников данных.
31 авг 07, 10:53    [4602245]     Ответить | Цитировать Сообщить модератору
 Re: Динамическое подключение БД  [new]
_Тимур_
Member

Откуда:
Сообщений: 32
Может поделитесь другими идеями, ситуация такова: Сначала открывается стартовая форма, где выбирается источник данных из списка как в 1С. Я пробовал использовать SET DEFAULT TO для изменения пути по умолчанию и подключения данных из другой папки (имена и структуры таблиц одинаковые). Такой способ вроде прокатывает если сделать недоступным исходную базу, которая использовалась при проектировании (например переименовать папку), но кое-какие ругательства все-таки проявляются, хотя и не влияют на результат
31 авг 07, 11:25    [4602587]     Ответить | Цитировать Сообщить модератору
 Re: Динамическое подключение БД  [new]
Dima T
Member

Откуда:
Сообщений: 15288
_Тимур_
Может поделитесь другими идеями, ситуация такова: Сначала открывается стартовая форма, где выбирается источник данных из списка как в 1С. Я пробовал использовать SET DEFAULT TO для изменения пути по умолчанию и подключения данных из другой папки (имена и структуры таблиц одинаковые). Такой способ вроде прокатывает если сделать недоступным исходную базу, которая использовалась при проектировании (например переименовать папку), но кое-какие ругательства все-таки проявляются, хотя и не влияют на результат
1. Правильно делал. Только SET DEFAULT лучше заменить на
set path to (set('path') + 'путь до базы')
и обращаться к таблицам только по имени (без путей)
2. Я давным давно проблему пути к базе при разработке решил созданием отдельного диска M: для исходников, чтобы пути у клиента с моими никогда не совпали.
3. Какие именно ругательства остались?
31 авг 07, 11:47    [4602832]     Ответить | Цитировать Сообщить модератору
 Re: Динамическое подключение БД  [new]
_Тимур_
Member

Откуда:
Сообщений: 32
что-то вроде could not found form1
31 авг 07, 12:11    [4603161]     Ответить | Цитировать Сообщить модератору
 Re: Динамическое подключение БД  [new]
Dima T
Member

Откуда:
Сообщений: 15288
_Тимур_
что-то вроде could not found form1
Читай п.1
SET DEFAULT меняет рабочую папку программы или если ты работаешь из IDE или форма в EXE не включена, то фокс не может ее найти. SET PATH добавляет список путей для поиска не меняя рабочей папки программы. тут еще почитай
31 авг 07, 12:30    [4603316]     Ответить | Цитировать Сообщить модератору
 Re: Динамическое подключение БД  [new]
_Тимур_
Member

Откуда:
Сообщений: 32
Ok. теперь многое стало ясно, спс, попробуем реализовать...
31 авг 07, 12:41    [4603404]     Ответить | Цитировать Сообщить модератору
 Re: Динамическое подключение БД  [new]
Jurisfox
Member

Откуда: Эстония
Сообщений: 100
Это достаточно просто сделать, при условии, как говорит Владимир, структура баз данных
одинакова и я это использовал многократно:
Работа с DataEnvironment

Никогда не говори "невозможно", просто попробуй сделать иначе!
JS (at FoxClub)
31 авг 07, 15:17    [4604858]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить