Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.01.31;
Скачать: CL | DM;

Вниз

Помогите с 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.015 c
4-100099
VanRain
2001-12-01 15:11
2002.01.31
Инфа по WinAPI


4-100095
Miwa
2001-11-30 20:07
2002.01.31
SendMessage


3-99860
Nimnul
2001-12-26 08:49
2002.01.31
Вопром по DBF таблицам...


3-99878
victor
2001-12-27 07:43
2002.01.31
Подключение к Interbase 4 под SCO Open Server


14-100043
Adder
2001-12-06 02:14
2002.01.31
Свежий червяк I-Worm.Badtransll... Обновляйте антивирус !!!