Форум: "Базы";
Текущий архив: 2002.01.31;
Скачать: [xml.tar.bz2];
ВнизПомогите с Database Найти похожие ветки
← →
diMAN (2001-12-13 15:48) [0]Я использую Delphi 6 и работаю с базами данных в формате Paradox.
Когда все таблицы хранились в одной директории, для управления ими я использовал объект TDatabase.
Сейчас возникла необходимость разделить таблицы по двум директориям (справочники - отдельно, рабочие данные - отдельно).
Подскажите пожалуйста простой, но эффективный способ чтобы решить эту проблемму.
Я имею ввиду работу с транзакциями и с запросами, ведь теперь у меня два объекта TDatabase.
← →
TonnyS (2001-12-13 18:43) [1]я использую query, для запросов к разным папкам пишется полный путь к таблицам. Что-то типа этого:
const
p1 : string="d:\data1\";
p2 : string="d:\data2\";
...
query1.sql.add("select t1.*, t2.*");
query1.sql.add("from ""+p1+"tbl1.db" t1, ""+p2+"tbl2.db" t2");
← →
diMAN (2001-12-18 21:13) [2]А как в этом случае управлять транзакциями?
Так что-ли:
Database1.StartTransaction;
Database2.StartTransaction;
...
...
Database1.Commit;
Database2.Commit;
Не приведёт ли это к тому, что если первая транзакция завершится успешно, а вторая - нет, то нарушится логика работы программы. Т.е. при таком подходе по-моему теряется смысл транзакции, как неделимого обращения к базе данных.
← →
Дремучий (2001-12-18 23:18) [3]я бы просто отказался от деления данных
в 1С все валяется в одном каталоге...
← →
panov (2001-12-19 07:15) [4]Вполне можешь использовать разные каталоги для настольной БД.
Прописываешь алиас в TDatabase
В TTable и TQuery указываешь ссылку на TDatabase.
В TTable.TableName указываешь относительный путь таблицы, напр.
Table1.TableName := "banks\banks.DBF";
Table2.TableName := "customers\code.DBF";
И можешь работать с таблицами как с единой БД.
← →
diMAN (2001-12-26 12:35) [5]Последовал совету panov и сделал Database1, который настроил на c:\AllBases\Base1 и присвоил ему алиас Base1 и DatabaseName - Base1, для всех таблиц указал в качестве DatabaseName - Base1, а имена таблиц, находящихся в c:\AllBases\Base2 записал в виде TableName = ..\Base2\table.db
Всё работает хорошо, единственное, что мне не нравится, во всех запросах, которые используют таблицы из Base2, для этих таблиц нужно указывать в теле SQL-запроса имя таблицы в виде "..\Base2\table.db". Вопрос, как это можно обойти или как сделать по-другому?
← →
Delirium (2001-12-26 12:41) [6]Можно просто скопировать всё файлы к Exe-шнику, тогда пути прописывать не обязательно.
← →
diMAN (2001-12-27 15:17) [7]>Delirium У меня две программы работают с одними и теми же справочниками, а другие таблицы у каждой из них - свои, вот поэтому у меня есть три каталога: Base1 - таблицы первой программы, Base2 - справочники, Base3 - таблицы второй программы. Таблицы первой и второй программ имеют одинаковые имена. Поэтому Ваш совет свалить всё в одну кучу не подходит.
← →
Desdechado (2001-12-27 17:16) [8]а почему обе программы не работают с ОДНОЙ БД, используя только СВОИ таблицы и не трогая чужих?
Если справочники общие, явный намек на объединение.
← →
diMAN (2001-12-27 21:50) [9]>Desdechado Предприятие работает в сфере оптовой и розничной торговли, поэтому одна программа (одни таблицы) предназначена для учёта по оптовой торговле, а вторая программа (вторые таблицы) предназначены для учёта по розничной торговле.
← →
Nemesis (2001-12-28 12:01) [10]А можно работать и с двумя алиасами: просто синтаксис запросов поменяется.
Можна сотворить простеньки запрос на SQL билдере и ... синтаксис станет понятен. Я так делал даже для sQL 7.0
← →
Desdechado (2001-12-28 13:01) [11]2 diman
а что это меняет? разве только таблицы для опта и розницы АБСОЛЮТНО ИДЕНТИЧНЫ, тогда увы.
← →
diMAN (2001-12-29 11:24) [12]>Desdechado Я это и хотел сказать, что почти все таблицы абсолютно идентичны.
>Nemesis Подскажи как можно работать с двумя алиасами, но чтобы транзакция выполняла своё назначение, т.е. обеспечивала неделимое обращения к базе данных.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.01.31;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.005 c