Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 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 Подскажи как можно работать с двумя алиасами, но чтобы транзакция выполняла своё назначение, т.е. обеспечивала неделимое обращения к базе данных.




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.31;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.74 MB
Время: 0.015 c
4-100108          Filat                 2001-12-03 16:42  2002.01.31  
Не перегружается комп. Мешает сообщение, что к компу подкл. несколько юзеров.


3-99884           Shoo                  2001-12-21 09:47  2002.01.31  
Создание Table


1-99969           DDDeN                 2001-12-31 13:21  2002.01.31  
Русификаторы приложений


1-99987           Fast                  2002-01-14 19:48  2002.01.31  
ScreenToClient


1-99940           greenrul              2002-01-13 14:46  2002.01.31  
Подскажите лучший метод реализации этой идеи ->>