Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблема с БД 
:(
    Опции темы
Vinnety
Дата 22.11.2003, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 8.4.2003

Репутация: нет
Всего: нет



baaa.gif Подскажите, пожалуйста!
Написал програмку, которая работает со свой базой данных (тип Paradox).
Скажите, как перенести этку програму на другой компьютер на котором
не установлен Delphi ? Т.е. как сделать эту програмку "легко переносимой"?
Или возможно нужно изменить тип базы данных ?


PM MAIL   Вверх
Pakshin A. S.
  Дата 22.11.2003, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 21
Всего: 61



Всё очень просто: используй компонента вкладки ADO (на всех современных компьтерах поддержка ADO есть!). ADOConnection - соединение с базой данных; ADOQuery - обычный Query; ADOTable - обычный Tabe и т. п.

План работы:
Помести ADOConnection на форму, заполни ConnectionString, нажав на кнопочку.
Помести DataShource и DBGrid, настрой их...
Помести ADOQuery, к примеру, свойство Connection должно равняться ADOConnection1, DataSource - DataSource1. работай с ADOQuery, как с обычным.


Для большей универсальности помести следующее:
Код

program Prog1;

uses
 SysUtils,

{***}
{$R *.RES}

begin
 Application.Initialize;
{**}
   DataBase.ADOConnection1.ConnectionString:='Provider=MSDASQL.1;Password=' + Password +
  ';Persist Security Info=True;User ID=Admin;Connect Timeout=15;Extended Properties="DBQ=' +
   FileName+
   ';DefaultDir=' +
   ExtractFileDir(FileName) +
   ';Driver={Microsoft Access Driver (*.mdb)};DriverId=281;FIL=MS Access;FILEDSN=' +
   FileName+
   ';MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;PWD=SsAPS02Z;SafeTransactions=0;Threads=3;
UID=admin;UserCommitSync=Yes;";Locale Identifier=1049;Initial Catalog=' +
   ExtractFileDir(FileName)
{***}
 Application.Run;
end.


Пример приведён для Access, то же самое будет и для Paradox, только с некоторыми изменениями (додумай сам).



Если без ADO!
Носи с собой BDEAdministrator и заполняй Alias, что тяжелее...
PM   Вверх
Vit
Дата 23.11.2003, 00:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Цитата(Pakshin @ 22.11.2003, 10:05)
Если без ADO!
Носи с собой BDEAdministrator и заполняй Alias, что тяжелее...

А при чём тут BDEAdministrator и заполнение Alias? Просто надо установить BDE (можно без BDEAdministratora), да Alias'ы можно вообще не использовать или устанавливать их правильно в самой программе.

Цитата(Pakshin @ 22.11.2003, 10:05)
(на всех современных компьтерах поддержка ADO есть!).


При чём тут современные компьютеры? ADO, а точнее MDAC поставляется только с операционными системами: Win98 (в некоторых конфигурациях), WinME, 2000, XP. На более чем современных компьютерах с другими операционными системами ADO в стандартную поставку не входит.

Цитата(Pakshin @ 22.11.2003, 10:05)
Пример приведён для Access, то же самое будет и для Paradox, только с некоторыми изменениями (додумай сам).


Прежде чем рекомендовать, лучше бы сам попробовал! Я ведь наверняка могу сказать, что сам то ты не пробовал работать с Парадоксом через ADO, иначе бы не рекомендовал, так как реальный практический опыт работы говорит о том что простым "подумать" дело не обойдётся, это ж ведь для MS Access ADO доступ как родной, а для парадокса ADO реально использует полунедоделанный ODBC драйвер выпуска аж 1994 года! И проблем здесь будет намного больше чем простое переделывание Table->ADOTable. Собственно вот далеко неполный список проблем:


1) ADO, ODBC и DAO поддерживают только совместимость с Paradox до 5й версии включительно, для более поздних версий Paradox совместивость ограниченная, поэтому возможны самые разные варианты, от неправильной работы каких-либо типов полей, до частого corruption table и неиспользования каких-либо индексов при выполнении запросов.

2) Скорость работы ADO, ODBC и DAO с Парадокс примерно на 2 порядка ниже чем скорость работы через BDE

3) Используя ADO, ODBC или DAO невозможны многие низкоуровневые операции с таблицами, например такие как Repair

4) ADO не входит в поставку Windows 95/NT4 и некоторые версии Win98 и его всё равно прийдётся поставлять с программой, иначе она не будет работать на указанных операционках.

Правильное решение: Поставлять BDE вместе с программой. Все основные программы, которые делают инсталляционные пакеты умеют работать с BDE, например в InstallShield при изготовлении инсталляционного пакета достаточно лишь поставить галочку напротив BDE и она будет установлена автоматически при установке Вашей программы.


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Pakshin A. S.
Дата 23.11.2003, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 21
Всего: 61



Приношу свои извинения за неопытность...
PM   Вверх
Vit
Дата 24.11.2003, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Цитата(Pakshin @ 23.11.2003, 12:01)
Приношу свои извинения за неопытность...

Ничего страшного, я сам неделю потратил пытаясь с Парадоксом через ADO работать, и плюнул, потому что фигня получилась. Потом уже проверял производительность парадокса для разных типов доступа к данным, например скорость вставки новой записи в таблицу:

BDE - 2000 записей в секунду
DAO - 500 записей в секунду
ADO/ODBC - 30 записей в секунду

Результаты меня впечатлили и я решил, что с парадоксом работать надо только через BDE...



--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Pakshin A. S.
Дата 24.11.2003, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 21
Всего: 61



Встречный вопрос: А как обойтись без Алиаса?
PM   Вверх
Vit
Дата 24.11.2003, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



1) В поле имени базы данных можно указать путь к папке с файлами
2) Можно создать временный (на время работы базы данных) и постоянный Alias в самой программе, см. методы встроенного объекта session


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Pakshin A. S.
Дата 25.11.2003, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 21
Всего: 61



Ok, гляну...
А то на компе, куда должен отнести базу данных, может не быть ADO и BDEAdministrator...
PM   Вверх
Akella
Дата 26.11.2003, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Я с Vit`om полностью согласен
с BDE без алиасов
DM - DataModule
В процедуру передается путь к исполняемому файлу програмыы (это у меня так), можно установить любой путь - это путь к твоейс БД
путь к своей проге можно узнать двумя способами:
1. P:=ExtractFileDir(Application.ExeName)
2. P:=EctractFilePath(ParamStr(0))

Код
procedure ConToDB(P:String);
begin
with DM do Begin
 try
   Db.Connected:=False;////компонента - TDataBase
   tOpis.Close;//компонента - TTable
   tSpis.Close;//компонента - TTable
   tType.Close;//компонента - TTable
   Db.DriverName:='STANDARD';
   DB.Params.Clear;
   DB.Params.Add('Path='+P);
   DB.Params.Add('Default Driver=Paradox');
   Db.Connected:=True;
   tOpis.Open;
   tSpis.Open;
   tType.Open;
 except
   beep;
   ShowMessage('Ошибка при подключении к базе данных');
   Db.Connected:=False;
   Db.AliasName:='';
   tOpis.Close;
   tSpis.Close;
   tType.Close;
   Db.DriverName:='STANDARD';
   DB.Params.Clear;
   DB.Params.Add('Path='+ExtractFileDir(Application.ExeName)+'\Data');
   DB.Params.Add('Default Driver=Paradox');
   Db.Connected:=True;
   tOpis.Open;
   tSpis.Open;
   tType.Open;
 end;//try
end;//with
end;

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0542 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.