Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
3-99847
Koks
2001-12-21 11:44
2002.01.31
FieldByName


3-99880
Dorixe
2001-12-26 13:31
2002.01.31
Trouble Поиск


3-99889
KMZ
2001-12-27 13:06
2002.01.31
Как можно конвертировать таблицы с данными в Interbase


1-100017
IronHawk
2002-01-15 15:00
2002.01.31
Да помогут мне мастера ...


1-99994
Анатолий
2002-01-14 22:57
2002.01.31
Проблемы с картинками





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский